From 0809f57fb3ca2693e6899289d49a6bd566c53bb8 Mon Sep 17 00:00:00 2001 From: shubham pinjwani Date: Tue, 19 Mar 2019 03:15:55 +0530 Subject: [PATCH 1/9] Api call --- .../commons/mwapi/ApacheHttpClientMediaWikiApi.java | 13 +++++++++++++ .../fr/free/nrw/commons/mwapi/MediaWikiApi.java | 2 ++ 2 files changed, 15 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java index 18847c478e..b82ee2391d 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java @@ -317,6 +317,19 @@ public String parseWikicode(String source) throws IOException { .getString("/api/flow-parsoid-utils/@content"); } + @Override + public String getCaptionsByFilename(String filename) throws IOException { + return api.action("wbgetentities") + .param("sites", "commonswiki") + .param("titles", filename) + .param("props", "labels") + .param("format", "xml") + .param("languages", "en") + .param("languagefallback", "1") + .get() + .getString("/api/entities/entity/labels/label/@value"); + } + @Override @NonNull public MediaResult fetchMediaByFilename(String filename) throws IOException { diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java index 3ec017bd42..9537619a5c 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java @@ -74,6 +74,8 @@ Single uploadFileFinalize(String filename, String filekey, String parseWikicode(String source) throws IOException; + String getCaptionsByFilename(String filename) throws IOException; + @NonNull MediaResult fetchMediaByFilename(String filename) throws IOException; From 73d4c24726ccce2783113f206326f78a177b049f Mon Sep 17 00:00:00 2001 From: shubham pinjwani Date: Tue, 19 Mar 2019 12:47:02 +0530 Subject: [PATCH 2/9] added captions --- .../main/java/fr/free/nrw/commons/Media.java | 17 +++++++++++ .../free/nrw/commons/MediaDataExtractor.java | 5 +++- .../commons/media/MediaDetailFragment.java | 13 +++++++++ .../mwapi/ApacheHttpClientMediaWikiApi.java | 2 +- .../free/nrw/commons/mwapi/MediaWikiApi.java | 2 +- .../main/res/layout/fragment_media_detail.xml | 28 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 66 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/Media.java b/app/src/main/java/fr/free/nrw/commons/Media.java index 9b5da33047..73db85e378 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.java +++ b/app/src/main/java/fr/free/nrw/commons/Media.java @@ -40,6 +40,7 @@ public Media[] newArray(int i) { protected String filename; protected String description; // monolingual description on input... protected String discussion; + protected String captions; protected long dataLength; protected Date dateCreated; protected @Nullable Date dateUploaded; @@ -180,6 +181,22 @@ public String getImageUrl() { return imageUrl; } + /** + * Sets the Captions of the file. + * @param captions + */ + public void setCaptions(String captions) { + this.captions = captions; + } + + /** + * Gets the file Captions as a string. + * @return file Captions as a string + */ + public String getCaptions() { + return captions; + } + /** * Gets the name of the file. * @return file name as a string diff --git a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java index 520a5a4c05..73f9c046fb 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java @@ -40,6 +40,7 @@ public class MediaDataExtractor { private boolean deletionStatus; private ArrayList categories; private Map descriptions; + private String captions; private String discussion; private String license; private @Nullable LatLng coordinates; @@ -51,6 +52,7 @@ public MediaDataExtractor(MediaWikiApi mwApi) { this.fetched = false; this.mediaWikiApi = mwApi; this.discussion = new String(); + this.captions = new String(); } /* @@ -75,7 +77,7 @@ public void fetch(String filename, LicenseList licenseList) throws IOException { MediaResult result = mediaWikiApi.fetchMediaByFilename(filename); MediaResult discussion = mediaWikiApi.fetchMediaByFilename(filename.replace("File", "File talk")); setDiscussion(discussion.getWikiSource()); - + captions = mediaWikiApi.fetchCaptionsByFilename(filename); // In-page category links are extracted from source, as XML doesn't cover [[links]] extractCategories(result.getWikiSource()); @@ -322,6 +324,7 @@ public void fill(Media media) { media.setDescriptions(descriptions); media.setCoordinates(coordinates); media.setDiscussion(discussion); + media.setCaptions(captions); if (license != null) { media.setLicense(license); } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index ae097b488d..cd75500c84 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -100,6 +100,8 @@ public static MediaDetailFragment forMedia(int index, boolean editable, boolean MediaWikiImageView image; @BindView(R.id.mediaDetailSpacer) MediaDetailSpacer spacer; + @BindView(R.id.mediaDetailCaptions) + TextView mediaCaptions; @BindView(R.id.mediaDetailTitle) TextView title; @BindView(R.id.mediaDetailDesc) @@ -344,6 +346,7 @@ private void setTextFields(Media media) { coordinates.setText(prettyCoordinates(media)); uploadedDate.setText(prettyUploadedDate(media)); mediaDiscussion.setText(prettyDiscussion(media)); + mediaCaptions.setText(prettyCaptions(media)); categoryNames.clear(); categoryNames.addAll(media.getCategories()); @@ -505,6 +508,16 @@ private String prettyDescription(Media media) { return desc; } } + + private String prettyCaptions(Media media) { + String captions = media.getCaptions().trim(); + if (captions.equals("")) { + return getString(R.string.detail_captions_empty); + } else { + return captions; + } + } + private String prettyDiscussion(Media media) { String disc = media.getDiscussion().trim(); if (disc.equals("")) { diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java index b82ee2391d..05494228e7 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java @@ -318,7 +318,7 @@ public String parseWikicode(String source) throws IOException { } @Override - public String getCaptionsByFilename(String filename) throws IOException { + public String fetchCaptionsByFilename(String filename) throws IOException { return api.action("wbgetentities") .param("sites", "commonswiki") .param("titles", filename) diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java index 9537619a5c..4194393324 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java @@ -74,7 +74,7 @@ Single uploadFileFinalize(String filename, String filekey, String parseWikicode(String source) throws IOException; - String getCaptionsByFilename(String filename) throws IOException; + String fetchCaptionsByFilename(String filename) throws IOException; @NonNull MediaResult fetchMediaByFilename(String filename) throws IOException; diff --git a/app/src/main/res/layout/fragment_media_detail.xml b/app/src/main/res/layout/fragment_media_detail.xml index 6ac2d737bf..582c4093cd 100644 --- a/app/src/main/res/layout/fragment_media_detail.xml +++ b/app/src/main/res/layout/fragment_media_detail.xml @@ -52,6 +52,34 @@ android:orientation="vertical" android:padding="@dimen/standard_gap"> + + + + + + + None selected No description No discussion + No captions Unknown license Refresh Requesting Storage Permission @@ -172,6 +173,7 @@ This file already exists on Commons. Are you sure you want to proceed? Yes No + Captions Title Description Discussion From 24570b2e713803cfc10821aa3abfdac75f79b518 Mon Sep 17 00:00:00 2001 From: shubham pinjwani Date: Tue, 19 Mar 2019 16:32:39 +0530 Subject: [PATCH 3/9] final commit --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 2 +- .../free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java | 2 +- app/src/main/res/layout/fragment_media_detail.xml | 2 +- app/src/main/res/values/strings.xml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index cd75500c84..72dcce0cc5 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -512,7 +512,7 @@ private String prettyDescription(Media media) { private String prettyCaptions(Media media) { String captions = media.getCaptions().trim(); if (captions.equals("")) { - return getString(R.string.detail_captions_empty); + return getString(R.string.detail_caption_empty); } else { return captions; } diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java index 05494228e7..3b2c8df50b 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java @@ -324,7 +324,7 @@ public String fetchCaptionsByFilename(String filename) throws IOException { .param("titles", filename) .param("props", "labels") .param("format", "xml") - .param("languages", "en") + .param("languages", Locale.getDefault().getLanguage()) .param("languagefallback", "1") .get() .getString("/api/entities/entity/labels/label/@value"); diff --git a/app/src/main/res/layout/fragment_media_detail.xml b/app/src/main/res/layout/fragment_media_detail.xml index 582c4093cd..7fe406b71d 100644 --- a/app/src/main/res/layout/fragment_media_detail.xml +++ b/app/src/main/res/layout/fragment_media_detail.xml @@ -63,7 +63,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/tiny_gap" - android:text="@string/media_detail_captions" + android:text="@string/media_detail_caption" android:textColor="@android:color/white" android:textSize="@dimen/normal_text" android:textStyle="bold" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fece141e59..f21525eedd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -159,7 +159,7 @@ None selected No description No discussion - No captions + No caption Unknown license Refresh Requesting Storage Permission @@ -173,7 +173,7 @@ This file already exists on Commons. Are you sure you want to proceed? Yes No - Captions + Caption Title Description Discussion From c35ae332046d2ce18652fd2dec3eb7596d9b1d9d Mon Sep 17 00:00:00 2001 From: shubham pinjwani Date: Tue, 19 Mar 2019 19:06:32 +0530 Subject: [PATCH 4/9] some minor changes --- app/src/main/java/fr/free/nrw/commons/Media.java | 12 ++++++------ .../java/fr/free/nrw/commons/MediaDataExtractor.java | 8 ++++---- .../free/nrw/commons/media/MediaDetailFragment.java | 2 +- .../commons/mwapi/ApacheHttpClientMediaWikiApi.java | 6 +++++- .../java/fr/free/nrw/commons/mwapi/MediaWikiApi.java | 2 +- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/Media.java b/app/src/main/java/fr/free/nrw/commons/Media.java index 73db85e378..9204ca9801 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.java +++ b/app/src/main/java/fr/free/nrw/commons/Media.java @@ -40,7 +40,7 @@ public Media[] newArray(int i) { protected String filename; protected String description; // monolingual description on input... protected String discussion; - protected String captions; + protected String caption; protected long dataLength; protected Date dateCreated; protected @Nullable Date dateUploaded; @@ -183,18 +183,18 @@ public String getImageUrl() { /** * Sets the Captions of the file. - * @param captions + * @param caption */ - public void setCaptions(String captions) { - this.captions = captions; + public void setCaption(String caption) { + this.caption = caption; } /** * Gets the file Captions as a string. * @return file Captions as a string */ - public String getCaptions() { - return captions; + public String getCaption() { + return caption; } /** diff --git a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java index 73f9c046fb..0ed7276bb4 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java @@ -40,7 +40,7 @@ public class MediaDataExtractor { private boolean deletionStatus; private ArrayList categories; private Map descriptions; - private String captions; + private String caption; private String discussion; private String license; private @Nullable LatLng coordinates; @@ -52,7 +52,7 @@ public MediaDataExtractor(MediaWikiApi mwApi) { this.fetched = false; this.mediaWikiApi = mwApi; this.discussion = new String(); - this.captions = new String(); + this.caption = new String(); } /* @@ -77,7 +77,7 @@ public void fetch(String filename, LicenseList licenseList) throws IOException { MediaResult result = mediaWikiApi.fetchMediaByFilename(filename); MediaResult discussion = mediaWikiApi.fetchMediaByFilename(filename.replace("File", "File talk")); setDiscussion(discussion.getWikiSource()); - captions = mediaWikiApi.fetchCaptionsByFilename(filename); + caption = mediaWikiApi.fetchCaptionByFilename(filename); // In-page category links are extracted from source, as XML doesn't cover [[links]] extractCategories(result.getWikiSource()); @@ -324,7 +324,7 @@ public void fill(Media media) { media.setDescriptions(descriptions); media.setCoordinates(coordinates); media.setDiscussion(discussion); - media.setCaptions(captions); + media.setCaption(caption); if (license != null) { media.setLicense(license); } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 72dcce0cc5..6125587f38 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -510,7 +510,7 @@ private String prettyDescription(Media media) { } private String prettyCaptions(Media media) { - String captions = media.getCaptions().trim(); + String captions = media.getCaption().trim(); if (captions.equals("")) { return getString(R.string.detail_caption_empty); } else { diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java index 3b2c8df50b..006491dc13 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java @@ -317,8 +317,12 @@ public String parseWikicode(String source) throws IOException { .getString("/api/flow-parsoid-utils/@content"); } + /** + * fetches the Caption of the file with a given name. + * @param filename title of the file + */ @Override - public String fetchCaptionsByFilename(String filename) throws IOException { + public String fetchCaptionByFilename(String filename) throws IOException { return api.action("wbgetentities") .param("sites", "commonswiki") .param("titles", filename) diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java index 4194393324..95f09cfa30 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/MediaWikiApi.java @@ -74,7 +74,7 @@ Single uploadFileFinalize(String filename, String filekey, String parseWikicode(String source) throws IOException; - String fetchCaptionsByFilename(String filename) throws IOException; + String fetchCaptionByFilename(String filename) throws IOException; @NonNull MediaResult fetchMediaByFilename(String filename) throws IOException; From 2d620cbd0ff1aafe09db7c4e27935160775b6f3a Mon Sep 17 00:00:00 2001 From: shubham pinjwani Date: Tue, 19 Mar 2019 19:10:16 +0530 Subject: [PATCH 5/9] sigular --- app/src/main/java/fr/free/nrw/commons/Media.java | 6 +++--- .../nrw/commons/media/MediaDetailFragment.java | 14 +++++++------- app/src/main/res/layout/fragment_media_detail.xml | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/Media.java b/app/src/main/java/fr/free/nrw/commons/Media.java index 9204ca9801..702e8138cf 100644 --- a/app/src/main/java/fr/free/nrw/commons/Media.java +++ b/app/src/main/java/fr/free/nrw/commons/Media.java @@ -182,7 +182,7 @@ public String getImageUrl() { } /** - * Sets the Captions of the file. + * Sets the Caption of the file. * @param caption */ public void setCaption(String caption) { @@ -190,8 +190,8 @@ public void setCaption(String caption) { } /** - * Gets the file Captions as a string. - * @return file Captions as a string + * Gets the file Caption as a string. + * @return file Caption as a string */ public String getCaption() { return caption; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 6125587f38..c10f664c62 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -100,8 +100,8 @@ public static MediaDetailFragment forMedia(int index, boolean editable, boolean MediaWikiImageView image; @BindView(R.id.mediaDetailSpacer) MediaDetailSpacer spacer; - @BindView(R.id.mediaDetailCaptions) - TextView mediaCaptions; + @BindView(R.id.mediaDetailCaption) + TextView mediaCaption; @BindView(R.id.mediaDetailTitle) TextView title; @BindView(R.id.mediaDetailDesc) @@ -346,7 +346,7 @@ private void setTextFields(Media media) { coordinates.setText(prettyCoordinates(media)); uploadedDate.setText(prettyUploadedDate(media)); mediaDiscussion.setText(prettyDiscussion(media)); - mediaCaptions.setText(prettyCaptions(media)); + mediaCaption.setText(prettyCaption(media)); categoryNames.clear(); categoryNames.addAll(media.getCategories()); @@ -509,12 +509,12 @@ private String prettyDescription(Media media) { } } - private String prettyCaptions(Media media) { - String captions = media.getCaption().trim(); - if (captions.equals("")) { + private String prettyCaption(Media media) { + String caption = media.getCaption().trim(); + if (caption.equals("")) { return getString(R.string.detail_caption_empty); } else { - return captions; + return caption; } } diff --git a/app/src/main/res/layout/fragment_media_detail.xml b/app/src/main/res/layout/fragment_media_detail.xml index 7fe406b71d..feca77b360 100644 --- a/app/src/main/res/layout/fragment_media_detail.xml +++ b/app/src/main/res/layout/fragment_media_detail.xml @@ -69,7 +69,7 @@ android:textStyle="bold" /> Date: Wed, 20 Mar 2019 23:24:45 +0530 Subject: [PATCH 6/9] test for captions --- .../mwapi/ApacheHttpClientMediaWikiApiTest.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt index 5739b9b86c..2ef4851451 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt @@ -240,6 +240,27 @@ class ApacheHttpClientMediaWikiApiTest { assertFalse(result) } + @Test + fun fetchCaptionByFilename() { + server.enqueue(MockResponse().setBody("")) + + val result = testObject.fetchCaptionByFilename("File:foo") + + assertBasicRequestParameters(server, "GET").let { request -> + parseQueryParams(request).let { params -> + assertEquals("xml", params["format"]) + assertEquals("wbgetentities", params["action"]) + assertEquals("commonswiki", params["sites"]) + assertEquals("File:foo", params["titles"]) + assertEquals("labels", params["props"]) + assertEquals(Locale.getDefault().getLanguage(), params["languages"]) + assertEquals("1", params["languagefallback"]) + } + } + + assertEquals("Test", result) + } + @Test fun isUserBlockedFromCommonsForInfinitelyBlockedUser() { server.enqueue(MockResponse().setBody("")) From 45b708b294e7aad85ef629fd548b3ce592759df9 Mon Sep 17 00:00:00 2001 From: Ashish Date: Mon, 29 Apr 2019 19:28:30 +0530 Subject: [PATCH 7/9] mock fetchCaptionbyFileName --- .../kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt index 839d7f22cf..0fbdf0cef8 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt @@ -7,12 +7,9 @@ import io.reactivex.Single import junit.framework.Assert.assertTrue import org.junit.Before import org.junit.Test -import org.mockito.ArgumentMatchers -import org.mockito.InjectMocks -import org.mockito.Mock +import org.mockito.* import org.mockito.Mockito.`when` import org.mockito.Mockito.mock -import org.mockito.MockitoAnnotations /** * Test methods in media data extractor @@ -41,10 +38,12 @@ class MediaDataExtractorTest { * test method to fetch media details */ @Test - fun fetchMediaDetails() { + fun fetchMediafDetails() { `when`(okHttpJsonApiClient?.getMedia(ArgumentMatchers.anyString(), ArgumentMatchers.anyBoolean())) .thenReturn(Single.just(mock(Media::class.java))) + Mockito.`when`(mwApi!!.fetchCaptionByFilename(ArgumentMatchers.anyString())).thenReturn(Single.just("test caption")) + `when`(mwApi?.pageExists(ArgumentMatchers.anyString())) .thenReturn(Single.just(true)) From bc558e5102be65af740273c11dbefd489be79ad3 Mon Sep 17 00:00:00 2001 From: Ashish Date: Mon, 29 Apr 2019 19:30:18 +0530 Subject: [PATCH 8/9] corrected method name --- .../test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt index 0fbdf0cef8..d21d0401b5 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt @@ -38,7 +38,7 @@ class MediaDataExtractorTest { * test method to fetch media details */ @Test - fun fetchMediafDetails() { + fun fetchMediaDetails() { `when`(okHttpJsonApiClient?.getMedia(ArgumentMatchers.anyString(), ArgumentMatchers.anyBoolean())) .thenReturn(Single.just(mock(Media::class.java))) From 3ac165a609929aa812a3366b47a4f2338e049a2b Mon Sep 17 00:00:00 2001 From: Ashish Date: Mon, 29 Apr 2019 21:35:22 +0530 Subject: [PATCH 9/9] * used ? instead of !! (unsafe call on nullable) * updated unit test for fetchCaptionByFilename() --- .../kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt | 2 +- .../commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt index d21d0401b5..909ff8ce5f 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/MediaDataExtractorTest.kt @@ -42,7 +42,7 @@ class MediaDataExtractorTest { `when`(okHttpJsonApiClient?.getMedia(ArgumentMatchers.anyString(), ArgumentMatchers.anyBoolean())) .thenReturn(Single.just(mock(Media::class.java))) - Mockito.`when`(mwApi!!.fetchCaptionByFilename(ArgumentMatchers.anyString())).thenReturn(Single.just("test caption")) + Mockito.`when`(mwApi?.fetchCaptionByFilename(ArgumentMatchers.anyString())).thenReturn(Single.just("test caption")) `when`(mwApi?.pageExists(ArgumentMatchers.anyString())) .thenReturn(Single.just(true)) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt index a00b46d97d..2e2ae3f306 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt @@ -6,6 +6,7 @@ import fr.free.nrw.commons.BuildConfig import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.kvstore.JsonKvStore import fr.free.nrw.commons.utils.ConfigUtils +import io.reactivex.observers.TestObserver import okhttp3.OkHttpClient import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer @@ -23,6 +24,7 @@ import org.wikipedia.util.DateUtil import java.net.URLDecoder import java.util.* + @RunWith(RobolectricTestRunner::class) @Config(constants = BuildConfig::class, sdk = intArrayOf(21), application = TestCommonsApplication::class) class ApacheHttpClientMediaWikiApiTest { @@ -245,7 +247,8 @@ class ApacheHttpClientMediaWikiApiTest { server.enqueue(MockResponse().setBody("")) val result = testObject.fetchCaptionByFilename("File:foo") - + val testObserver = TestObserver() + result.subscribe(testObserver) assertBasicRequestParameters(server, "GET").let { request -> parseQueryParams(request).let { params -> assertEquals("xml", params["format"]) @@ -258,7 +261,9 @@ class ApacheHttpClientMediaWikiApiTest { } } - assertEquals("Test", result) + testObserver.assertResult("Test") + testObserver.assertNoErrors() + } @Test