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.UsuarioScaConstantes.*;
import static br.gov.al.saude.test.ConstantesTestHelper.PessoaConstantes.*;

import java.util.ArrayList;

import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import br.gov.al.saude.rhd.core.domain.unidade.UnidadeService;
import br.gov.al.saude.rhd.core.domain.unidade.impl.UnidadeServiceImpl;
import br.gov.al.saude.rhd.core.infrastructure.persistence.jpa.UnidadeRepository;
import br.gov.al.saude.rhd.model.view.UnidadeView;
import br.gov.al.saude.sca.model.usuario.view.UsuarioView;
import br.gov.al.saude.test.builder.UsuarioViewBuilder;

@RunWith(JMock.class)
public class UnidadeServiceImplTest{

        private UnidadeRepository unidadeRepositoryMock;
        private UnidadeService unidadeService;
        private Mockery contexto;
       
        @Before
        public void inicializarContexto() {
                contexto = new JUnit4Mockery();
                unidadeRepositoryMock = getContexto().mock(UnidadeRepository.class);
                unidadeService = new UnidadeServiceImpl(unidadeRepositoryMock);
        }
       
        public Mockery getContexto() {
                return contexto;
        }
       
        @Test
        public void aoListarUnidadeExercicioPorPapelUsuarioComPapelCoordenadorDeveriaDelegarParaOhRepositorio() throws Exception {
                UsuarioView usuario = new UsuarioViewBuilder()
                                                                  .comSequencial(SEQUENCIAL_PESSOA_BRUNO_LOPES_2)
                                          .comRole(PAPEL_RHD_COORDENADOR_RHD).build();
                getContexto().checking(new Expectations(){{
                        oneOf(unidadeRepositoryMock).consultarTodos();
                        will(returnValue(new ArrayList<UnidadeView>()));
                        never(unidadeRepositoryMock).consultarUnidadesExercicioServidor(with(any(Long.class)));
                }});
                unidadeService.listarUnidadeExercicioPorPapelUsuario(usuario);
        }
       
        @Test
        public void aoListarUnidadeExercicioPorPapelUsuarioComPapelServidorOuApoiadorDeveriaDelegarParaOhRepositorio() throws Exception {
                UsuarioView usuario = new UsuarioViewBuilder()
                                                                  .comSequencial(SEQUENCIAL_PESSOA_CARLOS_EDUARDO_7)
                                                                  .comRole(PAPEL_RHD_APOIADOR_RHD)
                                                                  .build();
                getContexto().checking(new Expectations(){{
                        never(unidadeRepositoryMock).consultarTodos();
                        oneOf(unidadeRepositoryMock).consultarUnidadesExercicioServidor(with(any(Long.class)));
                        will(returnValue(new ArrayList<UnidadeView>()));
                }});
                unidadeService.listarUnidadeExercicioPorPapelUsuario(usuario);
        }
       
        @Test
        public void aoListarUnidadeExercicioPorPapelUsuarioSemPermissoesDeveriaDelegarParaOhRepositorio() throws Exception {
                UsuarioView usuario = new UsuarioView();
                usuario.setPermissoes(null);
                getContexto().checking(new Expectations(){{
                        never(unidadeRepositoryMock).consultarTodos();
                        oneOf(unidadeRepositoryMock).consultarUnidadesExercicioServidor(with(any(Long.class)));
                        will(returnValue(new ArrayList<UnidadeView>()));
                }});
                unidadeService.listarUnidadeExercicioPorPapelUsuario(usuario);
        }
       

}