public void ValidaRankingAutomatico_RoboFinalizacaoSimulado_GabaritaramMenos10Porcento()
        {
            var idSimulado        = 1;
            var rankingMock       = Substitute.For <IRankingSimuladoData>();
            var especialidadeMock = Substitute.For <IEspecialidadeData>();
            var storesMock        = Substitute.For <IFilialData>();

            var simulado = new SimuladoDTO
            {
                ID = 1,
                QuantidadeQuestoes = 100,
                PesoProvaObjetiva  = 100,
                Ano    = 2019,
                TipoId = (int)Constants.TipoSimulado.Extensivo
            };

            rankingMock.GetRankingSimulado(idSimulado).Returns(RankingSimuladoEntityTestData.ListRankingSimulado_10PorcentoGabaritou());
            rankingMock.GetSimulado(idSimulado).Returns(simulado);


            var business = new RankingSimuladoBusiness(rankingMock, especialidadeMock, storesMock);
            var ranking  = business.ValidaRankingSimulado(idSimulado);

            Assert.AreEqual(ranking, "");
        }
        public void GeraRankingSimuladoNacional_R4GO_ValidarValoresRanking()
        {
            var idSimulado = 1;

            var rankingMock       = Substitute.For <IRankingSimuladoData>();
            var especialidadeMock = Substitute.For <IEspecialidadeData>();
            var storesMock        = Substitute.For <IFilialData>();

            var simulado = new SimuladoDTO
            {
                ID = 1,
                QuantidadeQuestoes = 10,
                PesoProvaObjetiva  = 100,
                Ano    = 2019,
                TipoId = (int)Constants.TipoSimulado.R4_GO
            };

            rankingMock.GetSimulado(idSimulado).Returns(simulado);
            rankingMock.GetOrdemVendaTodosClientes(2019).Returns(RankingSimuladoEntityTestData.ListOrdemVendaTodosClientes(Constants.TipoSimulado.R4_GO));
            rankingMock.GetLogSimuladoAlunoTurma(idSimulado).Returns(RankingSimuladoEntityTestData.ListLogSimuladoAlunoTurma(Constants.TipoSimulado.R4_GO));
            especialidadeMock.GetAll().Returns(RankingSimuladoEntityTestData.ListEspecialidade());
            storesMock.GetFilial((int)Constants.Stores.R3_MEDERI).Returns(new Filial()
            {
                ID = (int)Constants.Stores.R3_MEDERI, Nome = "R3 MEDERI"
            });

            var resultado = RankingSimuladoEntityTestData.ListResultado();

            rankingMock.ListResultado(idSimulado).Returns(resultado);

            var business = new RankingSimuladoBusiness(rankingMock, especialidadeMock, storesMock);
            var ranking  = business.GeraRankingSimuladoNacional(idSimulado);

            rankingMock.Received().RemoverSimuladoRankingFase01(idSimulado);
            rankingMock.Received().InserirSimuladoRankingFase01(Arg.Any <List <SimuladoRankingFase01DTO> >());

            Assert.AreEqual(resultado.Count(), ranking.Count);
            Assert.IsFalse(ranking.Any(x => x.dblNotaFinal < 0));
            Assert.IsFalse(ranking.Any(x => x.dblNotaFinal > simulado.PesoProvaObjetiva));

            int    contador     = 1;
            int    posicao      = 1;
            double?notaAnterior = -1;

            foreach (var item in ranking)
            {
                var    res  = resultado.Where(x => x.intClientID == item.intClientID).FirstOrDefault();
                double nota = Math.Round(Convert.ToDouble(res.intAcertos) / simulado.QuantidadeQuestoes.Value * simulado.PesoProvaObjetiva.Value, 2);

                if (item.dblNotaFinal != notaAnterior)
                {
                    posicao = contador;
                }

                Assert.AreEqual(nota, item.dblNotaFinal);
                Assert.AreEqual(posicao.ToString() + "º", item.txtPosicao);
                Assert.AreEqual("R3 MEDERI", item.txtUnidade);
                Assert.AreEqual("2019 R4 GO", item.txtLocal);
                Assert.AreEqual("GINECOLOGIA E OBSTETRÍCIA (ANO OPCIONAL)", item.txtEspecialidade);
                Assert.AreEqual(-1, item.intStateID);

                notaAnterior = item.dblNotaFinal;
                contador++;
            }
        }