package br.gov.servicos.piwik; import br.gov.servicos.config.PiwikConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import java.net.URI; import java.util.List; import java.util.Optional; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Answers.RETURNS_SMART_NULLS; import static org.mockito.Mockito.*; import static org.springframework.http.HttpStatus.OK; @RunWith(MockitoJUnitRunner.class) public class PiwikClientTest { static final String PERIOD = "day"; static final String DATE = "04-04-2015"; static final int SITE = 2; static final String AUTH_TOKEN = "authToken"; static final String PIWIK_URL = "http://piwik"; @Mock(answer = RETURNS_SMART_NULLS) RestTemplate restTemplate; @Test public void deveRetornarListaVaziaQuandoDesabilitado() throws Exception { PiwikClient piwikClient = new PiwikClient(restTemplate, new PiwikConfig() .withEnabled(false) .withUrl(PIWIK_URL) .withToken(AUTH_TOKEN) .withSite(SITE) ); assertThat(piwikClient.getPageUrls(PERIOD, DATE), is(empty())); verify(restTemplate, never()).getForEntity(any(URI.class), anyObject()); } @Test public void deveFazerChamadaAoPiwikQuandoHabilitado() throws Exception { when(restTemplate.getForEntity( new URI(PIWIK_URL + "?" + "module=API" + "&" + "format=json" + "&" + "idSite=" + SITE + "&" + "token_auth=" + AUTH_TOKEN + "&" + "method=Actions.getPageUrls" + "&" + "period=" + PERIOD + "&" + "date=" + DATE + "&" + "expanded=1"), PiwikPage[].class) ).thenReturn( new ResponseEntity<>( new PiwikPage[]{ new PiwikPage("http://site.com:80/page-url", 100L, 10L, new PiwikPage[0]) }, OK)); PiwikClient piwikClient = new PiwikClient(restTemplate, new PiwikConfig() .withEnabled(true) .withUrl(PIWIK_URL) .withToken(AUTH_TOKEN) .withSite(SITE)); List<PiwikPage> urls = piwikClient.getPageUrls(PERIOD, DATE); assertThat(urls.get(0).getPath(), is(Optional.of("/page-url"))); } }