public void Obter_Informacoes_Complementares_Teste_Valido() { List <AnalisePorCampeonato> melhoresPorAno = new List <AnalisePorCampeonato>(); melhoresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2015, Nome = "Corinthians", PercentualVitorias = 63.16 }); melhoresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2016, Nome = "Palmeiras", PercentualVitorias = 63.16 }); melhoresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2017, Nome = "Corinthians", PercentualVitorias = 55.26 }); melhoresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2018, Nome = "Palmeiras", PercentualVitorias = 60.53 }); melhoresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2019, Nome = "Flamengo", PercentualVitorias = 73.68 }); List <AnalisePorCampeonato> pioresPorAno = new List <AnalisePorCampeonato>(); pioresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2015, Nome = "Joinvile", PercentualVitorias = 18.42 }); pioresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2016, Nome = "America mineiro", PercentualVitorias = 18.42 }); pioresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2017, Nome = "Atletico goias", PercentualVitorias = 23.68 }); pioresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2018, Nome = "Parana", PercentualVitorias = 10.53 }); pioresPorAno.Add(new AnalisePorCampeonato { AnoParticipacao = 2019, Nome = "Avai", PercentualVitorias = 7.89 }); InformacaoComplementar dados = new InformacaoComplementar() { MaiorNumeroVitorias = "Palmeiras", MelhorMediaGolsContra = "São Paulo", MelhorMediaGolsFavor = "Corinthians", MelhorMediaVitoriasPorCampeonato = melhoresPorAno, MenorMediaVitoriasPorCampeonato = pioresPorAno, MenorNumeroVitorias = "Joinville" }; _informacaoCampeonatoService.Setup(x => x.ObterInformacoesComplementares()).Returns(dados); var resultado = _informacaoCaompeonatoController.ObterInformacoesComplementares(); var okResultado = resultado as OkObjectResult; Assert.NotNull(okResultado); Assert.NotNull(okResultado.Value); }
public InformacaoComplementar ObterInformacoesComplementares() { var dadosCampeonatos = ObterDadosCampeonatos(); var timesAgrupadosPorAno = dadosCampeonatos.GroupBy(x => x.AnoParticipacao).ToList(); List <AnalisePorCampeonato> analisePorCampeonato = new List <AnalisePorCampeonato>(); List <AnalisePorCampeonato> melhoresPorCampeonato = new List <AnalisePorCampeonato>(); List <AnalisePorCampeonato> pioresPorCampeonato = new List <AnalisePorCampeonato>(); foreach (var ano in timesAgrupadosPorAno) { analisePorCampeonato = new List <AnalisePorCampeonato>(); foreach (var time in ano) { string nomeTime = time.Nome.PrimeiraLetraMaiuscula(); double percentualVitorias = ((double)time.Vitorias / (double)time.Jogos) * 100; analisePorCampeonato.Add(new AnalisePorCampeonato { AnoParticipacao = ano.Key, Nome = nomeTime, PercentualVitorias = Math.Round(percentualVitorias, 2) }); } analisePorCampeonato.OrderByDescending(x => x.PercentualVitorias); melhoresPorCampeonato.Add(analisePorCampeonato.FirstOrDefault()); pioresPorCampeonato.Add(analisePorCampeonato.LastOrDefault()); } var timesAgrupadoPorNome = dadosCampeonatos.GroupBy(x => x.Nome) .Select( g => new { Nome = g.Key.PrimeiraLetraMaiuscula(), Vitorias = g.Sum(s => s.Vitorias), MediaVitorias = g.Average(s => s.Vitorias), MediaGolsFavor = g.Average(s => s.GolsFavor), MediaGolsContra = g.Average(s => s.GolsContra), } ).ToList(); var informacaoComplementar = new InformacaoComplementar(); informacaoComplementar.MelhorMediaGolsFavor = timesAgrupadoPorNome.OrderBy(x => x.MediaGolsFavor).ToList().LastOrDefault().Nome; informacaoComplementar.MelhorMediaGolsContra = timesAgrupadoPorNome.OrderBy(x => x.MediaGolsContra).ToList().FirstOrDefault().Nome; informacaoComplementar.MaiorNumeroVitorias = timesAgrupadoPorNome.OrderBy(x => x.Vitorias).ToList().LastOrDefault().Nome; informacaoComplementar.MenorNumeroVitorias = timesAgrupadoPorNome.OrderBy(x => x.Vitorias).ToList().FirstOrDefault().Nome; informacaoComplementar.MelhorMediaVitoriasPorCampeonato = melhoresPorCampeonato; informacaoComplementar.MenorMediaVitoriasPorCampeonato = pioresPorCampeonato; return(informacaoComplementar); }
private string SerializeInformacaoComplementar() => InformacaoComplementar.RemoveBreakline();