Closed
Bug 1393700
Opened 8 years ago
Closed 8 years ago
Add test for parsing Pocket JSON response
Categories
(Firefox for Android Graveyard :: General, enhancement, P1)
Tracking
(firefox57 fixed)
RESOLVED
FIXED
Firefox 57
Tracking | Status | |
---|---|---|
firefox57 | --- | fixed |
People
(Reporter: liuche, Assigned: liuche)
Details
(Whiteboard: [MobileAS])
Attachments
(1 file)
Splitting out from bug 1380808 - add a test for parsing JSON structure of Pocket response.
![]() |
||
Updated•8 years ago
|
Iteration: 1.28 → 1.29
Comment hidden (mozreview-request) |
Comment 2•8 years ago
|
||
mozreview-review |
Comment on attachment 8902039 [details]
Bug 1393700 - Add test for parsing JSON response.
https://reviewboard.mozilla.org/r/173444/#review179152
::: mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topstories/PocketStoriesLoader.java:150
(Diff revision 1)
> }
> }
> }
>
> - private static List<TopStory> jsonStringToTopStories(String jsonResponse) {
> + @VisibleForTesting
> + public static List<TopStory> jsonStringToTopStories(String jsonResponse) {
This can be package-private if you move the test to the same package.
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:18
(Diff revision 1)
> +import org.mozilla.gecko.background.testhelpers.TestRunner;
> +
> +import java.util.List;
> +
> +@RunWith(TestRunner.class)
> +public class TestPocketJSONParsing {
nit: TestPocketStoriesLoader
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:19
(Diff revision 1)
> +
> +import java.util.List;
> +
> +@RunWith(TestRunner.class)
> +public class TestPocketJSONParsing {
> + final String POCKET_URL = "POCKET_URL";
nit: private and static, here and below
Though, it ultimately doesn't matter. :P
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:24
(Diff revision 1)
> + final String POCKET_URL = "POCKET_URL";
> + final String PAGE_URL = "PAGE_URL";
> + final String TITLE = "TITLE";
> + final String IMG_URL = "IMAGE_URL";
> +
> + final String BASIC_RESPONSE = "{\"status\":1, \"list\":[{" +
A thought: maybe it's better to construct the JSON via `JSONObject.toString` - it's more verbose and less readable but less error prone to update because of all that escaping.
This would not apply to the direct Pocket response.
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:31
(Diff revision 1)
> + "\"dedupe_url\":\"" + PAGE_URL + "\"," +
> + "\"title\":\"" + TITLE + "\"," +
> + "\"image_src\":\"" + IMG_URL + "\"}]}";
> +
> + @Test
> + public void testParsingWithBasicObject() {
nit: -> `testJSONStringToTopStoriesWithBasicObject`.
For unit tests, it's generally best to test a single method and so the method name should be in the test name.
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:36
(Diff revision 1)
> + public void testParsingWithBasicObject() {
> + final List<TopStory> stories = PocketStoriesLoader.jsonStringToTopStories(BASIC_RESPONSE);
> + Assert.assertEquals(stories.size(), 1);
> +
> + final TopStory story = stories.get(0);
> + Assert.assertEquals(story.getUrl(), PAGE_URL);
nit: Reverse the order of the arguments (here & below): JUnit assertions specify the expected argument first, then the actual argument: https://developer.android.com/reference/junit/framework/Assert.html#assertEquals(boolean,%20boolean)
I think this affects the way the test success/failure output is printed.
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:46
(Diff revision 1)
> + final String MISSING_TITLE_RESPONSE = "{\"status\":1, \"list\":[{" +
> + "\"url\":\"" + POCKET_URL + "\"," +
> + "\"dedupe_url\":\"" + PAGE_URL + "\"," +
> + "\"image_src\":\"" + IMG_URL + "\"}]}";
> + @Test
> + public void testParsingWithMalformedObject() {
nit: What is malformed about this object? Maybe `testJSONStringToTopStoriesWithMissingTitle`
::: mobile/android/tests/background/junit4/src/org/mozilla/gecko/activitystream/TestPocketJSONParsing.java:74
(Diff revision 1)
> + "\"dedupe_url\":\"https:\\/\\/medium.com\",\"title\":\"Mediocrity is a Virus.\"," +
> + "\"excerpt\":\"Little things become big things.\",\"domain\":\"medium.com\"," +
> + "\"image_src\":\"https:\\/\\/d33ypg4xwx0n86.cloudfront.net\",\"published_timestamp\":\"1503578016\",\"sort_id\":2}]}";
> +
> + @Test
> + public void testParsingWithPocketObject() {
nit: -> `...WithRealPocketServerResponse`
Technically, the other objects you've crafted are "PocketObject"s too!
Attachment #8902039 -
Flags: review?(michael.l.comella) → review+
Comment hidden (mozreview-request) |
Pushed by cliu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ae9e6b6d3132
Add test for parsing JSON response. r=mcomella
![]() |
||
Comment 5•8 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 57
Updated•5 years ago
|
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•