package br.gov.servicos.editor.frontend; import br.gov.servicos.editor.conteudo.ListaDeConteudo; import br.gov.servicos.editor.security.UserProfile; import br.gov.servicos.editor.security.UserProfiles; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static java.util.Optional.of; import static org.hamcrest.Matchers.lessThan; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ApiControllerTest { @Mock VCGE vcge; @Mock Orgaos orgaos; @Mock Siorg siorg; @Mock ListaDeConteudo listaDeConteudo; @Mock UserProfiles userProfiles; ApiController controller; @Before public void setUp() throws Exception { controller = new ApiController(orgaos, siorg, vcge, userProfiles, listaDeConteudo); } @Test public void pingDeveRetornarProfileEHorario() throws Exception { UserProfile profile = new UserProfile().withEmail("foo@example.com"); given(userProfiles.get()).willReturn(profile); Ping ping = controller.ping(); assertThat(ping.getProfile(), is(profile)); assertThat(System.currentTimeMillis() - ping.getHorario(), is(lessThan(1000L))); } @Test public void listaOrgaosDisponiveis() throws Exception { controller.orgaos("Instituto"); verify(orgaos).get("Instituto"); } @Test public void listaCategoriasDoVcgeDisponiveis() throws Exception { controller.vcge(); verify(vcge).get(); } @Test public void buscaOrgaosDisponivel() throws Exception { when(siorg.nomeDoOrgao("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/404")).thenReturn(of("")); controller.orgao("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/404"); verify(siorg).nomeDoOrgao("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/404"); } }