Skip to content

Commit

Permalink
Invoke Radiography.scan on the main thread instead of the UI test thr…
Browse files Browse the repository at this point in the history
…ead.
  • Loading branch information
zach-klippenstein committed Jan 22, 2021
1 parent 0b4504e commit 03f09c9
Showing 1 changed file with 26 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,25 @@ class RadiographyUiTest {
}

@Test fun when_launchedActivity_then_hierarchyContainsActivity() {
ActivityScenario.launch<TestActivity>(TestActivity.intent)
val scenario = ActivityScenario.launch<TestActivity>(TestActivity.intent)

val hierarchy = Radiography.scan()
val hierarchy = scenario.runOnActivity { Radiography.scan() }

assertThat(hierarchy).contains(TestActivity::class.java.name)
}

@Test fun when_includingPii_then_hierarchyContainsText() {
ActivityScenario.launch<TestActivity>(TestActivity.intent.withTextViewText("Yo"))
val scenario = ActivityScenario.launch<TestActivity>(TestActivity.intent.withTextViewText("Yo"))

val hierarchy = Radiography.scan(viewStateRenderers = DefaultsIncludingPii)
val hierarchy = scenario.runOnActivity {
Radiography.scan(viewStateRenderers = DefaultsIncludingPii)
}
assertThat(hierarchy).contains("Yo")
}

@Test fun when_showDialog_then_hierarchyHasTwoWindows() {
val activity = ActivityScenario.launch<TestActivity>(TestActivity.intent).activity
val scenario = ActivityScenario.launch<TestActivity>(TestActivity.intent)
val activity = scenario.activity

activity.showDialog {
AlertDialog.Builder(activity)
Expand All @@ -53,36 +56,42 @@ class RadiographyUiTest {
}

@Test fun when_onlyFocusedWindow_then_hierarchyHasOnlyDialog() {
val activity = ActivityScenario.launch<TestActivity>(TestActivity.intent).activity
val scenario = ActivityScenario.launch<TestActivity>(TestActivity.intent)
val activity = scenario.activity

activity.showDialog {
AlertDialog.Builder(activity)
.setTitle("Dialog title")
.create()
}

val hierarchy = Radiography.scan(
scanScope = FocusedWindowScope,
viewStateRenderers = DefaultsIncludingPii
)
val hierarchy = scenario.runOnActivity {
Radiography.scan(
scanScope = FocusedWindowScope,
viewStateRenderers = DefaultsIncludingPii
)
}

assertThat(hierarchy).contains("window-focus:true")
assertThat(hierarchy).contains("Dialog title")

assertThat(hierarchy.countSubstring("window-focus")).isEqualTo(1)
}

private val ActivityScenario<*>.activity: Activity
get() = runOnActivity { it }

private fun <A : Activity, R> ActivityScenario<A>.runOnActivity(block: (A) -> R): R {
var result: R? = null
onActivity { result = block(it) }
@Suppress("UNCHECKED_CAST")
return result as R
}

private fun String.countSubstring(substring: String) = windowed(substring.length)
.filter { it == substring }
.count()

private val ActivityScenario<*>.activity: Activity
get() {
lateinit var activity: Activity
onActivity { activity = it }
return activity
}

private fun Activity.showDialog(block: () -> Dialog) {
lateinit var dialog: Dialog
getInstrumentation().runOnMainSync {
Expand Down

0 comments on commit 03f09c9

Please sign in to comment.