Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.gov.al.saude.rhd.core.domain;

import static br.gov.al.saude.test.ConstantesTestHelper.MensagensRetorno.MSG_ERRO_SERVIDOR_NAO_EXISTE;
import static br.gov.al.saude.test.ConstantesTestHelper.ServidorConstantes.SEQUENCIAL_SERVIDOR_LUCIANO_BARBOSA_1;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.List;

import org.jmock.Expectations;
import org.junit.Before;
import org.junit.Test;

import br.gov.al.saude.framework.core.consulta.restricao.Restricoes;
import br.gov.al.saude.framework.core.generic.GenericRepository;
import br.gov.al.saude.framework.core.generic.GenericService;
import br.gov.al.saude.framework.core.validador.Validador;
import br.gov.al.saude.rhd.core.domain.servidor.ServidorService;
import br.gov.al.saude.rhd.core.domain.servidor.impl.ServidorServiceImpl;
import br.gov.al.saude.rhd.core.infrastructure.persistence.jpa.ServidorAvaliacaoRepository;
import br.gov.al.saude.rhd.core.infrastructure.persistence.jpa.ServidorRepository;
import br.gov.al.saude.rhd.model.Cronograma;
import br.gov.al.saude.rhd.model.QualificacaoServidorCronograma;
import br.gov.al.saude.rhd.model.ServidorAvaliacao;
import br.gov.al.saude.rhd.model.view.QualificacaoServidorView;
import br.gov.al.saude.rhd.model.view.ServidorDadoFuncionalView;
import br.gov.al.saude.rhd.model.view.ServidorView;
import br.gov.al.saude.test.builder.ServidorAvaliacaoBuilder;
import br.gov.al.saude.test.unidade.generic.service.ServiceImplTest;
import br.gov.al.saude.test.util.CommandSemMensagem;
import br.gov.al.saude.test.util.VerificadorLancamentoException;

/**
 * @author Bruno Lopes
 * @since 29/05/2013
 */

public class ServidorServiceImplTest extends ServiceImplTest<ServidorView> {
       
        protected static final Long CRONOGRAMA_2013 = 2013L;
        protected static final Integer PRIMEIRO_REGISTRO_0 = 0;
        protected static final Integer TAMANHO_PAGINA_5 = 5;

        private ServidorService servidorService;
        private ServidorRepository servidorRepositoryMock;
        private ServidorAvaliacaoRepository servidorAvaliacaoRepositoryMock;

        @Before
        public void inicializarContexto() {
                super.inicializarContexto();
                servidorRepositoryMock = getContexto().mock(ServidorRepository.class);
                servidorAvaliacaoRepositoryMock = getContexto().mock(ServidorAvaliacaoRepository.class);
                validadorMock = getContexto().mock(Validador.class);
                servidorService = new ServidorServiceImpl(validadorMock, servidorRepositoryMock, servidorAvaliacaoRepositoryMock);
        }

        protected GenericService<ServidorView> getService() {
                return servidorService;
        }

        protected GenericRepository<ServidorView> getRepositoryMock() {
                return servidorRepositoryMock;
        }
       
        @Test
        public void aoConsultarDadosPessoaisDeveriaDelegarParaOhRepositorio() {
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).consultarServidorPorSequencialPessoa(new Long(SEQUENCIAL_SERVIDOR_LUCIANO_BARBOSA_1));
                        will(returnValue(new ServidorView()));
                }});
                servidorService.consultarDadosPessoais(new Long(SEQUENCIAL_SERVIDOR_LUCIANO_BARBOSA_1));
        }

        @Test
        public void aoConsultarDadosPessoaisComServidorNaoExistenteDeveriaLancarExcecao() {
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).consultarServidorPorSequencialPessoa(new Long(SEQUENCIAL_SERVIDOR_LUCIANO_BARBOSA_1));
                        will(returnValue(null));
                }});
               
                VerificadorLancamentoException.verificarMensagemLancamentoExceptionSemRetornoMensagem(new CommandSemMensagem() {
                        @Override
                        public void execute() throws Exception {
                                servidorService.consultarDadosPessoais(new Long(SEQUENCIAL_SERVIDOR_LUCIANO_BARBOSA_1));
                        }
                }, MSG_ERRO_SERVIDOR_NAO_EXISTE);
        }
       
       
        @Test @SuppressWarnings("unchecked")
        public void aoListarServidorParticipanteDoOrgaoEhCronogramaDeveriaDelegarParaOhRepositorio() {
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(with(any(List.class)), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                }});
                servidorService.listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(new ArrayList<Long>(), CRONOGRAMA_2013, PRIMEIRO_REGISTRO_0, TAMANHO_PAGINA_5);
        }
       
        @Test @SuppressWarnings("unchecked")
        public void aoListarServidorParticipanteDoOrgaoEhCronogramaDeveriaRetornarUmaLista() {
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(with(any(List.class)), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                        will(returnValue(new ArrayList<ServidorView>()));
                }});
                List<?> listaRetorno = servidorService.listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(new ArrayList<Long>(), CRONOGRAMA_2013, PRIMEIRO_REGISTRO_0, TAMANHO_PAGINA_5);
                assertTrue("Deveria retornar uma lista.", listaRetorno.getClass().equals(java.util.ArrayList.class));
        }

        @Test @SuppressWarnings("unchecked")
        public void aoListarServidorParticipanteDoOrgaoEhCronogramaDeveriaRetornarUmaListaDeServidoresView() {
                final List<ServidorView> listaServidores = new ArrayList<ServidorView>();
                listaServidores.add(new ServidorView());
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(with(any(List.class)), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                        will(returnValue(listaServidores));
                }});
                List<?> listaRetorno = servidorService.listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(new ArrayList<Long>(), CRONOGRAMA_2013, PRIMEIRO_REGISTRO_0, TAMANHO_PAGINA_5);
                assertTrue("Deveria retornar uma lista de servidores.", listaRetorno.get(PRIMEIRO_REGISTRO_0).getClass().equals(ServidorView.class));
        }
       
        @Test
        public void aoListarQualificacaoServidorDeveriaDelegarParaOhRepositorio() {
                getContexto().checking(new Expectations() {{
                        oneOf(servidorRepositoryMock).listarQualificacaoServidor(with(any(ServidorDadoFuncionalView.class)));
                }});
                servidorService.listarQualificacaoServidor(new ServidorDadoFuncionalView());
        }
       
        @Test
        public void aoListarQualificacaoServidorCronogramaDeveriaDelegarParaOhRepositorio() {
                getContexto().checking(new Expectations() {{
                        oneOf(servidorRepositoryMock).listarQualificacaoServidorCronograma(with(any(ServidorAvaliacao.class)));
                }});
                servidorService.listarQualificacaoServidorCronograma(new ServidorAvaliacaoBuilder().build());
        }
       
        @Test
        public void aoListarQualificacaoServidorDeveriaRetornarUmaLista() {
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).listarQualificacaoServidor(with(any(ServidorDadoFuncionalView.class)));
                        will(returnValue(new ArrayList<ServidorView>()));
                }});
                List<?> listaRetorno = servidorService.listarQualificacaoServidor(new ServidorDadoFuncionalView());
                assertTrue("Deveria retornar uma lista.", listaRetorno.getClass().equals(java.util.ArrayList.class));
        }

        @Test
        public void aoListarQualificacaoServidorDeveriaRetornarUmaListaDeQualificacaoServidorView() {
                final List<QualificacaoServidorView> listaQualificacoes = new ArrayList<QualificacaoServidorView>();
                listaQualificacoes.add(new QualificacaoServidorView());
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).listarQualificacaoServidor(with(any(ServidorDadoFuncionalView.class)));
                        will(returnValue(listaQualificacoes));
                }});
                List<?> listaRetorno = servidorService.listarQualificacaoServidor(new ServidorDadoFuncionalView());
                assertTrue("Deveria retornar uma lista de servidores.", listaRetorno.get(PRIMEIRO_REGISTRO_0).getClass().equals(QualificacaoServidorView.class));
        }
       
        @Test
        @SuppressWarnings("unchecked")
        public void aoVincularQualificacaoDeveriaDelegarParaOhRepositorio() {
                QualificacaoServidorView qualificacaoRedes = new QualificacaoServidorView();
                QualificacaoServidorView[] qualificacoes = new QualificacaoServidorView[1];
                qualificacoes[0] = qualificacaoRedes;
                getContexto().checking(new Expectations(){{
                        oneOf(servidorRepositoryMock).vincularQualificacao(with(any(QualificacaoServidorCronograma.class)));
                        oneOf(servidorRepositoryMock).desvincularQualificacoesNaoSelecionadasPorQualificacoesSelecionadas(with(any(ServidorDadoFuncionalView.class)), with(any(Cronograma.class)), with(any(List.class)));
                }});
                servidorService.vincularQualificacao(new ServidorDadoFuncionalView(), new Cronograma(), qualificacoes);
        }
       
        @Test
        @SuppressWarnings("unchecked")
        public void aoVincularDuasQualificacoesDeveriaDelegarParaOhRepositorioDuasVezes() {
                QualificacaoServidorView qualificacaoRedes = new QualificacaoServidorView();
                QualificacaoServidorView qualificacaoJava = new QualificacaoServidorView();
                QualificacaoServidorView[] qualificacoes = new QualificacaoServidorView[2];
                qualificacoes[0] = qualificacaoRedes;
                qualificacoes[1] = qualificacaoJava;
                getContexto().checking(new Expectations(){{
                        exactly(2).of(servidorRepositoryMock).vincularQualificacao(with(any(QualificacaoServidorCronograma.class)));
                        oneOf(servidorRepositoryMock).desvincularQualificacoesNaoSelecionadasPorQualificacoesSelecionadas(with(any(ServidorDadoFuncionalView.class)), with(any(Cronograma.class)), with(any(List.class)));
                }});
                servidorService.vincularQualificacao(new ServidorDadoFuncionalView(), new Cronograma(), qualificacoes);
        }
       
        @Test
        @SuppressWarnings("unchecked")
        public void aoVincularSemSelecionarQualificacaoNaoDeveriaDelegarParaOhRepositorio() {
                getContexto().checking(new Expectations(){{
                        never(servidorRepositoryMock).vincularQualificacao(with(any(QualificacaoServidorCronograma.class)));
                        oneOf(servidorRepositoryMock).desvincularQualificacoesNaoSelecionadasPorQualificacoesSelecionadas(with(any(ServidorDadoFuncionalView.class)), with(any(Cronograma.class)), with(any(List.class)));
                }});
                servidorService.vincularQualificacao(new ServidorDadoFuncionalView(), new Cronograma(), new QualificacaoServidorView[0]);
        }
       
        @Test
        public void aoListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaDeveriaDelegarParaOhServidorAvaliacaoRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                restricoes.add(Restricoes.igual("tipoEfetivoExercicio", "SIM"));
                restricoes.add(Restricoes.igual("cronograma.numeroAno", 2013L));
                restricoes.add(Restricoes.igual("nome", "Antonio Geroncio"));
                getContexto().checking(new Expectations(){{
                        oneOf(servidorAvaliacaoRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes), with(any(Integer.class)), with(any(Integer.class)));
                        never(servidorRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(restricoes), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                }});
                servidorService.listarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes, new Integer(0), new Integer(0));
        }
       
        @Test @SuppressWarnings("unchecked")
        public void aoListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaDeveriaDelegarParaOhServidorRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                restricoes.add(Restricoes.igual("nome", "Antonio Geroncio"));
                restricoes.add(Restricoes.igual("cronograma.numeroAno", 2013L));
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes), with(any(Integer.class)), with(any(Integer.class)));
                        oneOf(servidorRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(any(List.class)), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                }});
                servidorService.listarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes, new Integer(0), new Integer(0));
        }
       
       
        @Test @SuppressWarnings("unchecked")
        public void aoListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaComRestricaoCronogramaNulaDeveriaDelegarParaOhServidorRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                restricoes.add(Restricoes.igual("cronograma.numeroAno", null));
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes), with(any(Integer.class)), with(any(Integer.class)));
                        oneOf(servidorRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(any(List.class)), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                }});
                servidorService.listarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes, new Integer(0), new Integer(0));
        }
       
        @Test
        public void aoListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaComListaRestricoesVaziaDeveriaNaoDelegarParaOhServidorRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes), with(any(Integer.class)), with(any(Integer.class)));
                        never(servidorRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(restricoes), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                }});
                servidorService.listarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes, new Integer(0), new Integer(0));
        }
       
        @Test
        public void aoListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaComListaRestricoesNulaDeveriaNaoDelegarParaOhRepository() {
                final List<Restricoes> restricoes = null;
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes), with(any(Integer.class)), with(any(Integer.class)));
                        never(servidorRepositoryMock).listarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(restricoes), with(any(Long.class)), with(any(Integer.class)), with(any(Integer.class)));
                }});
                servidorService.listarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes, new Integer(0), new Integer(0));
        }
       
        @Test
        public void aoObterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaDeveriaDelegarParaOhServidorAvaliacaoRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                restricoes.add(Restricoes.igual("tipoEfetivoExercicio", "SIM"));
                restricoes.add(Restricoes.igual("cronograma.numeroAno", 2013L));
                restricoes.add(Restricoes.igual("nome", "Antonio Geroncio"));
                getContexto().checking(new Expectations(){{
                        oneOf(servidorAvaliacaoRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes));
                        never(servidorRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(restricoes));
                }});
                servidorService.obterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes);
        }
       
       
        @Test @SuppressWarnings("unchecked")
        public void aoObterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaDeveriaDelegarParaOhServidorRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                restricoes.add(Restricoes.igual("cronograma.numeroAno", 2013L));
                restricoes.add(Restricoes.igual("nome", "Antonio Geroncio"));
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes));
                        oneOf(servidorRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(any(List.class)));
                }});
                servidorService.obterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes);
        }
       
        @Test @SuppressWarnings("unchecked")
        public void aoObterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaComListaRestricoesNulaDeveriaNaoDelegarParaOhRepository() {
                final List<Restricoes> restricoes = null;
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes));
                        never(servidorRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(any(List.class)));
                }});
                servidorService.obterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes);
        }
       
        @Test @SuppressWarnings("unchecked")
        public void aoObterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemandaComListaRestricoesVaziaDeveriaNaoDelegarParaOhServidorRepository() {
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
                getContexto().checking(new Expectations(){{
                        never(servidorAvaliacaoRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorAvaliacao(with(restricoes));
                        never(servidorRepositoryMock).obterQuantidadeDeRegistrosListarServidorDadoFuncionalViewDtoPorServidorDadoFuncional(with(any(List.class)));
                }});
                servidorService.obterQuantidadeDeRegistrosListarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes);
        }
       
        @Test @SuppressWarnings("unchecked")
        public void aoObterQuantidadeDeRegistrosListarServidorParticipanteDeGrupoDaUnidadeEhCronogramaDeveriaDelegarParaOhService() {
                getContexto().checking(new Expectations() {{
                        oneOf(servidorRepositoryMock).obterQuantidadeDeRegistrosListarServidorParticipanteDeGrupoDaUnidadeEhCronograma(with(any(List.class)), with(any(Long.class)));
                }});
                servidorService.obterQuantidadeDeRegistrosListarServidorParticipanteDeGrupoDaUnidadeEhCronograma(new ArrayList<Long>(), new Long(0));
        }
       
}