Example #1
0
        public void CreateWithVeiculoWithValueGreaterThan3000ShouldReturnVendaWhenTipoOperacaoIsVenda()
        {
            // Arrange
            var vendaDto = new VendaDto
            {
                IdVeiculo     = 1,
                Valor         = 300000.00,
                NomeComprador = "Comprador"
            };

            var imposto = new Imposto
            {
                Id        = 1,
                Descricao = "Imposto teste",
                Nome      = "NomeImposto",
                Valor     = 1250.00
            };

            var veiculo = new Veiculo("IKG6861", "Verde", 100.00, true, true, "Hyundai", "HB20", TipoVeiculo.Carro, "Venda");

            var venda = new Venda(1, 400000.00, "Comprador");

            vendaRepository.Create(vendaDto).Returns(venda);
            impostoRepository.Get(Arg.Any <string>()).Returns(imposto);
            veiculoRepository.GetById(venda.IdVeiculo).Returns(veiculo);
            veiculoRepository.UpdateVeiculo(veiculo).Returns(veiculo);

            // Act
            var result = service.Create(vendaDto);

            // Assert
            result.Should().NotBeNull();
            result.Should().Equals(venda);
            vendaRepository.Received().Create(vendaDto);
        }
        public Venda Create(VendaDto vendaDto)
        {
            var veiculo = veiculoRepository.GetById(vendaDto.IdVeiculo);

            if (veiculo.TipoOperacao.Equals("Venda") && veiculo.Disponivel)
            {
                var result  = repository.Create(vendaDto);
                var imposto = 0.0;
                if (result.Valor > 300000.00)
                {
                    imposto = impostoRepository.Get("ImpostoAltoValor").Valor;
                }
                else
                {
                    imposto = impostoRepository.Get("ImpostoBaixoValor").Valor;
                }

                result.AddValor(imposto);
                veiculo.ChangeDisponibilidade();
                veiculoRepository.UpdateVeiculo(veiculo);
                return(result);
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
        public void GetShouldReturnImposto()
        {
            // Arrange
            var nomeImposto = "NomeImposto";
            var imposto     = new List <Imposto>
            {
                new Imposto
                {
                    Descricao = "Descricao imposto",
                    Nome      = "NomeImposto",
                    Valor     = 10000
                }
            };

            AddRange(imposto);

            // Act
            var result = repository.Get(nomeImposto);

            // Assert
            result.Should().Equals(imposto);
            result.Should().NotBeNull();
        }