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