public async void Test_CompararPlanoComTarifaFixaAsync__SimulacaoInvalida__Expected_Exception() { // FIXTURES var simulacao = new SimulacaoCustoLigacao { DddOrigem = "11", DddDestino = "2", Tempo = 10, Plano = "plano qualquer" }; var errors = new List <ValidationFailure> { new ValidationFailure("Plano", "O plano informado não é valido"), new ValidationFailure("DddDestino", "O ddd de destino informado não é valido"), }; var validationResult = new ValidationResult(errors); _simulacaoValidator .Setup(x => x.Validate(It.IsAny <SimulacaoCustoLigacao>())) .Returns(validationResult); // EXERCISE var ex = await Assert.ThrowsAsync <ValidationException>(() => _service.CompararPlanoComTarifaFixaAsync(simulacao)); // ASSERTS _ligacaoBuilder.Verify(x => x.AdicionarOrigem(It.IsAny <string>()), Times.Never); _ligacaoBuilder.Verify(x => x.AdicionarPlano(It.IsAny <string>()), Times.Never); _ligacaoFaleMaisService.Verify(x => x.CalcularCustoAsync(It.IsAny <int>(), It.IsAny <string>()), Times.Never); _ligacaoTarifaFixaService.Verify(x => x.CalcularCustoAsync(It.IsAny <int>(), It.IsAny <string>()), Times.Never); _simulacaoValidator.Verify(x => x.Validate(simulacao)); }
public async Task <ComparativoCustoLigacao> CompararPlanoComTarifaFixaAsync(SimulacaoCustoLigacao simulacao) { var result = _simulacaoValidator.Validate(simulacao); if (result.IsValid == false) { throw new ValidationException(result.ToString(), result.Errors); } var ligacaoPlanoFaleMais = _ligacaoBuilder .AdicionarOrigem(simulacao.DddOrigem) .AdicionarPlano(simulacao.Plano) .Criar(); var ligacaoPlanoTarifaFixa = _ligacaoBuilder .AdicionarOrigem(simulacao.DddOrigem) .AdicionarPlano(Plano.TARIFA_FIXA) .Criar(); var comparativo = new ComparativoCustoLigacao(); comparativo.DddOrigem = simulacao.DddOrigem; comparativo.DddDestino = simulacao.DddDestino; comparativo.PlanoFaleMais = simulacao.Plano; comparativo.Tempo = simulacao.Tempo; comparativo.ValorComPlanoFaleMais = await ligacaoPlanoFaleMais.CalcularCustoAsync(simulacao.Tempo, simulacao.DddDestino); comparativo.ValorSemPlanoFaleMais = await ligacaoPlanoTarifaFixa.CalcularCustoAsync(simulacao.Tempo, simulacao.DddDestino); return(comparativo); }
public async Task <ComparativoCustoLigacao> SimularCustoLigacao( [SwaggerParameter(Description = "Plano", Required = true)] string plano, [SwaggerParameter(Description = "DDD de Origem", Required = true)] string dddOrigem, [SwaggerParameter(Description = "DDD de Destino", Required = true)] string dddDestino, [SwaggerParameter(Description = "Tempo da ligação em Minutos", Required = true)] int tempo) { var simulacao = new SimulacaoCustoLigacao(); simulacao.DddDestino = dddDestino; simulacao.DddOrigem = dddOrigem; simulacao.Plano = plano; simulacao.Tempo = tempo; return(await _simuladorService.CompararPlanoComTarifaFixaAsync(simulacao)); }
public async void Test_CompararPlanoComTarifaFixaAsync__PlanoFaleMaisSelecionado__Expected_CriarServicePlanos_ComparativoPrecos() { // FIXTURES var simulacao = new SimulacaoCustoLigacao { DddOrigem = "11", DddDestino = "21", Tempo = 10, Plano = FALE_MAIS_30 }; _ligacaoFaleMaisService.Setup(x => x.CalcularCustoAsync(It.IsAny <int>(), It.IsAny <string>())).ReturnsAsync(2m); _ligacaoTarifaFixaService.Setup(x => x.CalcularCustoAsync(It.IsAny <int>(), It.IsAny <string>())).ReturnsAsync(22m); _ligacaoTariaFixaBuilder.Setup(x => x.Criar()).Returns(_ligacaoTarifaFixaService.Object); _ligacaoFaleMaisBuilder.Setup(x => x.Criar()).Returns(_ligacaoFaleMaisService.Object); _ligacaoBuilder.Setup(x => x.AdicionarOrigem(It.IsAny <string>())).Returns(_ligacaoBuilder.Object); _ligacaoBuilder.Setup(x => x.AdicionarPlano(TARIFA_FIXA)).Returns(_ligacaoTariaFixaBuilder.Object); _ligacaoBuilder.Setup(x => x.AdicionarPlano(FALE_MAIS_30)).Returns(_ligacaoFaleMaisBuilder.Object); _simulacaoValidator .Setup(x => x.Validate(It.IsAny <SimulacaoCustoLigacao>())) .Returns(new ValidationResult()); // EXERCISE var result = await _service.CompararPlanoComTarifaFixaAsync(simulacao); // ASSERTS Assert.Equal(2m, result.ValorComPlanoFaleMais); Assert.Equal(22m, result.ValorSemPlanoFaleMais); Assert.Equal(simulacao.DddDestino, result.DddDestino); Assert.Equal(simulacao.DddOrigem, result.DddOrigem); Assert.Equal(simulacao.Tempo, result.Tempo); Assert.Equal(simulacao.Plano, result.PlanoFaleMais); _ligacaoBuilder.Verify(x => x.AdicionarOrigem(simulacao.DddOrigem), Times.Exactly(2)); _ligacaoBuilder.Verify(x => x.AdicionarPlano(TARIFA_FIXA), Times.Exactly(1)); _ligacaoBuilder.Verify(x => x.AdicionarPlano(FALE_MAIS_30), Times.Exactly(1)); _ligacaoFaleMaisService.Verify(x => x.CalcularCustoAsync(simulacao.Tempo, simulacao.DddDestino)); _ligacaoTarifaFixaService.Verify(x => x.CalcularCustoAsync(simulacao.Tempo, simulacao.DddDestino)); _simulacaoValidator.Verify(x => x.Validate(simulacao)); }