Mholloway has uploaded a new change for review.
https://gerrit.wikimedia.org/r/319132
Change subject: Add RandomSummaryClientTest
......................................................................
Add RandomSummaryClientTest
Bug: T148897
Change-Id: If6c5dcedb8103685b4ace9a1e9d9c473135f35fc
---
M app/src/main/java/org/wikipedia/feed/random/RandomCardView.java
M app/src/main/java/org/wikipedia/random/RandomSummaryClient.java
A app/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java
A app/src/test/res/raw/rb_page_summary_malformed.json
A app/src/test/res/raw/rb_page_summary_valid.json
5 files changed, 115 insertions(+), 13 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/32/319132/1
diff --git a/app/src/main/java/org/wikipedia/feed/random/RandomCardView.java
b/app/src/main/java/org/wikipedia/feed/random/RandomCardView.java
index 0214130..c9ea810 100644
--- a/app/src/main/java/org/wikipedia/feed/random/RandomCardView.java
+++ b/app/src/main/java/org/wikipedia/feed/random/RandomCardView.java
@@ -38,7 +38,7 @@
@Override
public void onClick(View view) {
if (getCallback() != null && getCard() != null) {
- new RandomSummaryClient(getCard().wikiSite(),
serviceCallback).request();
+ new RandomSummaryClient().request(getCard().wikiSite(),
serviceCallback);
}
}
diff --git a/app/src/main/java/org/wikipedia/random/RandomSummaryClient.java
b/app/src/main/java/org/wikipedia/random/RandomSummaryClient.java
index 3aa6d90..26017ff 100644
--- a/app/src/main/java/org/wikipedia/random/RandomSummaryClient.java
+++ b/app/src/main/java/org/wikipedia/random/RandomSummaryClient.java
@@ -2,6 +2,7 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.WikiSite;
@@ -9,7 +10,6 @@
import org.wikipedia.page.PageTitle;
import org.wikipedia.server.restbase.RbPageSummary;
import org.wikipedia.util.log.L;
-import org.wikipedia.zero.WikipediaZeroHandler;
import java.io.IOException;
@@ -20,18 +20,15 @@
public class RandomSummaryClient {
@NonNull private final RbCachedService<Service> cachedService
= new RbCachedService<>(Service.class);
- @NonNull private final WikipediaZeroHandler responseHeaderHandler;
- @NonNull private WikiSite wiki;
- @NonNull private Callback cb;
- public RandomSummaryClient(@NonNull WikiSite wiki, @NonNull Callback cb) {
- this.responseHeaderHandler =
WikipediaApp.getInstance().getWikipediaZeroHandler();
- this.wiki = wiki;
- this.cb = cb;
+ public Call<RbPageSummary> request(@NonNull final WikiSite wiki, @NonNull
final Callback cb) {
+ return request(cachedService.service(wiki), wiki, cb);
}
- public void request() {
- Call<RbPageSummary> call = cachedService.service(wiki).get();
+ @VisibleForTesting Call<RbPageSummary> request(@NonNull Service service,
+ @NonNull final WikiSite
wiki,
+ @NonNull final Callback cb)
{
+ Call<RbPageSummary> call = service.get();
call.enqueue(new retrofit2.Callback<RbPageSummary>() {
@Override
public void onResponse(@NonNull Call<RbPageSummary> call,
@@ -41,7 +38,7 @@
cb.onSuccess(call, null);
return;
}
- responseHeaderHandler.onHeaderCheck(response);
+
WikipediaApp.getInstance().getWikipediaZeroHandler().onHeaderCheck(response);
RbPageSummary item = response.body();
PageTitle title = new PageTitle(null, item.getTitle(),
wiki);
cb.onSuccess(call, title);
@@ -57,9 +54,10 @@
cb.onError(call, t);
}
});
+ return call;
}
- private interface Service {
+ @VisibleForTesting interface Service {
@GET("page/random/summary")
@NonNull Call<RbPageSummary> get();
}
diff --git
a/app/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java
b/app/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java
new file mode 100644
index 0000000..b1d9723
--- /dev/null
+++ b/app/src/test/java/org/wikipedia/random/RandomSummaryClientTest.java
@@ -0,0 +1,79 @@
+package org.wikipedia.random;
+
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import org.junit.Test;
+import org.wikipedia.dataclient.WikiSite;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.random.RandomSummaryClient.Callback;
+import org.wikipedia.random.RandomSummaryClient.Service;
+import org.wikipedia.server.restbase.RbPageSummary;
+import org.wikipedia.test.MockWebServerTest;
+
+import retrofit2.Call;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+public class RandomSummaryClientTest extends MockWebServerTest {
+ @NonNull private RandomSummaryClient client = new RandomSummaryClient();
+
+ @Test
+ public void testRequestEligible() throws Throwable {
+ enqueueFromFile("rb_page_summary_valid.json");
+
+ Callback cb = mock(Callback.class);
+ Call<RbPageSummary> call = request(cb);
+
+ server().takeRequest();
+ assertCallbackSuccess(call, cb, new PageTitle(null, "Barack Obama",
+ WikiSite.forLanguageCode("test")));
+ }
+
+ @Test public void testRequestMalformed() throws Throwable {
+ enqueueFromFile("rb_page_summary_malformed.json");
+
+ Callback cb = mock(Callback.class);
+ Call<RbPageSummary> call = request(cb);
+
+ server().takeRequest();
+ assertCallbackSuccess(call, cb, null);
+ }
+
+ @Test public void testRequestFailure() throws Throwable {
+ enqueue404();
+
+ Callback cb = mock(Callback.class);
+ Call<RbPageSummary> call = request(cb);
+
+ server().takeRequest();
+ assertCallbackFailure(call, cb);
+ }
+
+ @NonNull private Call<RbPageSummary> request(@NonNull Callback cb) {
+ return client.request(service(Service.class),
WikiSite.forLanguageCode("test"), cb);
+ }
+
+ private void assertCallbackSuccess(@NonNull Call<RbPageSummary> call,
+ @NonNull Callback cb,
+ @Nullable PageTitle title) {
+ if (title == null) {
+ return;
+ }
+ verify(cb).onSuccess(eq(call), eq(title));
+ //noinspection unchecked
+ verify(cb, never()).onError(any(Call.class), any(Throwable.class));
+ }
+
+ private void assertCallbackFailure(@NonNull Call<RbPageSummary> call,
+ @NonNull Callback cb) {
+ //noinspection unchecked
+ verify(cb, never()).onSuccess(any(Call.class), any(PageTitle.class));
+ verify(cb).onError(eq(call), any(Throwable.class));
+ }
+}
diff --git a/app/src/test/res/raw/rb_page_summary_malformed.json
b/app/src/test/res/raw/rb_page_summary_malformed.json
new file mode 100644
index 0000000..dfd670a
--- /dev/null
+++ b/app/src/test/res/raw/rb_page_summary_malformed.json
@@ -0,0 +1,12 @@
+{
+ "extract": "Barack Hussein Obama II (US /bəˈrɑːk huːˈseɪn oʊˈbɑːmə/; born
August 4, 1961) is an American politician who is the 44th and current President
of the United States. He is the first African American to hold the office and
the first president born outside the continental United States. Born in
Honolulu, Hawaii, Obama is a graduate of Columbia University and Harvard Law
School, where he was president of the Harvard Law Review. He was a community
organizer in Chicago before earning his law degree. He worked as a civil rights
attorney and taught constitutional law at the University of Chicago Law School
between 1992 and 2004.",
+ "thumbnail": {
+ "source":
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/President_Barack_Obama.jpg/256px-President_Barack_Obama.jpg",
+ "width": 256,
+ "height": 320
+ },
+ "lang": "en",
+ "dir": "ltr",
+ "timestamp": "2016-11-01T15:48:15Z",
+ "description": "44th President of the United States of America"
+}
\ No newline at end of file
diff --git a/app/src/test/res/raw/rb_page_summary_valid.json
b/app/src/test/res/raw/rb_page_summary_valid.json
new file mode 100644
index 0000000..a766e60
--- /dev/null
+++ b/app/src/test/res/raw/rb_page_summary_valid.json
@@ -0,0 +1,13 @@
+{
+ "title": "Barack Obama",
+ "extract": "Barack Hussein Obama II (US /bəˈrɑːk huːˈseɪn oʊˈbɑːmə/; born
August 4, 1961) is an American politician who is the 44th and current President
of the United States. He is the first African American to hold the office and
the first president born outside the continental United States. Born in
Honolulu, Hawaii, Obama is a graduate of Columbia University and Harvard Law
School, where he was president of the Harvard Law Review. He was a community
organizer in Chicago before earning his law degree. He worked as a civil rights
attorney and taught constitutional law at the University of Chicago Law School
between 1992 and 2004.",
+ "thumbnail": {
+ "source":
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/President_Barack_Obama.jpg/256px-President_Barack_Obama.jpg",
+ "width": 256,
+ "height": 320
+ },
+ "lang": "en",
+ "dir": "ltr",
+ "timestamp": "2016-11-01T15:48:15Z",
+ "description": "44th President of the United States of America"
+}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/319132
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If6c5dcedb8103685b4ace9a1e9d9c473135f35fc
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits