jenkins-bot has submitted this change and it was merged.
Change subject: API client for reading lists, part 1
......................................................................
API client for reading lists, part 1
read only operations:
* get lists
* get pages in a list
Bug: T126750
Change-Id: Ie0b719351e9eaa08716cbfc131fb2e0b5a057b01
---
M app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java
A app/src/main/java/org/wikipedia/readinglist/api/ReadingList.java
A app/src/main/java/org/wikipedia/readinglist/api/ReadingListDataClient.java
A app/src/main/java/org/wikipedia/readinglist/api/ReadingListPageTitle.java
A app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingList.java
A
app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitle.java
A
app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitlesResponse.java
A
app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListsResponse.java
A app/src/test/java/org/wikipedia/dataclient/RetrofitClientBaseTest.java
A
app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListPageTitlesTest.java
A
app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListsTest.java
A app/src/test/res/raw/gather_get_collection_pages.json
A app/src/test/res/raw/gather_get_collections.json
A app/src/test/res/raw/gather_not_logged_in.json
M config/checkstyle.xml
15 files changed, 586 insertions(+), 0 deletions(-)
Approvals:
Niedzielski: Looks good to me, approved
jenkins-bot: Verified
diff --git
a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java
b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java
index 1982a82..179c9aa 100644
--- a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java
+++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResponse.java
@@ -1,17 +1,38 @@
package org.wikipedia.dataclient.mwapi;
+import org.wikipedia.server.mwapi.MwServiceError;
+
import com.google.gson.annotations.SerializedName;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+
public class MwQueryResponse<T> {
+ @Nullable
+ private MwServiceError error;
+
@SerializedName("batchcomplete")
private boolean batchComplete;
+
+ @Nullable
private T query;
+
+ @Nullable
+ public MwServiceError getError() {
+ return error;
+ }
public boolean batchComplete() {
return batchComplete;
}
+ @Nullable
public T query() {
return query;
}
+
+ @VisibleForTesting
+ protected void setQuery(@Nullable T query) {
+ this.query = query;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/wikipedia/readinglist/api/ReadingList.java
b/app/src/main/java/org/wikipedia/readinglist/api/ReadingList.java
new file mode 100644
index 0000000..ffc6e1e
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/readinglist/api/ReadingList.java
@@ -0,0 +1,22 @@
+package org.wikipedia.readinglist.api;
+
+/**
+ * A list of pages that are interesting to read later.
+ */
+public interface ReadingList {
+
+ /** @return the ID of this collection */
+ int getId();
+
+ /** @return the user visible label of this collection */
+ String getLabel();
+
+ /** @return the timestamp of when this collection was last updated */
+ String getLastUpdated();
+
+ /** @return the number of pages contained in this collection */
+ int getCount();
+
+ /** @return a link to a thumbnail URL for this collection */
+ String getImageUrl();
+}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/api/ReadingListDataClient.java
b/app/src/main/java/org/wikipedia/readinglist/api/ReadingListDataClient.java
new file mode 100644
index 0000000..aef2853
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/readinglist/api/ReadingListDataClient.java
@@ -0,0 +1,57 @@
+package org.wikipedia.readinglist.api;
+
+import org.wikipedia.Site;
+import
org.wikipedia.readinglist.api.legacy.LegacyReadingListPageTitlesResponse;
+import org.wikipedia.readinglist.api.legacy.LegacyReadingListsResponse;
+import org.wikipedia.dataclient.RestAdapterFactory;
+
+import retrofit.http.GET;
+import retrofit.http.Query;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
+
+/**
+ * Gets and posts collection related data from and to the server.
+ */
+public class ReadingListDataClient {
+ private static final Site SITE = new Site("en.wikipedia.org");
+
+ @NonNull private final Api client;
+
+ public ReadingListDataClient() {
+ client = RestAdapterFactory.newInstance(SITE).create(Api.class);
+ }
+
+ @VisibleForTesting
+ public ReadingListDataClient(String baseUrl) {
+ client = RestAdapterFactory.newInstance(SITE,
baseUrl).create(Api.class);
+ }
+
+ /**
+ * Gets the Collections of the current user.
+ */
+ public LegacyReadingListsResponse getReadingLists() {
+ return client.getReadingLists();
+ }
+
+ /**
+ * Gets the list of page titles of a single ReadingList of the current
user.
+ *
+ * @param listId ID of the reading list to be retrieved
+ */
+ public LegacyReadingListPageTitlesResponse getMemberPages(int listId) {
+ return client.getMemberPages(listId);
+ }
+
+ private interface Api {
+ String ACTION_QUERY_LIST =
"/w/api.php?format=json&formatversion=2&action=query&list=";
+
+ @GET(ACTION_QUERY_LIST + "lists"
+ +
"&lstprop=label%7Cdescription%7Cpublic%7Creview%7Cimage%7Ccount%7Cupdated%7Cowner")
+ LegacyReadingListsResponse getReadingLists();
+
+ @GET(ACTION_QUERY_LIST + "listpages")
+ LegacyReadingListPageTitlesResponse getMemberPages(@Query("lspid") int
collectionId);
+ }
+}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/api/ReadingListPageTitle.java
b/app/src/main/java/org/wikipedia/readinglist/api/ReadingListPageTitle.java
new file mode 100644
index 0000000..ec3065b
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/readinglist/api/ReadingListPageTitle.java
@@ -0,0 +1,8 @@
+package org.wikipedia.readinglist.api;
+
+/**
+ * An entry in a collection representing a page title in a reading list.
+ */
+public interface ReadingListPageTitle {
+ String getPrefixedTitle();
+}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingList.java
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingList.java
new file mode 100644
index 0000000..cf4857e
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingList.java
@@ -0,0 +1,58 @@
+package org.wikipedia.readinglist.api.legacy;
+
+import org.wikipedia.readinglist.api.ReadingList;
+
+import com.google.gson.annotations.SerializedName;
+
+import android.support.annotation.VisibleForTesting;
+
+/**
+ * Gson POJO for an API specific {@link ReadingList}.
+ */
+public class LegacyReadingList implements ReadingList {
+ @VisibleForTesting int id;
+ @VisibleForTesting String label;
+ @VisibleForTesting String owner;
+ @VisibleForTesting String perm;
+ @VisibleForTesting String description;
+ @VisibleForTesting String updated;
+ @VisibleForTesting int count;
+ @VisibleForTesting @SerializedName("imageurl") String imageUrl;
+
+ @Override
+ public int getId() {
+ return id;
+ }
+
+ @Override
+ public String getLabel() {
+ return label;
+ }
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public String getPerm() {
+ return perm;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getLastUpdated() {
+ return updated;
+ }
+
+ @Override
+ public int getCount() {
+ return count;
+ }
+
+ @Override
+ public String getImageUrl() {
+ return imageUrl;
+ }
+}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitle.java
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitle.java
new file mode 100644
index 0000000..9acba37
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitle.java
@@ -0,0 +1,24 @@
+package org.wikipedia.readinglist.api.legacy;
+
+import org.wikipedia.readinglist.api.ReadingListPageTitle;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * Gson POJO for a member of a reading list.
+ */
+public class LegacyReadingListPageTitle implements ReadingListPageTitle {
+ @SerializedName("ns")
+ private int namespaceId;
+ @SerializedName("title")
+ private String prefixedTitle;
+
+ public int getNamespaceId() {
+ return namespaceId;
+ }
+
+ @Override
+ public String getPrefixedTitle() {
+ return prefixedTitle;
+ }
+}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitlesResponse.java
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitlesResponse.java
new file mode 100644
index 0000000..563c72e
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListPageTitlesResponse.java
@@ -0,0 +1,24 @@
+package org.wikipedia.readinglist.api.legacy;
+
+import org.wikipedia.dataclient.mwapi.MwQueryResponse;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.util.List;
+
+/**
+ * Gson POJO for the specific API response we get after requesting the list of
page titles
+ * contained in a given reading list.
+ */
+public class LegacyReadingListPageTitlesResponse
+ extends MwQueryResponse<LegacyReadingListPageTitlesResponse.ListPages>
{
+
+ public static class ListPages {
+ @SerializedName("listpages")
+ private List<LegacyReadingListPageTitle> listPages;
+
+ public List<LegacyReadingListPageTitle> getMemberPages() {
+ return listPages;
+ }
+ }
+}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListsResponse.java
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListsResponse.java
new file mode 100644
index 0000000..492034c
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/readinglist/api/legacy/LegacyReadingListsResponse.java
@@ -0,0 +1,24 @@
+package org.wikipedia.readinglist.api.legacy;
+
+import org.wikipedia.dataclient.mwapi.MwQueryResponse;
+
+import com.google.gson.annotations.SerializedName;
+
+import android.support.annotation.VisibleForTesting;
+
+import java.util.List;
+
+/**
+ * Gson POJO for a list of API specific reading lists.
+ */
+public class LegacyReadingListsResponse
+ extends MwQueryResponse<LegacyReadingListsResponse.LegacyLists> {
+
+ public static class LegacyLists {
+ @VisibleForTesting @SerializedName("lists") List<LegacyReadingList>
lists;
+
+ public List<LegacyReadingList> getLists() {
+ return lists;
+ }
+ }
+}
diff --git
a/app/src/test/java/org/wikipedia/dataclient/RetrofitClientBaseTest.java
b/app/src/test/java/org/wikipedia/dataclient/RetrofitClientBaseTest.java
new file mode 100644
index 0000000..6ee553f
--- /dev/null
+++ b/app/src/test/java/org/wikipedia/dataclient/RetrofitClientBaseTest.java
@@ -0,0 +1,50 @@
+package org.wikipedia.dataclient;
+
+import org.wikipedia.readinglist.api.ReadingListDataClient;
+import org.wikipedia.test.TestWebServer;
+
+import org.junit.After;
+import org.junit.Before;
+
+import android.support.annotation.NonNull;
+
+/**
+ * A base class for test cases of Retrofit clients using the MockWebServer.
+ */
+public abstract class RetrofitClientBaseTest {
+ private TestWebServer server = new TestWebServer();
+
+ @Before
+ public void setUp() throws Exception {
+ server.setUp();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ server.tearDown();
+ }
+
+ protected void runTest(String responseBody, BaseTestSubject subject)
+ throws InterruptedException {
+
+ server.enqueue(responseBody);
+ subject.execute();
+ server.takeRequest();
+ }
+
+ protected abstract class BaseTestSubject {
+ @NonNull
+ private final ReadingListDataClient client;
+
+ @NonNull
+ public ReadingListDataClient getClient() {
+ return client;
+ }
+
+ public abstract void execute();
+
+ protected BaseTestSubject() {
+ client = new ReadingListDataClient(server.getUrl("/").toString());
+ }
+ }
+}
diff --git
a/app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListPageTitlesTest.java
b/app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListPageTitlesTest.java
new file mode 100644
index 0000000..a8c28c9
--- /dev/null
+++
b/app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListPageTitlesTest.java
@@ -0,0 +1,119 @@
+package org.wikipedia.readinglist.api.legacy;
+
+import org.wikipedia.dataclient.RetrofitClientBaseTest;
+import org.wikipedia.test.TestFileUtil;
+import org.wikipedia.test.TestRunner;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import android.support.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+@RunWith(TestRunner.class)
+public class GetLegacyReadingListPageTitlesTest extends RetrofitClientBaseTest
{
+ private static final int WATCHLIST_ID = 0;
+
+ @Test
+ public void testGetCollectionPagesNotLoggedIn() throws Exception {
+
getCollectionPages(TestFileUtil.readRawFile("gather_not_logged_in.json"), null);
+ }
+
+ @Test
+ public void testCollectionPages() throws Exception {
+ MockLegacyReadingListPageTitlesResponse expected = new
MockLegacyReadingListPageTitlesResponse();
+ List<LegacyReadingListPageTitle> list = new ArrayList<>();
+ list.add(new MockLegacyReadingListPageTitle(0, "Test"));
+ list.add(new MockLegacyReadingListPageTitle(1, "Talk:Test"));
+ expected.setQuery(new MockPageTitlesList(list));
+
+
getCollectionPages(TestFileUtil.readRawFile("gather_get_collection_pages.json"),
+ expected);
+ }
+
+ private void getCollectionPages(String responseBody,
+ @Nullable
LegacyReadingListPageTitlesResponse expected)
+ throws Exception {
+ runTest(responseBody, new GetCollectionPagesSubject(expected));
+ }
+
+ private class GetCollectionPagesSubject extends BaseTestSubject {
+ @Nullable
+ private final LegacyReadingListPageTitlesResponse expected;
+
+ GetCollectionPagesSubject(@Nullable
LegacyReadingListPageTitlesResponse expected) {
+ super();
+ this.expected = expected;
+ }
+
+ public void execute() {
+ LegacyReadingListPageTitlesResponse actual =
getClient().getMemberPages(WATCHLIST_ID);
+ if (expected != null) {
+ List<LegacyReadingListPageTitle> act =
actual.query().getMemberPages();
+ List<LegacyReadingListPageTitle> exp =
expected.query().getMemberPages();
+ assertThat(act.size(), is(exp.size()));
+ for (int i = 0; i < act.size(); i++) {
+ assertPageIsEqual(act.get(i), exp.get(i), i);
+ }
+ } else {
+ assertThat(actual.getError().getTitle(), is("lstnotloggedin"));
+ }
+ }
+
+ private void assertPageIsEqual(LegacyReadingListPageTitle act,
LegacyReadingListPageTitle exp,
+ int index) {
+ assertThat("namespaceId mismatch in index " + index,
+ act.getNamespaceId(), is(exp.getNamespaceId()));
+ assertThat("title mismatch in index " + index,
+ act.getPrefixedTitle(), is(exp.getPrefixedTitle()));
+ }
+ }
+
+ /** This class was added to allow accessing #setQuery from this test. */
+ private static final class MockLegacyReadingListPageTitlesResponse
+ extends LegacyReadingListPageTitlesResponse {
+ @Override
+ protected void setQuery(@Nullable
LegacyReadingListPageTitlesResponse.ListPages query) {
+ super.setQuery(query);
+ }
+ }
+
+ private static final class MockPageTitlesList
+ extends LegacyReadingListPageTitlesResponse.ListPages {
+
+ private final List<LegacyReadingListPageTitle> mockList;
+
+ private MockPageTitlesList(List<LegacyReadingListPageTitle> list) {
+ this.mockList = list;
+ }
+
+ public List<LegacyReadingListPageTitle> getMemberPages() {
+ return mockList;
+ }
+ }
+
+ private static final class MockLegacyReadingListPageTitle extends
LegacyReadingListPageTitle {
+ private final int mockNamespaceId;
+ private final String mockTitle;
+
+ MockLegacyReadingListPageTitle(int nameSpaceId, String prefixedTitle) {
+ mockNamespaceId = nameSpaceId;
+ mockTitle = prefixedTitle;
+ }
+
+ @Override
+ public int getNamespaceId() {
+ return mockNamespaceId;
+ }
+
+ @Override
+ public String getPrefixedTitle() {
+ return mockTitle;
+ }
+ }
+}
diff --git
a/app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListsTest.java
b/app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListsTest.java
new file mode 100644
index 0000000..d8b6122
--- /dev/null
+++
b/app/src/test/java/org/wikipedia/readinglist/api/legacy/GetLegacyReadingListsTest.java
@@ -0,0 +1,124 @@
+package org.wikipedia.readinglist.api.legacy;
+
+import org.wikipedia.dataclient.RetrofitClientBaseTest;
+import org.wikipedia.test.TestFileUtil;
+import org.wikipedia.test.TestRunner;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import android.support.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+@RunWith(TestRunner.class)
+public class GetLegacyReadingListsTest extends RetrofitClientBaseTest {
+
+ private static final int LIST_ID = 11;
+ private static final int COUNT = 4;
+
+ @Test
+ public void testGetCollectionsNotLoggedIn() throws Exception {
+ getCollections(TestFileUtil.readRawFile("gather_not_logged_in.json"),
null);
+ }
+
+ @Test
+ public void testGetCollections() throws Exception {
+ MockLegacyReadingListsResponse expected = new
MockLegacyReadingListsResponse();
+ List<LegacyReadingList> lists = new ArrayList<>();
+
+ LegacyReadingList collection1 = new MockLegacyReadingList(0,
"Watchlist",
+ "someUser", "private", "", "2016-02-19T00:05:07Z", 1);
+ lists.add(collection1);
+
+ MockLegacyReadingList collection2 = new MockLegacyReadingList(LIST_ID,
"firstlist",
+ "someUser", "public", "a simple test list",
"2016-01-06T20:19:58Z", COUNT);
+
collection2.setImageUrl("//upload.wikimedia.org/wikipedia/commons/7/79/sample_picture.jpg");
+ lists.add(collection2);
+ expected.setQuery(new MockResponseList(lists));
+
+
getCollections(TestFileUtil.readRawFile("gather_get_collections.json"),
expected);
+ }
+
+ private void getCollections(String responseBody, @Nullable
LegacyReadingListsResponse expected)
+ throws Exception {
+ runTest(responseBody, new GetCollectionsSubject(expected));
+ }
+
+ private class GetCollectionsSubject extends BaseTestSubject {
+ @Nullable
+ private final LegacyReadingListsResponse expected;
+
+ GetCollectionsSubject(@Nullable LegacyReadingListsResponse expected) {
+ super();
+ this.expected = expected;
+ }
+
+ public void execute() {
+ LegacyReadingListsResponse actual = getClient().getReadingLists();
+ if (expected != null) {
+ List<LegacyReadingList> act = actual.query().getLists();
+ List<LegacyReadingList> exp = expected.query().getLists();
+ assertThat(act.size(), is(exp.size()));
+ for (int i = 0; i < act.size(); i++) {
+ assertThatCollectionsAreEqual(act.get(i), exp.get(i), i);
+ }
+ } else {
+ assertThat(actual.getError().getTitle(), is("lstnotloggedin"));
+ }
+ }
+
+ private void assertThatCollectionsAreEqual(LegacyReadingList act,
LegacyReadingList exp,
+ int index) {
+ assertThat("index " + index, act.getId(), is(exp.getId()));
+ assertThat("index " + index, act.getLabel(), is(exp.getLabel()));
+ assertThat("index " + index, act.getOwner(), is(exp.getOwner()));
+ assertThat("index " + index, act.getPerm(), is(exp.getPerm()));
+ assertThat("index " + index, act.getDescription(),
is(exp.getDescription()));
+ assertThat("index " + index, act.getLastUpdated(),
is(exp.getLastUpdated()));
+ assertThat("index " + index, act.getCount(), is(exp.getCount()));
+ assertThat("index " + index, act.getImageUrl(),
is(exp.getImageUrl()));
+ }
+ }
+
+ /** This class was added to allow accessing #setQuery from this test. */
+ private static final class MockLegacyReadingListsResponse extends
LegacyReadingListsResponse {
+ @Override
+ protected void setQuery(@Nullable LegacyLists query) {
+ super.setQuery(query);
+ }
+ }
+
+ private static final class MockResponseList extends
LegacyReadingListsResponse.LegacyLists {
+ private final List<LegacyReadingList> mockList;
+
+ MockResponseList(List<LegacyReadingList> list) {
+ this.mockList = list;
+ }
+
+ public List<LegacyReadingList> getLists() {
+ return mockList;
+ }
+ }
+
+ private static final class MockLegacyReadingList extends LegacyReadingList
{
+ MockLegacyReadingList(int id, String label, String owner, String perm,
String description,
+ String updated, int count) {
+ this.id = id;
+ this.label = label;
+ this.owner = owner;
+ this.perm = perm;
+ this.description = description;
+ this.updated = updated;
+ this.count = count;
+ }
+
+ void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ }
+ }
+}
diff --git a/app/src/test/res/raw/gather_get_collection_pages.json
b/app/src/test/res/raw/gather_get_collection_pages.json
new file mode 100644
index 0000000..c4a26b6
--- /dev/null
+++ b/app/src/test/res/raw/gather_get_collection_pages.json
@@ -0,0 +1,15 @@
+{
+ "batchcomplete": "",
+ "query": {
+ "listpages": [
+ {
+ "ns": 0,
+ "title": "Test"
+ },
+ {
+ "ns": 1,
+ "title": "Talk:Test"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/res/raw/gather_get_collections.json
b/app/src/test/res/raw/gather_get_collections.json
new file mode 100644
index 0000000..68d1a2d
--- /dev/null
+++ b/app/src/test/res/raw/gather_get_collections.json
@@ -0,0 +1,31 @@
+{
+ "batchcomplete": true,
+ "query": {
+ "lists": [
+ {
+ "id": 0,
+ "watchlist": true,
+ "label": "Watchlist",
+ "owner": "someUser",
+ "perm": "private",
+ "description": "",
+ "image": false,
+ "updated": "2016-02-19T00:05:07Z",
+ "count": 1
+ },
+ {
+ "id": 11,
+ "label": "firstlist",
+ "owner": "someUser",
+ "perm": "public",
+ "description": "a simple test list",
+ "image": "sample_picture",
+ "imageurl":
"//upload.wikimedia.org/wikipedia/commons/7/79/sample_picture.jpg",
+ "imagewidth": 1402,
+ "imageheight": 830,
+ "updated": "2016-01-06T20:19:58Z",
+ "count": 4
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/res/raw/gather_not_logged_in.json
b/app/src/test/res/raw/gather_not_logged_in.json
new file mode 100644
index 0000000..82ace44
--- /dev/null
+++ b/app/src/test/res/raw/gather_not_logged_in.json
@@ -0,0 +1,8 @@
+{
+ "servedby": "mw1205",
+ "error": {
+ "code": "lstnotloggedin",
+ "info": "You must be logged-in or use owner and/or ids parameters",
+ "*": "See https://en.wikipedia.org/w/api.php for API usage"
+ }
+}
\ No newline at end of file
diff --git a/config/checkstyle.xml b/config/checkstyle.xml
index f64a3d7..3e11928 100644
--- a/config/checkstyle.xml
+++ b/config/checkstyle.xml
@@ -170,6 +170,7 @@
<!-- Testing -->
<property name="ignoreAnnotationCanonicalNames" value="Rule" />
+ <property name="ignoreAnnotationCanonicalNames"
value="VisibleForTesting" />
</module>
<!-- Miscellaneous other checks. -->
<!-- See http://checkstyle.sf.net/config_misc.html -->
--
To view, visit https://gerrit.wikimedia.org/r/273495
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie0b719351e9eaa08716cbfc131fb2e0b5a057b01
Gerrit-PatchSet: 7
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Mholloway <[email protected]>
Gerrit-Reviewer: Niedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits