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
);
}
}