Advertisement
strok_777

UITest

Feb 18th, 2021
1,442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.70 KB | None | 0 0
  1. package com.amgdeveloper.cookingapp
  2.  
  3. import android.Manifest
  4. import android.app.Application
  5. import android.content.Intent
  6. import android.os.SystemClock
  7. import androidx.recyclerview.widget.RecyclerView
  8. import androidx.test.espresso.Espresso
  9. import androidx.test.espresso.IdlingRegistry
  10. import androidx.test.espresso.action.ViewActions
  11. import androidx.test.espresso.contrib.RecyclerViewActions
  12. import androidx.test.espresso.matcher.ViewMatchers
  13. import androidx.test.platform.app.InstrumentationRegistry
  14. import androidx.test.rule.ActivityTestRule
  15. import androidx.test.rule.GrantPermissionRule
  16. import com.amgdeveloper.cookingapp.ui.main.MainActivity
  17. import com.jakewharton.espresso.OkHttp3IdlingResource
  18. import okhttp3.mockwebserver.MockResponse
  19. import okhttp3.mockwebserver.MockWebServer
  20. import org.junit.After
  21. import org.junit.Before
  22. import org.junit.Rule
  23. import org.junit.Test
  24.  
  25. /**
  26.  * Created by amgdeveloper on 17/02/2021
  27.  */
  28. class UITest {
  29.  
  30.  
  31.     @get:Rule
  32.     val activityTestRule = ActivityTestRule(MainActivity::class.java, false, false)
  33.  
  34.     @get:Rule
  35.     val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
  36.         Manifest.permission.ACCESS_COARSE_LOCATION
  37.     )
  38.  
  39.     private lateinit var mockWebServer: MockWebServer
  40.     private lateinit var resource: OkHttp3IdlingResource
  41.  
  42.     @Before
  43.     fun setUp() {
  44.         val instrumentation = InstrumentationRegistry.getInstrumentation()
  45.         val app = instrumentation.targetContext.applicationContext as Application
  46.         val component = DaggerUITestComponent.factory().create(app)
  47.  
  48.         mockWebServer = component.mockWebServer
  49.  
  50.         resource = OkHttp3IdlingResource.create("OkHttp", component.spoonacular.okHttpClient)
  51.         IdlingRegistry.getInstance().register(resource)
  52.  
  53.         val intent = Intent(instrumentation.targetContext, MainActivity::class.java)
  54.  
  55.         activityTestRule.launchActivity(intent)
  56.     }
  57.  
  58.     @Test
  59.     fun clickARecipeNavigatesToDetail() {
  60.         mockWebServer.enqueue(
  61.             MockResponse()
  62.                 .setResponseCode(200)
  63.                 .setBody(recipes)
  64.         )
  65.  
  66.         SystemClock.sleep(1000)
  67.        
  68.         Espresso.onView(ViewMatchers.withId(R.id.recipeListFragmentRv)).perform(
  69.             RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(
  70.                 4, ViewActions.click()
  71.             )
  72.         )
  73.         mockWebServer.enqueue(
  74.             MockResponse()
  75.                 .setResponseCode(200)
  76.                 .setBody(recipeSummary)
  77.         )
  78.     }
  79.  
  80.     @After
  81.     fun tearDown() {
  82.         mockWebServer.close()
  83.         mockWebServer.shutdown()
  84.         IdlingRegistry.getInstance().unregister(resource)
  85.     }
  86. }
  87.  
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement