Esempio n. 1
0
        public void ApurarVotos_QtdaElegiveisMenorQueDimensionamento_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));

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

            ciclo.AdicionarGrupo(grupo);

            votacao.IniciarVotacao();

            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, grupo, 10, "1234");
                ciclo.AdicionarAssociado(associado);
            }

            var elegivelRetornado = votacao.AdicionarElegivel(ciclo.Associados.ElementAt(2));

            Assert.Collection(votacao.ApurarVotos(grupo),
                              elegivel =>
            {
                Assert.Equal(elegivelRetornado, elegivel);
                Assert.Equal(30, elegivel.Pontuacao);
                Assert.Equal(EApuracao.Eleito, elegivel.Apuracao);
            });
        }
Esempio n. 2
0
        public void ApurarVotos_VotacaoNaoIniciada_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);
            var exception = Assert.Throws <CustomException>(() => votacao.ApurarVotos(grupo));

            Assert.Equal("Não é possível fazer a apuração dos votos antes do início da votação.", exception.Message);
        }
Esempio n. 3
0
        public void ApurarVotos_GrupoValido_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));

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

            ciclo.AdicionarGrupo(grupo);

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

            ciclo.AdicionarAssociado(associado1);

            var usuario2   = new Usuario("12312312311", "222", "Usuário 2", "Cargo 2", "Área 2", ciclo.Empresa);
            var associado2 = new Associado(usuario2, grupo, 11, "1234");

            ciclo.AdicionarAssociado(associado2);

            var elegivel1 = votacao.AdicionarElegivel(associado1);
            var elegivel2 = votacao.AdicionarElegivel(associado2);

            votacao.IniciarVotacao();
            elegivel1.RegistrarVoto();
            elegivel1.RegistrarVoto();
            elegivel2.RegistrarVoto();

            Assert.Collection(votacao.ApurarVotos(grupo),
                              elegivel =>
            {
                Assert.Equal(elegivel2, elegivel);
                Assert.Equal(34, elegivel.Pontuacao);
                Assert.Equal(EApuracao.Eleito, elegivel.Apuracao);
            },
                              elegivel =>
            {
                Assert.Equal(elegivel1, elegivel);
                Assert.Equal(32, elegivel.Pontuacao);
                Assert.Equal(EApuracao.NaoEleito, elegivel.Apuracao);
            });
        }
Esempio n. 4
0
        public void ApurarVotos_NenhumElegivelNoGrupo_RetornaListaVazia()
        {
            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);
            var elegivelRetornado = votacao.AdicionarElegivel(associado);

            votacao.IniciarVotacao();
            elegivelRetornado.RegistrarVoto();

            Assert.Empty(votacao.ApurarVotos(new Grupo("Grupo 2")));
        }