{"action":"created","comment":{"url":"https://api.github.com/repos/oppia/oppia-android/pulls/comments/342936751","pull_request_review_id":312215773,"id":342936751,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDM0MjkzNjc1MQ==","diff_hunk":"@@ -0,0 +1,342 @@\n+package org.oppia.app.topic\n+\n+import android.app.Application\n+import android.content.Context\n+import androidx.test.core.app.ActivityScenario.launch\n+import androidx.test.espresso.Espresso.onView\n+import androidx.test.espresso.action.ViewActions.click\n+import androidx.test.espresso.action.ViewActions.swipeLeft\n+import androidx.test.espresso.assertion.ViewAssertions.matches\n+import androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA\n+import androidx.test.espresso.matcher.ViewMatchers.isDisplayed\n+import androidx.test.espresso.matcher.ViewMatchers.isRoot\n+import androidx.test.espresso.matcher.ViewMatchers.withId\n+import androidx.test.espresso.matcher.ViewMatchers.withText\n+import androidx.test.ext.junit.runners.AndroidJUnit4\n+import androidx.test.platform.app.InstrumentationRegistry\n+import dagger.BindsInstance\n+import dagger.Component\n+import dagger.Module\n+import dagger.Provides\n+import kotlinx.coroutines.CoroutineDispatcher\n+import org.hamcrest.CoreMatchers.allOf\n+import org.hamcrest.CoreMatchers.containsString\n+import org.junit.Test\n+import org.junit.runner.RunWith\n+import org.oppia.app.R\n+import org.oppia.app.recyclerview.RecyclerViewMatcher.Companion.atPositionOnView\n+import org.oppia.app.utility.EspressoTestsMatchers.matchCurrentTabTitle\n+import org.oppia.app.utility.OrientationChangeAction.Companion.orientationLandscape\n+import org.oppia.util.threading.BackgroundDispatcher\n+import org.oppia.util.threading.BlockingDispatcher\n+import javax.inject.Singleton\n+\n+/** Tests for [TopicActivity]. */\n+@RunWith(AndroidJUnit4::class)\n+class TopicFragmentTest {\n+  private val topicName = \"First Test Topic\"\n+\n+  @Test\n+  fun testTopicFragment_showsTopicFragmentWithMultipleTabs() {\n+    launch(TopicActivity::class.java).use {\n+      onView(withId(R.id.topic_tabs_container)).perform(click()).check(matches(isDisplayed()))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_swipePage_hasSwipedPage() {\n+    launch(TopicActivity::class.java).use {\n+      onView(withId(R.id.topic_tabs_viewpager)).check(matches(isDisplayed()))\n+      onView(withId(R.id.topic_tabs_viewpager)).perform(swipeLeft())\n+      onView(withId(R.id.topic_tabs_container)).check(matches(matchCurrentTabTitle(getResourceString(R.string.play))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_overviewTopicTab_isDisplayedInTabLayout() {\n+    launch(TopicActivity::class.java).use {\n+      onView(withText(R.string.overview)).check(matches(isDescendantOfA(withId(R.id.topic_tabs_container))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_defaultTabIsOverview_isSuccessful() {\n+    launch(TopicActivity::class.java).use {\n+      onView(withId(R.id.topic_tabs_container)).check(matches(matchCurrentTabTitle(getResourceString(R.string.overview))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_defaultTabIsOverview_showsMatchingContent() {\n+    launch(TopicActivity::class.java).use {\n+      onView(withId(R.id.topic_name_text_view)).check(\n+        matches(\n+          withText(\n+            containsString(topicName)\n+          )\n+        )\n+      )\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnPlayTab_showsPlayTabSelected() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.play),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withId(R.id.topic_tabs_container)).check(matches(matchCurrentTabTitle(getResourceString(R.string.play))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnPlayTab_showsPlayTabWithContentMatched() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.play),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withText(\"First Story\")).check(matches(isDisplayed()))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnTrainTab_showsTrainTabSelected() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.train),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withId(R.id.topic_tabs_container)).check(matches(matchCurrentTabTitle(getResourceString(R.string.train))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnTrainTab_showsTrainTabWithContentMatched() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.train),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withText(\"Master These Skills\")).check(matches(isDisplayed()))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnReviewTab_showsReviewTabSelected() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.review),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withId(R.id.topic_tabs_container)).check(matches(matchCurrentTabTitle(getResourceString(R.string.review))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnReviewTab_showsReviewTabWithContentMatched() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.review),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(atPositionOnView(R.id.review_skill_recycler_view, 0, R.id.skill_name)).check(\n+        matches(\n+          withText(\n+            containsString(\n+              \"An important skill\"\n+            )\n+          )\n+        )\n+      )\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnReviewTab_thenOverviewTab_showsOverviewTab() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.review),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(\n+        allOf(\n+          withText(R.string.overview),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withId(R.id.topic_tabs_container)).check(\n+        matches(\n+          matchCurrentTabTitle(\n+            getResourceString(R.string.overview)\n+          )\n+        )\n+      )\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnReviewTab_thenOverviewTab_showsOverviewTabWithContentMatched() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.review),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(\n+        allOf(\n+          withText(R.string.overview),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withId(R.id.topic_name_text_view)).check(\n+        matches(\n+          withText(\n+            containsString(topicName)\n+          )\n+        )\n+      )\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnPlayTab_configurationChange_showsSameTabAndItsContent() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.play),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(isRoot()).perform(orientationLandscape())\n+      onView(withId(R.id.topic_tabs_container)).check(\n+        matches(\n+          matchCurrentTabTitle(\n+            getResourceString(R.string.play)\n+          )\n+        )\n+      )\n+      onView(withText(\"First Story\")).check(matches(isDisplayed()))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnTrainTab_configurationChange_showsSameTabAndItsContent() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.train),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(withText(\"Master These Skills\")).check(matches(isDisplayed()))\n+      onView(isRoot()).perform(orientationLandscape())\n+      onView(withId(R.id.topic_tabs_container)).check(\n+        matches(\n+          matchCurrentTabTitle(\n+            getResourceString(R.string.train)\n+          )\n+        )\n+      )\n+      onView(withText(\"Master These Skills\")).check(matches(isDisplayed()))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_clickOnReviewTab_configurationChange_showsSameTabAndItsContent() {\n+    launch(TopicActivity::class.java).use {\n+      onView(\n+        allOf(\n+          withText(R.string.review),\n+          isDescendantOfA(withId(R.id.topic_tabs_container))\n+        )\n+      ).perform(click())\n+      onView(isRoot()).perform(orientationLandscape())\n+      onView(withId(R.id.topic_tabs_container)).check(\n+        matches(\n+          matchCurrentTabTitle(\n+            getResourceString(R.string.review)\n+          )\n+        )\n+      )\n+      onView(\n+        atPositionOnView(R.id.review_skill_recycler_view, 0, R.id.skill_name)\n+      ).check(matches(withText(containsString(\"An important skill\"))))\n+    }\n+  }\n+\n+  @Test\n+  fun testTopicFragment_configurationChange_showsDefaultTabAndItsContent() {\n+    launch(TopicActivity::class.java).use {\n+      onView(isRoot()).perform(orientationLandscape())\n+      onView(withId(R.id.topic_tabs_container)).check(\n+        matches(\n+          matchCurrentTabTitle(\n+            getResourceString(R.string.overview)\n+          )\n+        )\n+      )\n+      onView(withId(R.id.topic_name_text_view)).check(\n+        matches(\n+          withText(\n+            containsString(topicName)\n+          )\n+        )\n+      )\n+    }\n+  }\n+\n+  private fun getResourceString(id: Int): String {\n+    val resources =\n+      InstrumentationRegistry.getInstrumentation().targetContext.resources","path":"app/src/sharedTest/java/org/oppia/app/topic/TopicFragmentTest.kt","position":307,"original_position":307,"commit_id":"1aa955e2d73c58b91ffb29be822d231cde3eac37","original_commit_id":"1aa955e2d73c58b91ffb29be822d231cde3eac37","user":{"login":"BenHenning","id":12983742,"node_id":"MDQ6VXNlcjEyOTgzNzQy","avatar_url":"https://avatars3.githubusercontent.com/u/12983742?v=4","gravatar_id":"","url":"https://api.github.com/users/BenHenning","html_url":"https://github.com/BenHenning","followers_url":"https://api.github.com/users/BenHenning/followers","following_url":"https://api.github.com/users/BenHenning/following{/other_user}","gists_url":"https://api.github.com/users/BenHenning/gists{/gist_id}","starred_url":"https://api.github.com/users/BenHenning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BenHenning/subscriptions","organizations_url":"https://api.github.com/users/BenHenning/orgs","repos_url":"https://api.github.com/users/BenHenning/repos","events_url":"https://api.github.com/users/BenHenning/events{/privacy}","received_events_url":"https://api.github.com/users/BenHenning/received_events","type":"User","site_admin":false},"body":"I believe this won't work correctly when run on Robolectric, and I think we can rely on the AndroidX application provider to get access to resources:\r\n\r\n```kotlin\r\nval resources = ApplicationProvider.getApplicationContext().resources\r\n```","created_at":"2019-11-06T06:43:03Z","updated_at":"2019-11-06T06:47:22Z","html_url":"https://github.com/oppia/oppia-android/pull/230#discussion_r342936751","pull_request_url":"https://api.github.com/repos/oppia/oppia-android/pulls/230","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/oppia/oppia-android/pulls/comments/342936751"},"html":{"href":"https://github.com/oppia/oppia-android/pull/230#discussion_r342936751"},"pull_request":{"href":"https://api.github.com/repos/oppia/oppia-android/pulls/230"}}},"pull_request":{"url":"https://api.github.com/repos/oppia/oppia-android/pulls/230","id":327753016,"node_id":"MDExOlB1bGxSZXF1ZXN0MzI3NzUzMDE2","html_url":"https://github.com/oppia/oppia-android/pull/230","diff_url":"https://github.com/oppia/oppia-android/pull/230.diff","patch_url":"https://github.com/oppia/oppia-android/pull/230.patch","issue_url":"https://api.github.com/repos/oppia/oppia-android/issues/230","number":230,"state":"open","locked":false,"title":"Fix part of #135: UI Structure:Topic player multiple tabs","user":{"login":"nikitamarysolomanpvt","id":54615666,"node_id":"MDQ6VXNlcjU0NjE1NjY2","avatar_url":"https://avatars1.githubusercontent.com/u/54615666?v=4","gravatar_id":"","url":"https://api.github.com/users/nikitamarysolomanpvt","html_url":"https://github.com/nikitamarysolomanpvt","followers_url":"https://api.github.com/users/nikitamarysolomanpvt/followers","following_url":"https://api.github.com/users/nikitamarysolomanpvt/following{/other_user}","gists_url":"https://api.github.com/users/nikitamarysolomanpvt/gists{/gist_id}","starred_url":"https://api.github.com/users/nikitamarysolomanpvt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikitamarysolomanpvt/subscriptions","organizations_url":"https://api.github.com/users/nikitamarysolomanpvt/orgs","repos_url":"https://api.github.com/users/nikitamarysolomanpvt/repos","events_url":"https://api.github.com/users/nikitamarysolomanpvt/events{/privacy}","received_events_url":"https://api.github.com/users/nikitamarysolomanpvt/received_events","type":"User","site_admin":false},"body":"<!--\r\n  - Thanks for submitting code to Oppia! Please fill out the following as part of\r\n  - your pull request so we can review your code more easily.\r\n  -->\r\n\r\n## Explanation\r\nfix #135 \r\n\r\n\r\n## Mock\r\nhttps://xd.adobe.com/spec/e2239cf4-9cde-4c08-5296-25316c1f0a14-9412/screen/0fad68f5-5ca4-4947-b8db-b4cf07235fd7/Topic-w-o-Play-19\r\nTo test this app, follow these steps:\r\n1. In `AndroidManifest` file make `TopicActivity` as launcher activity.\r\n\r\n## Checklist\r\n<!-- Please tick the relevant boxes by putting an \"x\" in them. -->\r\n- [x] The PR title starts with \"Fix #bugnum: \", followed by a short, clear summary of the changes. (If this PR fixes part of an issue, prefix the title with \"Fix part of #bugnum: ...\".)\r\n- [x] The PR explanation includes the words \"Fixes #bugnum: ...\" (or \"Fixes part of #bugnum\" if the PR only partially fixes an issue).\r\n- [x] The PR follows the [style guide](https://github.com/oppia/oppia-android/wiki/Coding-style-guide).\r\n- [x] The PR does not contain any unnecessary auto-generated code from Android Studio.\r\n- [x] The PR is made from a branch that's **not** called \"develop\".\r\n- [x] The PR is **assigned** to an appropriate reviewer.\r\n","created_at":"2019-10-14T11:21:33Z","updated_at":"2019-11-06T06:47:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"842389f17a525d741ee7b81f73e775434bb9b0aa","assignee":{"login":"vinitamurthi","id":11780495,"node_id":"MDQ6VXNlcjExNzgwNDk1","avatar_url":"https://avatars1.githubusercontent.com/u/11780495?v=4","gravatar_id":"","url":"https://api.github.com/users/vinitamurthi","html_url":"https://github.com/vinitamurthi","followers_url":"https://api.github.com/users/vinitamurthi/followers","following_url":"https://api.github.com/users/vinitamurthi/following{/other_user}","gists_url":"https://api.github.com/users/vinitamurthi/gists{/gist_id}","starred_url":"https://api.github.com/users/vinitamurthi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vinitamurthi/subscriptions","organizations_url":"https://api.github.com/users/vinitamurthi/orgs","repos_url":"https://api.github.com/users/vinitamurthi/repos","events_url":"https://api.github.com/users/vinitamurthi/events{/privacy}","received_events_url":"https://api.github.com/users/vinitamurthi/received_events","type":"User","site_admin":false},"assignees":[{"login":"vinitamurthi","id":11780495,"node_id":"MDQ6VXNlcjExNzgwNDk1","avatar_url":"https://avatars1.githubusercontent.com/u/11780495?v=4","gravatar_id":"","url":"https://api.github.com/users/vinitamurthi","html_url":"https://github.com/vinitamurthi","followers_url":"https://api.github.com/users/vinitamurthi/followers","following_url":"https://api.github.com/users/vinitamurthi/following{/other_user}","gists_url":"https://api.github.com/users/vinitamurthi/gists{/gist_id}","starred_url":"https://api.github.com/users/vinitamurthi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vinitamurthi/subscriptions","organizations_url":"https://api.github.com/users/vinitamurthi/orgs","repos_url":"https://api.github.com/users/vinitamurthi/repos","events_url":"https://api.github.com/users/vinitamurthi/events{/privacy}","received_events_url":"https://api.github.com/users/vinitamurthi/received_events","type":"User","site_admin":false},{"login":"BenHenning","id":12983742,"node_id":"MDQ6VXNlcjEyOTgzNzQy","avatar_url":"https://avatars3.githubusercontent.com/u/12983742?v=4","gravatar_id":"","url":"https://api.github.com/users/BenHenning","html_url":"https://github.com/BenHenning","followers_url":"https://api.github.com/users/BenHenning/followers","following_url":"https://api.github.com/users/BenHenning/following{/other_user}","gists_url":"https://api.github.com/users/BenHenning/gists{/gist_id}","starred_url":"https://api.github.com/users/BenHenning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BenHenning/subscriptions","organizations_url":"https://api.github.com/users/BenHenning/orgs","repos_url":"https://api.github.com/users/BenHenning/repos","events_url":"https://api.github.com/users/BenHenning/events{/privacy}","received_events_url":"https://api.github.com/users/BenHenning/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"vinitamurthi","id":11780495,"node_id":"MDQ6VXNlcjExNzgwNDk1","avatar_url":"https://avatars1.githubusercontent.com/u/11780495?v=4","gravatar_id":"","url":"https://api.github.com/users/vinitamurthi","html_url":"https://github.com/vinitamurthi","followers_url":"https://api.github.com/users/vinitamurthi/followers","following_url":"https://api.github.com/users/vinitamurthi/following{/other_user}","gists_url":"https://api.github.com/users/vinitamurthi/gists{/gist_id}","starred_url":"https://api.github.com/users/vinitamurthi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vinitamurthi/subscriptions","organizations_url":"https://api.github.com/users/vinitamurthi/orgs","repos_url":"https://api.github.com/users/vinitamurthi/repos","events_url":"https://api.github.com/users/vinitamurthi/events{/privacy}","received_events_url":"https://api.github.com/users/vinitamurthi/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/oppia/oppia-android/pulls/230/commits","review_comments_url":"https://api.github.com/repos/oppia/oppia-android/pulls/230/comments","review_comment_url":"https://api.github.com/repos/oppia/oppia-android/pulls/comments{/number}","comments_url":"https://api.github.com/repos/oppia/oppia-android/issues/230/comments","statuses_url":"https://api.github.com/repos/oppia/oppia-android/statuses/1aa955e2d73c58b91ffb29be822d231cde3eac37","head":{"label":"oppia:topic-player-multiple-tabs","ref":"topic-player-multiple-tabs","sha":"1aa955e2d73c58b91ffb29be822d231cde3eac37","user":{"login":"oppia","id":11620230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNjIwMjMw","avatar_url":"https://avatars1.githubusercontent.com/u/11620230?v=4","gravatar_id":"","url":"https://api.github.com/users/oppia","html_url":"https://github.com/oppia","followers_url":"https://api.github.com/users/oppia/followers","following_url":"https://api.github.com/users/oppia/following{/other_user}","gists_url":"https://api.github.com/users/oppia/gists{/gist_id}","starred_url":"https://api.github.com/users/oppia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oppia/subscriptions","organizations_url":"https://api.github.com/users/oppia/orgs","repos_url":"https://api.github.com/users/oppia/repos","events_url":"https://api.github.com/users/oppia/events{/privacy}","received_events_url":"https://api.github.com/users/oppia/received_events","type":"Organization","site_admin":false},"repo":{"id":148093817,"node_id":"MDEwOlJlcG9zaXRvcnkxNDgwOTM4MTc=","name":"oppia-android","full_name":"oppia/oppia-android","private":false,"owner":{"login":"oppia","id":11620230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNjIwMjMw","avatar_url":"https://avatars1.githubusercontent.com/u/11620230?v=4","gravatar_id":"","url":"https://api.github.com/users/oppia","html_url":"https://github.com/oppia","followers_url":"https://api.github.com/users/oppia/followers","following_url":"https://api.github.com/users/oppia/following{/other_user}","gists_url":"https://api.github.com/users/oppia/gists{/gist_id}","starred_url":"https://api.github.com/users/oppia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oppia/subscriptions","organizations_url":"https://api.github.com/users/oppia/orgs","repos_url":"https://api.github.com/users/oppia/repos","events_url":"https://api.github.com/users/oppia/events{/privacy}","received_events_url":"https://api.github.com/users/oppia/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/oppia/oppia-android","description":null,"fork":false,"url":"https://api.github.com/repos/oppia/oppia-android","forks_url":"https://api.github.com/repos/oppia/oppia-android/forks","keys_url":"https://api.github.com/repos/oppia/oppia-android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oppia/oppia-android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oppia/oppia-android/teams","hooks_url":"https://api.github.com/repos/oppia/oppia-android/hooks","issue_events_url":"https://api.github.com/repos/oppia/oppia-android/issues/events{/number}","events_url":"https://api.github.com/repos/oppia/oppia-android/events","assignees_url":"https://api.github.com/repos/oppia/oppia-android/assignees{/user}","branches_url":"https://api.github.com/repos/oppia/oppia-android/branches{/branch}","tags_url":"https://api.github.com/repos/oppia/oppia-android/tags","blobs_url":"https://api.github.com/repos/oppia/oppia-android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oppia/oppia-android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oppia/oppia-android/git/refs{/sha}","trees_url":"https://api.github.com/repos/oppia/oppia-android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oppia/oppia-android/statuses/{sha}","languages_url":"https://api.github.com/repos/oppia/oppia-android/languages","stargazers_url":"https://api.github.com/repos/oppia/oppia-android/stargazers","contributors_url":"https://api.github.com/repos/oppia/oppia-android/contributors","subscribers_url":"https://api.github.com/repos/oppia/oppia-android/subscribers","subscription_url":"https://api.github.com/repos/oppia/oppia-android/subscription","commits_url":"https://api.github.com/repos/oppia/oppia-android/commits{/sha}","git_commits_url":"https://api.github.com/repos/oppia/oppia-android/git/commits{/sha}","comments_url":"https://api.github.com/repos/oppia/oppia-android/comments{/number}","issue_comment_url":"https://api.github.com/repos/oppia/oppia-android/issues/comments{/number}","contents_url":"https://api.github.com/repos/oppia/oppia-android/contents/{+path}","compare_url":"https://api.github.com/repos/oppia/oppia-android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oppia/oppia-android/merges","archive_url":"https://api.github.com/repos/oppia/oppia-android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oppia/oppia-android/downloads","issues_url":"https://api.github.com/repos/oppia/oppia-android/issues{/number}","pulls_url":"https://api.github.com/repos/oppia/oppia-android/pulls{/number}","milestones_url":"https://api.github.com/repos/oppia/oppia-android/milestones{/number}","notifications_url":"https://api.github.com/repos/oppia/oppia-android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oppia/oppia-android/labels{/name}","releases_url":"https://api.github.com/repos/oppia/oppia-android/releases{/id}","deployments_url":"https://api.github.com/repos/oppia/oppia-android/deployments","created_at":"2018-09-10T03:25:11Z","updated_at":"2019-11-06T06:40:54Z","pushed_at":"2019-11-06T06:41:53Z","git_url":"git://github.com/oppia/oppia-android.git","ssh_url":"git@github.com:oppia/oppia-android.git","clone_url":"https://github.com/oppia/oppia-android.git","svn_url":"https://github.com/oppia/oppia-android","homepage":null,"size":5903,"stargazers_count":6,"watchers_count":6,"language":"Kotlin","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":132,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":8,"open_issues":132,"watchers":6,"default_branch":"develop"}},"base":{"label":"oppia:develop","ref":"develop","sha":"4613ff8bea3920ea47389b1c5ecc12177df3e536","user":{"login":"oppia","id":11620230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNjIwMjMw","avatar_url":"https://avatars1.githubusercontent.com/u/11620230?v=4","gravatar_id":"","url":"https://api.github.com/users/oppia","html_url":"https://github.com/oppia","followers_url":"https://api.github.com/users/oppia/followers","following_url":"https://api.github.com/users/oppia/following{/other_user}","gists_url":"https://api.github.com/users/oppia/gists{/gist_id}","starred_url":"https://api.github.com/users/oppia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oppia/subscriptions","organizations_url":"https://api.github.com/users/oppia/orgs","repos_url":"https://api.github.com/users/oppia/repos","events_url":"https://api.github.com/users/oppia/events{/privacy}","received_events_url":"https://api.github.com/users/oppia/received_events","type":"Organization","site_admin":false},"repo":{"id":148093817,"node_id":"MDEwOlJlcG9zaXRvcnkxNDgwOTM4MTc=","name":"oppia-android","full_name":"oppia/oppia-android","private":false,"owner":{"login":"oppia","id":11620230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNjIwMjMw","avatar_url":"https://avatars1.githubusercontent.com/u/11620230?v=4","gravatar_id":"","url":"https://api.github.com/users/oppia","html_url":"https://github.com/oppia","followers_url":"https://api.github.com/users/oppia/followers","following_url":"https://api.github.com/users/oppia/following{/other_user}","gists_url":"https://api.github.com/users/oppia/gists{/gist_id}","starred_url":"https://api.github.com/users/oppia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oppia/subscriptions","organizations_url":"https://api.github.com/users/oppia/orgs","repos_url":"https://api.github.com/users/oppia/repos","events_url":"https://api.github.com/users/oppia/events{/privacy}","received_events_url":"https://api.github.com/users/oppia/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/oppia/oppia-android","description":null,"fork":false,"url":"https://api.github.com/repos/oppia/oppia-android","forks_url":"https://api.github.com/repos/oppia/oppia-android/forks","keys_url":"https://api.github.com/repos/oppia/oppia-android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oppia/oppia-android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oppia/oppia-android/teams","hooks_url":"https://api.github.com/repos/oppia/oppia-android/hooks","issue_events_url":"https://api.github.com/repos/oppia/oppia-android/issues/events{/number}","events_url":"https://api.github.com/repos/oppia/oppia-android/events","assignees_url":"https://api.github.com/repos/oppia/oppia-android/assignees{/user}","branches_url":"https://api.github.com/repos/oppia/oppia-android/branches{/branch}","tags_url":"https://api.github.com/repos/oppia/oppia-android/tags","blobs_url":"https://api.github.com/repos/oppia/oppia-android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oppia/oppia-android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oppia/oppia-android/git/refs{/sha}","trees_url":"https://api.github.com/repos/oppia/oppia-android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oppia/oppia-android/statuses/{sha}","languages_url":"https://api.github.com/repos/oppia/oppia-android/languages","stargazers_url":"https://api.github.com/repos/oppia/oppia-android/stargazers","contributors_url":"https://api.github.com/repos/oppia/oppia-android/contributors","subscribers_url":"https://api.github.com/repos/oppia/oppia-android/subscribers","subscription_url":"https://api.github.com/repos/oppia/oppia-android/subscription","commits_url":"https://api.github.com/repos/oppia/oppia-android/commits{/sha}","git_commits_url":"https://api.github.com/repos/oppia/oppia-android/git/commits{/sha}","comments_url":"https://api.github.com/repos/oppia/oppia-android/comments{/number}","issue_comment_url":"https://api.github.com/repos/oppia/oppia-android/issues/comments{/number}","contents_url":"https://api.github.com/repos/oppia/oppia-android/contents/{+path}","compare_url":"https://api.github.com/repos/oppia/oppia-android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oppia/oppia-android/merges","archive_url":"https://api.github.com/repos/oppia/oppia-android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oppia/oppia-android/downloads","issues_url":"https://api.github.com/repos/oppia/oppia-android/issues{/number}","pulls_url":"https://api.github.com/repos/oppia/oppia-android/pulls{/number}","milestones_url":"https://api.github.com/repos/oppia/oppia-android/milestones{/number}","notifications_url":"https://api.github.com/repos/oppia/oppia-android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oppia/oppia-android/labels{/name}","releases_url":"https://api.github.com/repos/oppia/oppia-android/releases{/id}","deployments_url":"https://api.github.com/repos/oppia/oppia-android/deployments","created_at":"2018-09-10T03:25:11Z","updated_at":"2019-11-06T06:40:54Z","pushed_at":"2019-11-06T06:41:53Z","git_url":"git://github.com/oppia/oppia-android.git","ssh_url":"git@github.com:oppia/oppia-android.git","clone_url":"https://github.com/oppia/oppia-android.git","svn_url":"https://github.com/oppia/oppia-android","homepage":null,"size":5903,"stargazers_count":6,"watchers_count":6,"language":"Kotlin","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":132,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":8,"open_issues":132,"watchers":6,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/oppia/oppia-android/pulls/230"},"html":{"href":"https://github.com/oppia/oppia-android/pull/230"},"issue":{"href":"https://api.github.com/repos/oppia/oppia-android/issues/230"},"comments":{"href":"https://api.github.com/repos/oppia/oppia-android/issues/230/comments"},"review_comments":{"href":"https://api.github.com/repos/oppia/oppia-android/pulls/230/comments"},"review_comment":{"href":"https://api.github.com/repos/oppia/oppia-android/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/oppia/oppia-android/pulls/230/commits"},"statuses":{"href":"https://api.github.com/repos/oppia/oppia-android/statuses/1aa955e2d73c58b91ffb29be822d231cde3eac37"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"BenHenning"}}