aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/androidTest/java/org/wordpress/android/ui/stats/RemoteTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/androidTest/java/org/wordpress/android/ui/stats/RemoteTests.java')
-rw-r--r--WordPress/src/androidTest/java/org/wordpress/android/ui/stats/RemoteTests.java638
1 files changed, 638 insertions, 0 deletions
diff --git a/WordPress/src/androidTest/java/org/wordpress/android/ui/stats/RemoteTests.java b/WordPress/src/androidTest/java/org/wordpress/android/ui/stats/RemoteTests.java
new file mode 100644
index 000000000..ff8a9505d
--- /dev/null
+++ b/WordPress/src/androidTest/java/org/wordpress/android/ui/stats/RemoteTests.java
@@ -0,0 +1,638 @@
+package org.wordpress.android.ui.stats;
+
+
+import com.android.volley.Request;
+import com.android.volley.VolleyError;
+import com.wordpress.rest.RestClient;
+import com.wordpress.rest.RestRequest;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.wordpress.android.DefaultMocksInstrumentationTestCase;
+import org.wordpress.android.mocks.RestClientCustomizableMock;
+import org.wordpress.android.mocks.RestClientFactoryTest;
+import org.wordpress.android.networking.RestClientFactory;
+import org.wordpress.android.ui.stats.models.AuthorModel;
+import org.wordpress.android.ui.stats.models.ClickGroupModel;
+import org.wordpress.android.ui.stats.models.ClicksModel;
+import org.wordpress.android.ui.stats.models.CommentsModel;
+import org.wordpress.android.ui.stats.models.FollowDataModel;
+import org.wordpress.android.ui.stats.models.FollowerModel;
+import org.wordpress.android.ui.stats.models.FollowersModel;
+import org.wordpress.android.ui.stats.models.GeoviewModel;
+import org.wordpress.android.ui.stats.models.GeoviewsModel;
+import org.wordpress.android.ui.stats.models.InsightsAllTimeModel;
+import org.wordpress.android.ui.stats.models.InsightsPopularModel;
+import org.wordpress.android.ui.stats.models.InsightsTodayModel;
+import org.wordpress.android.ui.stats.models.PostModel;
+import org.wordpress.android.ui.stats.models.PostViewsModel;
+import org.wordpress.android.ui.stats.models.ReferrerGroupModel;
+import org.wordpress.android.ui.stats.models.ReferrerResultModel;
+import org.wordpress.android.ui.stats.models.ReferrersModel;
+import org.wordpress.android.ui.stats.models.SingleItemModel;
+import org.wordpress.android.ui.stats.models.TagsContainerModel;
+import org.wordpress.android.ui.stats.models.TagsModel;
+import org.wordpress.android.ui.stats.models.TopPostsAndPagesModel;
+import org.wordpress.android.ui.stats.models.VideoPlaysModel;
+import org.wordpress.android.ui.stats.models.VisitModel;
+import org.wordpress.android.ui.stats.models.VisitsModel;
+import org.wordpress.android.util.AppLog;
+
+
+public class RemoteTests extends DefaultMocksInstrumentationTestCase {
+
+ private RestClientCustomizableMock mRestClient;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // Set the version of the REST client to 1.1
+ RestClientFactoryTest.sVersion = RestClient.REST_CLIENT_VERSIONS.V1_1;
+
+ mRestClient = (RestClientCustomizableMock) RestClientFactory.instantiate(null, RestClient.REST_CLIENT_VERSIONS.V1_1);
+ }
+
+ private RestRequest.ErrorListener errListener = new RestRequest.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError response) {
+ AppLog.e(AppLog.T.STATS, "The Rest Client returned an error from a mock call: " + response.getMessage());
+ assertFalse(response.getMessage(), true); // force the test to fails in this case
+ }
+ };
+
+ // Just a Utility class that wraps the main logic for the OK listener
+ private abstract class StatsRestRequestAbstractListener implements RestRequest.Listener {
+ @Override
+ public void onResponse(JSONObject response) {
+ boolean parseError = false;
+ try {
+ parseResponse(response);
+ } catch (JSONException e) {
+ parseError = true;
+ AppLog.e(AppLog.T.STATS, e);
+ }
+ assertFalse(parseError);
+ }
+ abstract void parseResponse(JSONObject response) throws JSONException;
+ }
+
+ public void testClicks() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ ClicksModel model = new ClicksModel("123456",response);
+ assertEquals(model.getTotalClicks(), 2);
+ assertEquals(model.getOtherClicks(), 0);
+ assertNotNull(model.getClickGroups());
+ assertEquals(model.getClickGroups().size(), 2);
+
+ ClickGroupModel first = model.getClickGroups().get(0);
+ assertEquals(first.getIcon(), "");
+ assertEquals(first.getUrl(), "http://astralbodies.net/blog/2013/10/31/paying-attention-at-automattic/");
+ assertEquals(first.getName(), "astralbodies.net/blog/2013/10/31/paying-attention-at-automattic/");
+ assertEquals(first.getViews(), 1);
+ assertNull(first.getClicks());
+
+ ClickGroupModel second = model.getClickGroups().get(1);
+ assertEquals(second.getIcon(), "");
+ assertEquals(second.getUrl(), "https://devforums.apple.com/thread/86137");
+ assertEquals(second.getName(), "devforums.apple.com/thread/86137");
+ assertEquals(second.getViews(), 1);
+ assertNull(second.getClicks());
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/clicks",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testClicksForMonth() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ ClicksModel model = new ClicksModel("1234567890",response);
+ assertEquals(model.getTotalClicks(), 9);
+ assertEquals(model.getOtherClicks(), 0);
+ assertNotNull(model.getClickGroups());
+ assertEquals(model.getClickGroups().size(), 6);
+
+ ClickGroupModel first = model.getClickGroups().get(0);
+ assertEquals(first.getIcon(), "");
+ assertEquals(first.getUrl(), "http://wp.com/");
+ assertEquals(first.getName(), "wp.com");
+ assertEquals(first.getViews(), 3);
+ assertNull(first.getClicks());
+
+ ClickGroupModel second = model.getClickGroups().get(1);
+ assertEquals(second.getIcon(), "");
+ assertNull(second.getUrl());
+ assertEquals(second.getName(), "blog.wordpress.tv");
+ assertEquals(second.getViews(), 2);
+ assertNotNull(second.getClicks());
+ assertEquals(second.getClicks().size(), 2);
+
+ SingleItemModel firstChild = second.getClicks().get(0);
+ assertNotNull(firstChild);
+ assertEquals(firstChild.getUrl(), "http://blog.wordpress.tv/2014/10/03/build-your-audience-recent-wordcamp-videos-from-experienced-content-creators/");
+ assertEquals(firstChild.getTitle(), "blog.wordpress.tv/2014/10/03/build-your-audience-recent-wordcamp-videos-from-experienced-content-creators/");
+ assertEquals(firstChild.getTotals(), 1);
+ assertEquals(firstChild.getIcon(), "");
+
+
+ SingleItemModel secondChild = second.getClicks().get(1);
+ assertNotNull(secondChild);
+ assertEquals(secondChild.getUrl(), "http://blog.wordpress.tv/2014/10/29/wordcamp-san-francisco-2014-state-of-the-word-keynote/");
+ assertEquals(secondChild.getTitle(), "blog.wordpress.tv/2014/10/29/wordcamp-san-francisco-2014-state-of-the-word-keynote/");
+ assertEquals(secondChild.getTotals(), 1);
+ assertEquals(secondChild.getIcon(), "");
+
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/1234567890/stats/clicks",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testCommentsDay() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ CommentsModel model = new CommentsModel("123456", response);
+ assertEquals(model.getTotalComments(), 177);
+ assertEquals(model.getMonthlyComments(), 2);
+ assertEquals(model.getMostActiveTime(), "08:00");
+ assertEquals(model.getMostActiveDay(), "");
+
+ assertNotNull(model.getAuthors());
+ assertTrue(model.getAuthors().size() == 7);
+ AuthorModel author = model.getAuthors().get(0);
+ assertEquals(author.getName(), "Aaron Douglas");
+ assertEquals(author.getViews(), 20);
+ assertEquals(author.getAvatar(),
+ "https://1.gravatar.com/avatar/db127a496309f2717657d6f6167abd49?s=64&" +
+ "d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&r=R"
+ );
+ assertNull(author.getFollowData());
+ assertNull(author.getPosts());
+
+ assertNotNull(model.getPosts());
+ assertTrue(model.getPosts().size() == 11);
+ SingleItemModel mostCommentedPost = model.getPosts().get(0);
+ assertEquals(mostCommentedPost.getItemID(), "67");
+ assertEquals(mostCommentedPost.getTotals(), 29);
+ assertEquals(mostCommentedPost.getTitle(), "Mac Screen Sharing (VNC) & White Screen");
+ assertEquals(mostCommentedPost.getUrl(), "http://astralbodi.es/2010/05/02/mac-screen-sharing-vnc-white-screen/");
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/comments",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testCountryViewsDay() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ GeoviewsModel model = new GeoviewsModel("123456", response);
+ assertEquals(model.getOtherViews(), 17);
+ assertEquals(model.getTotalViews(), 55);
+
+ assertNotNull(model.getCountries());
+ assertEquals(model.getCountries().size(), 10);
+ GeoviewModel first = model.getCountries().get(0);
+ assertEquals(first.getCountryFullName(), "United States");
+ assertEquals(first.getFlagIconURL(), "https://secure.gravatar.com/blavatar/5a83891a81b057fed56930a6aaaf7b3c?s=48");
+ assertEquals(first.getFlatFlagIconURL(), "https://secure.gravatar.com/blavatar/9f4faa5ad0c723474f7a6d810172447c?s=48");
+ assertEquals(first.getViews(), 8);
+ GeoviewModel second = model.getCountries().get(1);
+ assertEquals(second.getCountryFullName(), "Taiwan");
+ assertEquals(second.getFlagIconURL(), "https://secure.gravatar.com/blavatar/f983fff0dda7387746b697cfd865e657?s=48");
+ assertEquals(second.getFlatFlagIconURL(), "https://secure.gravatar.com/blavatar/2c224480a40527ee89d7340d4396e8e6?s=48");
+ assertEquals(second.getViews(), 6);
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/country-views",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testFollowersEmail() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ FollowersModel model = new FollowersModel("123456", response);
+ assertEquals(model.getTotalEmail(), 2931);
+ assertEquals(model.getTotalWPCom(), 7926165);
+ assertEquals(model.getTotal(), 2931);
+ assertEquals(model.getPage(), 1);
+ assertEquals(model.getPages(), 419);
+
+ assertNotNull(model.getFollowers());
+ assertEquals(model.getFollowers().size(), 7);
+ FollowerModel first = model.getFollowers().get(0);
+ assertEquals(first.getAvatar(), "https://2.gravatar.com/avatar/e82142697283897ad7444810e5975895?s=64" +
+ "&d=https%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&r=G");
+ assertEquals(first.getLabel(), "user1@example.com");
+ assertNull(first.getURL());
+ assertNull(first.getFollowData());
+ assertEquals(first.getDateSubscribed(), "2014-12-16T11:24:41+00:00");
+ FollowerModel last = model.getFollowers().get(6);
+ assertEquals(last.getAvatar(), "https://0.gravatar.com/avatar/3b37f38b63ce4f595cc5cfbaadb10938?s=64" +
+ "&d=https%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&r=G");
+ assertEquals(last.getLabel(), "user7@example.com");
+ assertNull(last.getURL());
+ assertNull(last.getFollowData());
+ assertEquals(last.getDateSubscribed(), "2014-12-15T15:09:01+00:00");
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/followers",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testFollowersWPCOM() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ FollowersModel model = new FollowersModel("1234567890", response);
+ assertEquals(model.getTotalEmail(), 2930);
+ assertEquals(model.getTotalWPCom(), 7925800);
+ assertEquals(model.getTotal(), 7925800);
+ assertEquals(model.getPage(), 1);
+ assertEquals(model.getPages(), 1132258);
+
+ assertNotNull(model.getFollowers());
+ assertEquals(model.getFollowers().size(), 7);
+ FollowerModel first = model.getFollowers().get(0);
+ assertEquals(first.getAvatar(), "https://0.gravatar.com/avatar/624b89cb0c8b9136f9629dd7bcab0517?s=64" +
+ "&d=https%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&r=G");
+ assertEquals(first.getLabel(), "ritu929");
+ assertEquals(first.getURL(), "http://ritu9blog.wordpress.com");
+ assertEquals(first.getDateSubscribed(), "2014-12-16T14:53:21+00:00");
+ assertNotNull(first.getFollowData());
+ FollowDataModel followDatamodel = first.getFollowData();
+ assertFalse(followDatamodel.isFollowing());
+ assertEquals(followDatamodel.getType(), "follow");
+
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/1234567890/stats/followers",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testPostDetails() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ PostViewsModel model = new PostViewsModel(response);
+ assertNotNull(model.getOriginalResponse());
+
+ assertEquals(model.getDate(), "2015-03-04");
+ assertEquals(model.getHighestMonth(), 278);
+ assertEquals(model.getHighestDayAverage(), 8);
+ assertEquals(model.getHighestWeekAverage(), 8);
+
+ assertNotNull(model.getDayViews());
+ assertEquals(model.getDayViews()[0].getViews(), 0);
+ assertEquals(model.getDayViews()[0].getPeriod(), "2014-06-04");
+ assertEquals(model.getDayViews()[model.getDayViews().length-1].getViews(), 8);
+ assertEquals(model.getDayViews()[model.getDayViews().length - 1].getPeriod(), "2015-03-04");
+
+ assertNotNull(model.getYears().size());
+ assertEquals(model.getYears().size(), 2);
+ assertEquals(model.getYears().get(0).getTotal(), 1097);
+ assertEquals(model.getYears().get(0).getLabel(), "2014");
+ assertEquals(model.getYears().get(0).getMonths().size(), 7);
+ assertEquals(model.getYears().get(0).getMonths().get(0).getMonth(), "6");
+ assertEquals(model.getYears().get(1).getTotal(), 226);
+ assertEquals(model.getYears().get(1).getLabel(), "2015");
+
+ assertNotNull(model.getWeeks().size());
+ assertEquals(model.getWeeks().size(), 6);
+
+ assertNotNull(model.getAverages());
+ assertEquals(model.getAverages().size(), 2);
+ assertEquals(model.getAverages().get(0).getTotal(), 5);
+ assertEquals(model.getAverages().get(0).getLabel(), "2014");
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/post/123",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testReferrers() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ ReferrersModel model = new ReferrersModel("123456", response);
+ assertEquals(model.getTotalViews(), 2161);
+ assertEquals(model.getOtherViews(), 938);
+ assertNotNull(model.getGroups());
+ assertEquals(model.getGroups().size(), 10);
+
+ // first group in the response
+ ReferrerGroupModel gModel = model.getGroups().get(0);
+ assertEquals(gModel.getName(), "Search Engines");
+ assertEquals(gModel.getGroupId(), "Search Engines");
+ assertEquals(gModel.getIcon(), "https://wordpress.com/i/stats/search-engine.png");
+ assertEquals(gModel.getTotal(), 480);
+ assertNotNull(gModel.getResults());
+ assertEquals(gModel.getResults().size(), 7);
+
+ // 2nd level item
+ ReferrerResultModel refResultModel = gModel.getResults().get(0);
+ assertEquals(refResultModel.getName(), "Google Search");
+ assertEquals(refResultModel.getIcon(), "https://secure.gravatar.com/blavatar/6741a05f4bc6e5b65f504c4f3df388a1?s=48");
+ assertEquals(refResultModel.getViews(), 461);
+ assertNotNull(refResultModel.getChildren());
+ assertNull(refResultModel.getUrl()); //has childs. No URL.
+
+ // 3rd level items
+ SingleItemModel child = refResultModel.getChildren().get(0);
+ assertEquals(child.getUrl(), "http://www.google.com/");
+ assertEquals(child.getTitle(), "google.com");
+ assertEquals(child.getIcon(), "https://secure.gravatar.com/blavatar/ff90821feeb2b02a33a6f9fc8e5f3fcd?s=48");
+ assertEquals(child.getTotals(), 176);
+ child = refResultModel.getChildren().get(10);
+ assertEquals(child.getUrl(), "http://www.google.co.jp");
+ assertEquals(child.getTitle(), "google.co.jp");
+ assertEquals(child.getIcon(), "https://secure.gravatar.com/blavatar/a28b8206a6562f6098688508d4665905?s=48");
+ assertEquals(child.getTotals(), 6);
+
+
+ // 7th group in the response
+ gModel = model.getGroups().get(6);
+ assertEquals(gModel.getName(), "ma.tt");
+ assertEquals(gModel.getGroupId(), "ma.tt");
+ assertEquals(gModel.getIcon(), "https://secure.gravatar.com/blavatar/733a27a6b983dd89d6dd64d0445a3e8e?s=48");
+ assertEquals(gModel.getTotal(), 56);
+ assertNotNull(gModel.getResults());
+ assertEquals(gModel.getResults().size(), 11);
+
+ // 2nd level item
+ refResultModel = gModel.getResults().get(0);
+ assertEquals(refResultModel.getName(), "ma.tt");
+ assertEquals(refResultModel.getUrl(), "http://ma.tt/");
+ assertEquals(refResultModel.getIcon(), "");
+ assertEquals(refResultModel.getViews(), 34); // No childs. Has URL.
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/referrers",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testTagsCategories() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ TagsContainerModel model = new TagsContainerModel("123456", response);
+ assertEquals(model.getDate(), "2014-12-16");
+ assertNotNull(model.getTags());
+ assertEquals(model.getTags().size(), 10);
+
+ TagsModel tag = model.getTags().get(0);
+ assertEquals(tag.getViews(), 461);
+ assertNotNull(tag.getTags());
+ assertEquals(tag.getTags().size(), 1);
+ assertNotNull(tag.getTags());
+ assertEquals(tag.getTags().get(0).getName(), "Uncategorized");
+ assertEquals(tag.getTags().get(0).getType(), "category");
+ assertEquals(tag.getTags().get(0).getLink(), "http://astralbodi.es/category/uncategorized/");
+
+ tag = model.getTags().get(9);
+ assertEquals(tag.getViews(), 41);
+ assertEquals(tag.getTags().get(0).getName(), "networking");
+ assertEquals(tag.getTags().get(0).getType(), "tag");
+ assertEquals(tag.getTags().get(0).getLink(), "http://astralbodi.es/tag/networking/");
+ assertEquals(tag.getTags().get(1).getName(), "unix");
+ assertEquals(tag.getTags().get(1).getType(), "tag");
+ assertEquals(tag.getTags().get(1).getLink(), "http://astralbodi.es/tag/unix/");
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/tags",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testTopPost() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ TopPostsAndPagesModel model = new TopPostsAndPagesModel("123456", response);
+ assertNotNull(model.getTopPostsAndPages());
+ assertEquals(model.getTopPostsAndPages().size(), 10);
+
+ PostModel postModel = model.getTopPostsAndPages().get(0);
+ assertEquals(postModel.getItemID(), "39806");
+ assertEquals(postModel.getTotals(), 2420);
+ assertEquals(postModel.getTitle(), "Home");
+ assertEquals(postModel.getUrl(), "http://automattic.com/home/");
+ assertEquals(postModel.getDate(), StatsUtils.toMs("2011-08-30 21:47:38"));
+ assertEquals(postModel.getPostType(), "page");
+
+ postModel = model.getTopPostsAndPages().get(9);
+ assertEquals(postModel.getItemID(), "39254");
+ assertEquals(postModel.getTotals(), 56);
+ assertEquals(postModel.getTitle(), "Growth Explorer");
+ assertEquals(postModel.getUrl(), "http://automattic.com/work-with-us/growth-explorer/");
+ assertEquals(postModel.getDate(), StatsUtils.toMs("2011-08-25 19:37:27"));
+ assertEquals(postModel.getPostType(), "page");
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/top-posts",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testTopPostEmptyURL() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ TopPostsAndPagesModel model = new TopPostsAndPagesModel("1234567890", response);
+ assertNotNull(model.getTopPostsAndPages());
+ assertEquals(model.getTopPostsAndPages().size(), 10);
+
+ PostModel postModel = model.getTopPostsAndPages().get(0);
+ assertEquals(postModel.getItemID(), "750");
+ assertEquals(postModel.getTotals(), 7);
+ assertEquals(postModel.getTitle(), "Asynchronous unit testing Core Data with Xcode 6");
+ assertEquals(postModel.getUrl(), ""); // This post has no URL?!? Unpublished post that was prev published?
+ assertEquals(postModel.getDate(), StatsUtils.toMs("2014-08-06 14:52:11"));
+ assertEquals(postModel.getPostType(), "post");
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/1234567890/stats/top-posts",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testInsightsAllTime() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ InsightsAllTimeModel model = new InsightsAllTimeModel("12345",response);
+ assertEquals(model.getPosts(), 128);
+ assertEquals(model.getViews(), 56687);
+ assertEquals(model.getVisitors(), 42893);
+ assertEquals(model.getViewsBestDayTotal(), 3485);
+ assertNotNull(model.getViewsBestDay());
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testInsightsToday() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ InsightsTodayModel model = new InsightsTodayModel("123456", response);
+ assertEquals(model.getDate(), "2014-10-28");
+ assertEquals(model.getBlogID(), "123456");
+ assertEquals(model.getViews(), 56);
+ assertEquals(model.getVisitors(), 44);
+ assertEquals(model.getLikes(), 1);
+ assertEquals(model.getReblogs(), 2);
+ assertEquals(model.getComments(), 3);
+ assertEquals(model.getFollowers(), 56);
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/summary",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testInsightsPopular() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ InsightsPopularModel model = new InsightsPopularModel("123456", response);
+ assertEquals(model.getHighestHour(), 9);
+ assertEquals(model.getHighestDayOfWeek(), 5);
+ assertEquals(model.getHighestDayPercent(), 30.532081377152);
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/insights",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testVideoPlaysNoData() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ VideoPlaysModel model = new VideoPlaysModel("123456", response);
+ assertEquals(model.getOtherPlays(), 0);
+ assertEquals(model.getTotalPlays(), 0);
+ assertNotNull(model.getPlays());
+ assertEquals(model.getPlays().size(), 0);
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/video-plays",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testVideoPlays() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ VideoPlaysModel model = new VideoPlaysModel("1234567890", response);
+ assertEquals(model.getOtherPlays(), 0);
+ assertEquals(model.getTotalPlays(), 2);
+ assertNotNull(model.getPlays());
+ assertEquals(model.getPlays().size(), 1);
+ SingleItemModel videoItemModel = model.getPlays().get(0);
+ assertEquals(videoItemModel.getTitle(), "Test Video");
+ assertEquals(videoItemModel.getUrl(), "http://maplebaconyummies.wordpress.com/wp-admin/media.php?action=edit&attachment_id=144");
+ assertEquals(videoItemModel.getItemID(), "144");
+ assertEquals(videoItemModel.getTotals(), 2);
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/1234567890/stats/video-plays",
+ null,
+ listener,
+ errListener
+ );
+ }
+
+ public void testVisits() throws Exception {
+ StatsRestRequestAbstractListener listener = new StatsRestRequestAbstractListener() {
+ @Override
+ void parseResponse(JSONObject response) throws JSONException {
+ VisitsModel model = new VisitsModel("123456", response);
+ assertNotNull(model.getVisits());
+ assertNotNull(model.getUnit());
+ assertNotNull(model.getDate());
+
+ assertEquals(model.getVisits().size(), 30);
+ assertEquals(model.getUnit(), "day");
+
+ VisitModel visitModel = model.getVisits().get(0);
+ assertEquals(visitModel.getViews(), 7808);
+ assertEquals(visitModel.getVisitors(), 4331);
+ assertEquals(visitModel.getLikes(), 0);
+ assertEquals(visitModel.getComments(), 0);
+ assertEquals(visitModel.getPeriod(), "2014-10-08");
+
+ }
+ };
+
+ mRestClient.makeRequest(Request.Method.POST, "https://public-api.wordpress.com/rest/v1.1/sites/123456/stats/visits",
+ null,
+ listener,
+ errListener
+ );
+ }
+}