For #18836: refactor tests into forEachColdStartEntries.

upstream-sync
Michael Comella 3 years ago committed by Michael Comella
parent 1a36230a85
commit a00fbbb6b3

@ -40,26 +40,10 @@ class StartupStateProviderTest {
} }
@Test @Test
fun `GIVEN the app started for an activity WHEN we launched to HomeActivity directly THEN start up is cold`() { fun `GIVEN the app started for an activity WHEN is cold start THEN cold start is true`() {
// These entries mimic observed behavior. forEachColdStartEntries { index ->
logEntries.addAll(listOf( assertTrue("$index", provider.isColdStartForStartedActivity(homeActivityClass))
LogEntry.ActivityCreated(homeActivityClass), }
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
assertTrue(provider.isColdStartForStartedActivity(homeActivityClass))
}
@Test
fun `GIVEN the app started for an activity WHEN we launched to HA through a non-drawing IntentRA THEN start up is cold`() {
// These entries mimic observed behavior.
logEntries.addAll(listOf(
LogEntry.ActivityCreated(irActivityClass),
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
assertTrue(provider.isColdStartForStartedActivity(homeActivityClass))
} }
@Test @Test
@ -200,27 +184,13 @@ class StartupStateProviderTest {
@Test @Test
fun `GIVEN the app did not start for an activity WHEN is cold is checked THEN it returns false`() { fun `GIVEN the app did not start for an activity WHEN is cold is checked THEN it returns false`() {
fun assertIsNotCold() { assertFalse(provider.isColdStartForStartedActivity(homeActivityClass)) }
every { startReasonProvider.reason } returns StartReason.NON_ACTIVITY every { startReasonProvider.reason } returns StartReason.NON_ACTIVITY
assertIsNotCold() // 🔥
// These are normally the success paths. assertFalse(provider.isColdStartForStartedActivity(homeActivityClass))
logEntries.addAll(listOf(
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
assertIsNotCold()
logEntries.clear() forEachColdStartEntries { index ->
logEntries.addAll(listOf( assertFalse("$index", provider.isColdStartForStartedActivity(homeActivityClass))
LogEntry.ActivityCreated(irActivityClass), }
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
assertIsNotCold()
} }
@Test @Test
@ -233,4 +203,32 @@ class StartupStateProviderTest {
fun `GIVEN the app has not been stopped WHEN is cold short circuit is called THEN it returns false`() { fun `GIVEN the app has not been stopped WHEN is cold short circuit is called THEN it returns false`() {
assertFalse(provider.shouldShortCircuitColdStart()) assertFalse(provider.shouldShortCircuitColdStart())
} }
private fun forEachColdStartEntries(block: (index: Int) -> Unit) {
// These entries mimic observed behavior.
//
// MAIN: open HomeActivity directly.
val coldStartEntries = listOf(listOf(
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
// VIEW: open non-drawing IntentReceiverActivity, then HomeActivity.
), listOf(
LogEntry.ActivityCreated(irActivityClass),
LogEntry.ActivityCreated(homeActivityClass),
LogEntry.ActivityStarted(homeActivityClass),
LogEntry.AppStarted
))
forEachStartEntry(coldStartEntries, block)
}
private fun forEachStartEntry(entries: List<List<LogEntry>>, block: (index: Int) -> Unit) {
entries.forEachIndexed { index, startEntry ->
logEntries.clear()
logEntries.addAll(startEntry)
block(index)
}
}
} }

Loading…
Cancel
Save