Пример #1
0
        public void FinalizarVotacao_VotacaoJaFinalizada_ThrowsCustomException()
        {
            var periodo = new Periodo(new DateTime(2020, 1, 1), new DateTime(2020, 1, 2));
            var votacao = new VotacaoFake(periodo, new Ciclo());

            votacao.IniciarVotacao();
            votacao.FinalizarVotacao();
            var exception = Assert.Throws <CustomException>(() => votacao.FinalizarVotacao());

            Assert.Equal("Essa votação já foi finalizada.", exception.Message);
        }
Пример #2
0
        public void IniciarVotacao_VotacaoJaIniciadaNaoFinalizada_DataFimSetada()
        {
            var periodo = new Periodo(new DateTime(2020, 1, 1), new DateTime(2020, 1, 2));
            var votacao = new VotacaoFake(periodo, new Ciclo());

            votacao.IniciarVotacao();
            votacao.FinalizarVotacao();
            Assert.NotNull(votacao.PeriodoRealizado.DataInicio);
            Assert.NotNull(votacao.PeriodoRealizado.DataFim);
        }
Пример #3
0
        public void AtualizarPeriodoPrevisto_VotacaoJaFinalizada_ThrowsCustomException()
        {
            var periodo = new Periodo(new DateTime(2020, 1, 1), new DateTime(2020, 1, 2));
            var votacao = new VotacaoFake(periodo, new Ciclo());

            votacao.IniciarVotacao();
            votacao.FinalizarVotacao();
            var novoPeriodo = new Periodo(new DateTime(2019, 12, 31), new DateTime(2020, 1, 2));
            var exception   = Assert.Throws <CustomException>(() => votacao.AtualizarPeriodoPrevisto(novoPeriodo));

            Assert.Equal("Não é possível atualizar a período previsto após o término da votação.", exception.Message);
        }
Пример #4
0
        public void RemoverElegivel_VotacaoFinalizada_ThrowsCustomException()
        {
            var ciclo   = Factories.CriarCicloValido();
            var periodo = new Periodo(new DateTime(2020, 1, 1), new DateTime(2020, 1, 2));
            var votacao = new VotacaoFake(periodo, ciclo);

            var grupo = new Grupo("Grupo 1");

            ciclo.AdicionarGrupo(grupo);
            var usuario   = new Usuario("12312312312", "111", "Usuário 1", "Cargo 1", "Área 1", ciclo.Empresa);
            var associado = new Associado(usuario, grupo, 10, "1234");

            ciclo.AdicionarAssociado(associado);
            votacao.AdicionarElegivel(associado);

            votacao.IniciarVotacao();
            votacao.FinalizarVotacao();

            var exception = Assert.Throws <CustomException>(() => votacao.RemoverElegivel(new Elegivel()));

            Assert.Equal("Não é possível remover elegíveis após o término da votação.", exception.Message);
        }
Пример #5
0
        public void RetornarApuracao_VariosGrupos_RetornaApuracao()
        {
            var ciclo   = Factories.CriarCicloValido();
            var periodo = new Periodo(new DateTime(2020, 1, 1), new DateTime(2020, 1, 2));
            var votacao = new VotacaoFake(periodo, ciclo, new Dimensionamento(2, 1));

            votacao.IniciarVotacao();

            var grupo1 = new Grupo("Grupo 1");

            ciclo.AdicionarGrupo(grupo1);

            // Aplausogramas: 3, 6, 9, 12
            for (var i = 1; i <= 4; i++)
            {
                var usuario   = new Usuario($"1231231231{i}", new string(i.ToString()[0], 4), $"Usuário {i}", $"Cargo {i}", $"Área {i}", ciclo.Empresa);
                var associado = new Associado(usuario, grupo1, i, "1234");
                ciclo.AdicionarAssociado(associado);
                votacao.AdicionarElegivel(associado);
            }

            var grupo2 = new Grupo("Grupo 2");

            ciclo.AdicionarGrupo(grupo2);
            for (var i = 1; i <= 3; i++)
            {
                var usuario   = new Usuario($"2231231231{i}", new string(i.ToString()[0], 4), $"Usuário {i}", $"Cargo {i}", $"Área {i}", ciclo.Empresa);
                var associado = new Associado(usuario, grupo2, 2, "1234");
                ciclo.AdicionarAssociado(associado);
                votacao.AdicionarElegivel(associado);
            }

            // Grupo 1
            // Pontuação: 7, 7, 9, 12
            votacao.Elegiveis.ElementAt(0).RegistrarVoto();
            votacao.Elegiveis.ElementAt(0).RegistrarVoto();
            votacao.Elegiveis.ElementAt(0).RegistrarVoto();
            votacao.Elegiveis.ElementAt(0).RegistrarVoto();
            votacao.Elegiveis.ElementAt(1).RegistrarVoto();

            // Grupo 2
            // Pontuação: 8, 6, 9
            votacao.Elegiveis.ElementAt(4).RegistrarVoto();
            votacao.Elegiveis.ElementAt(4).RegistrarVoto();
            votacao.Elegiveis.ElementAt(6).RegistrarVoto();
            votacao.Elegiveis.ElementAt(6).RegistrarVoto();
            votacao.Elegiveis.ElementAt(6).RegistrarVoto();

            votacao.FinalizarVotacao();

            Assert.Collection(votacao.RetornarApuracao(),
                              grupo =>
            {
                Assert.Equal(grupo1, grupo.Key);
                Assert.Collection(grupo.Value,
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(3), elegivel);
                    Assert.Equal(12, elegivel.Pontuacao);
                },
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(2), elegivel);
                    Assert.Equal(9, elegivel.Pontuacao);
                },
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(1), elegivel);
                    Assert.Equal(7, elegivel.Pontuacao);
                },
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(0), elegivel);
                    Assert.Equal(7, elegivel.Pontuacao);
                });
            },
                              grupo =>
            {
                Assert.Equal(grupo2, grupo.Key);
                Assert.Collection(grupo.Value,
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(6), elegivel);
                    Assert.Equal(9, elegivel.Pontuacao);
                },
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(4), elegivel);
                    Assert.Equal(8, elegivel.Pontuacao);
                },
                                  elegivel =>
                {
                    Assert.Equal(votacao.Elegiveis.ElementAt(5), elegivel);
                    Assert.Equal(6, elegivel.Pontuacao);
                });
            });
        }