package com.urbanairship.api.reports;
import com.urbanairship.api.client.Request;
import com.urbanairship.api.client.ResponseParser;
import com.urbanairship.api.reports.model.StatisticsResponse;
import com.urbanairship.api.reports.parse.ReportsObjectMapper;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.Period;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class StatisticsRequestTest {
ObjectMapper mapper = ReportsObjectMapper.getInstance();
DateTime start = new DateTime(2014, 10, 1, 12, 0, 0, 0, DateTimeZone.UTC);
DateTime end = start.plus(Period.hours(48));
String queryPathString = "/api/push/stats/?start=2014-10-01T12%3A00%3A00&end=2014-10-03T12%3A00%3A00";
StatisticsRequest request = StatisticsRequest.newRequest(start, end);
@Test
public void testContentType() throws Exception {
assertEquals(request.getContentType(), null);
}
@Test
public void testMethod() throws Exception {
assertEquals(request.getHttpMethod(), Request.HttpMethod.GET);
}
@Test
public void testBody() throws Exception {
assertEquals(request.getRequestBody(), null);
}
@Test
public void testHeaders() throws Exception {
assertEquals(request.getRequestHeaders(), null);
}
@Test
public void testURI() throws Exception {
URI baseURI = URI.create("https://go.urbanairship.com");
URI expectedURI = URI.create("https://go.urbanairship.com" + queryPathString);
assertEquals(request.getUri(baseURI), expectedURI);
}
@Test
public void testStatisticsParser() throws Exception {
ResponseParser responseParser = new ResponseParser<List<StatisticsResponse>>() {
@Override
public List<StatisticsResponse> parse(String response) throws IOException {
return mapper.readValue(response, new TypeReference<List<StatisticsResponse>>() {});
}
};
String response = "[\n" +
" {\n" +
" \"c2dm_messages\": 0,\n" +
" \"gcm_messages\": 3,\n" +
" \"messages\": 2,\n" +
" \"wns_messages\": 0,\n" +
" \"start\": \"2014-06-22 00:00:00\",\n" +
" \"mpns_messages\": 0,\n" +
" \"bb_messages\": 0\n" +
" },\n" +
" {\n" +
" \"c2dm_messages\": 0,\n" +
" \"gcm_messages\": 2,\n" +
" \"messages\": 0,\n" +
" \"wns_messages\": 0,\n" +
" \"start\": \"2014-06-22 01:00:00\",\n" +
" \"mpns_messages\": 0,\n" +
" \"bb_messages\": 0\n" +
" },\n" +
" {\n" +
" \"messages\": 0,\n" +
" \"mpns_messages\": 0,\n" +
" \"gcm_messages\": 0,\n" +
" \"c2dm_messages\": 0,\n" +
" \"wns_messages\": 0,\n" +
" \"start\": \"2014-06-22 02:00:00\",\n" +
" \"bb_messages\": 0\n" +
" },\n" +
" {\n" +
" \"c2dm_messages\": 0,\n" +
" \"gcm_messages\": 1,\n" +
" \"messages\": 3,\n" +
" \"wns_messages\": 0,\n" +
" \"start\": \"2014-06-22 03:00:00\",\n" +
" \"mpns_messages\": 0,\n" +
" \"bb_messages\": 0\n" +
" }\n" +
"]";
List<StatisticsResponse> expectedResponse = (List<StatisticsResponse>) responseParser.parse(response);
assertEquals(request.getResponseParser().parse(response), expectedResponse);
}
}