1 // Copyright 2015-present 650 Industries. All rights reserved.
2 package host.exp.exponent.utils
3 
4 import androidx.test.espresso.IdlingResource
5 import de.greenrobot.event.EventBus
6 import host.exp.exponent.test.TestCompletedEvent
7 import host.exp.exponent.test.TestResolvePromiseEvent
8 
9 class JSTestRunnerIdlingResource : IdlingResource {
10   private var hasCompleted = false
11   private var resourceCallback: IdlingResource.ResourceCallback? = null
12   var testResult: String? = null
13     private set
14 
onEventnull15   fun onEvent(event: TestCompletedEvent) {
16     hasCompleted = true
17     testResult = event.result
18     resourceCallback?.onTransitionToIdle()
19     EventBus.getDefault().post(TestResolvePromiseEvent(event.id))
20   }
21 
getNamenull22   override fun getName(): String {
23     return JSTestRunnerIdlingResource::class.java.name
24   }
25 
isIdleNownull26   override fun isIdleNow(): Boolean {
27     return hasCompleted
28   }
29 
registerIdleTransitionCallbacknull30   override fun registerIdleTransitionCallback(callback: IdlingResource.ResourceCallback) {
31     resourceCallback = callback
32   }
33 
34   init {
35     EventBus.getDefault().register(this)
36   }
37 }
38