1616package com.motorro.appupdatewrapper
1717
1818import androidx.lifecycle.Lifecycle
19- import androidx.lifecycle.Lifecycle.State.*
19+ import androidx.lifecycle.Lifecycle.State.INITIALIZED
20+ import androidx.lifecycle.testing.TestLifecycleOwner
2021import androidx.test.ext.junit.runners.AndroidJUnit4
21- import com.nhaarman.mockitokotlin2.*
22+ import com.nhaarman.mockitokotlin2.mock
23+ import com.nhaarman.mockitokotlin2.never
24+ import com.nhaarman.mockitokotlin2.spy
25+ import com.nhaarman.mockitokotlin2.verify
2226import org.junit.Before
2327import org.junit.Test
2428import org.junit.runner.RunWith
@@ -27,16 +31,14 @@ import kotlin.test.assertTrue
2731
2832@RunWith(AndroidJUnit4 ::class )
2933class AppUpdateLifecycleStateMachineTest : TestAppTest () {
30- private lateinit var lifecycle : Lifecycle
34+ private lateinit var lifecycleOwner : TestLifecycleOwner
3135 private lateinit var stateMachine: AppUpdateLifecycleStateMachine
3236 private lateinit var state: AppUpdateState
3337
3438 @Before
3539 fun init () {
36- lifecycle = mock {
37- on { currentState } doReturn DESTROYED
38- }
39- stateMachine = AppUpdateLifecycleStateMachine (lifecycle, mock(), mock(), mock())
40+ lifecycleOwner = TestLifecycleOwner (INITIALIZED )
41+ stateMachine = AppUpdateLifecycleStateMachine (lifecycleOwner.lifecycle, mock(), mock(), mock())
4042
4143 state = spy()
4244 }
@@ -46,7 +48,7 @@ class AppUpdateLifecycleStateMachineTest: TestAppTest() {
4648 stateMachine.setUpdateState(state)
4749 assertEquals(stateMachine, state.stateMachine)
4850
49- stateMachine.onStart( )
51+ lifecycleOwner.handleLifecycleEvent( Lifecycle . Event . ON_START )
5052 verify(state).onStart()
5153 }
5254
@@ -65,32 +67,30 @@ class AppUpdateLifecycleStateMachineTest: TestAppTest() {
6567 }
6668
6769 @Test
68- fun callsStateOnStartIfLifecycleStarted () {
69- whenever(lifecycle.currentState).thenReturn(STARTED )
70+ fun followsLifecycle () {
7071 stateMachine.setUpdateState(state)
71- verify(state).onStart()
72- verify(state, never()).onResume()
73- }
7472
75- @Test
76- fun callsStateOnStartAndOnResumedIfLifecycleResumed () {
77- whenever(lifecycle.currentState).thenReturn(RESUMED )
78- stateMachine.setUpdateState(state)
73+ lifecycleOwner.handleLifecycleEvent(Lifecycle .Event .ON_START )
7974 verify(state).onStart()
75+ lifecycleOwner.handleLifecycleEvent(Lifecycle .Event .ON_RESUME )
8076 verify(state).onResume()
77+ lifecycleOwner.handleLifecycleEvent(Lifecycle .Event .ON_PAUSE )
78+ verify(state).onPause()
79+ lifecycleOwner.handleLifecycleEvent(Lifecycle .Event .ON_STOP )
80+ verify(state).onStop()
8181 }
8282
8383 @Test
8484 fun initializes () {
85- verify(lifecycle).addObserver(stateMachine )
85+ assertEquals( 1 , lifecycleOwner.observerCount )
8686 assertTrue { stateMachine.currentUpdateState is None }
8787 }
8888
8989 @Test
9090 fun cleansUp () {
9191 stateMachine.setUpdateState(state)
9292 stateMachine.cleanup()
93- verify(lifecycle).removeObserver(stateMachine )
94- assertTrue { stateMachine.currentUpdateState is None }
93+ assertEquals( 0 , lifecycleOwner.observerCount )
94+ assertTrue { stateMachine.currentUpdateState is None }
9595 }
9696}
0 commit comments