@@ -16,7 +16,7 @@ class FragmentFlowRenderViewTest {
16
16
17
17
class HeadlessFragment : Fragment ()
18
18
19
- @get:Rule val rule = ActivityTestRule (TestActivity ::class .java)
19
+ @get:Rule val rule = ActivityTestRule (TestFlowViewActivity ::class .java)
20
20
21
21
@Test fun `add fragment lifecycle event` () {
22
22
assertThat(currentBackstack()).containsExactly(TaskListContract ())
@@ -49,32 +49,32 @@ class FragmentFlowRenderViewTest {
49
49
}
50
50
51
51
@Test fun `render model is passed to visible fragment` () {
52
- val component = rule.activity.component
53
- component .sendStateUpdate(TaskListContract (), " update" )
54
- assertThat(component .renderCalls).containsExactly(TaskListContract () to " update" )
52
+ val viewModel = viewModel()
53
+ viewModel .sendStateUpdate(TaskListContract (), " update" )
54
+ assertThat(viewModel .renderCalls).containsExactly(TaskListContract () to " update" )
55
55
}
56
56
57
57
@Test fun `render model is not passed to not visible fragment` () {
58
58
navigateToTaskDetail()
59
59
60
- val component = rule.activity.component
61
- component .sendStateUpdate(TaskListContract (), " update" )
62
- assertThat(component .renderCalls).isEqualTo(emptyList<Any >())
60
+ val viewModel = viewModel()
61
+ viewModel .sendStateUpdate(TaskListContract (), " update" )
62
+ assertThat(viewModel .renderCalls).isEqualTo(emptyList<Any >())
63
63
}
64
64
65
65
@Test fun `visible fragments are updated when navigating` () {
66
66
navigateToTaskDetail()
67
67
68
68
val contract = TaskDetailContract (1 )
69
69
70
- val component = rule.activity.component
71
- component .sendStateUpdate(contract, " update" )
72
- assertThat(component .renderCalls).containsExactly(contract to " update" )
70
+ val viewModel = viewModel()
71
+ viewModel .sendStateUpdate(contract, " update" )
72
+ assertThat(viewModel .renderCalls).containsExactly(contract to " update" )
73
73
74
74
rule.activity.onBackPressed()
75
75
76
- component .sendStateUpdate(contract, " update-two" )
77
- assertThat(component .renderCalls).containsExactly(contract to " update" )
76
+ viewModel .sendStateUpdate(contract, " update-two" )
77
+ assertThat(viewModel .renderCalls).containsExactly(contract to " update" )
78
78
}
79
79
80
80
@Test fun `delegates back press to current render model` () {
@@ -83,8 +83,8 @@ class FragmentFlowRenderViewTest {
83
83
var backPressed = 0
84
84
85
85
val contract = TaskDetailContract (1 )
86
- val component = rule.activity.component
87
- component .sendStateUpdate(contract, object : BackCallback {
86
+ val viewModel = viewModel()
87
+ viewModel .sendStateUpdate(contract, object : BackCallback {
88
88
override fun onBackPressed () {
89
89
backPressed + = 1
90
90
}
@@ -96,6 +96,10 @@ class FragmentFlowRenderViewTest {
96
96
assertThat(backPressed).isEqualTo(2 )
97
97
}
98
98
99
+ private fun viewModel (): TestFragmentFlowViewModel {
100
+ return rule.activity.viewModel
101
+ }
102
+
99
103
private fun navigateToTaskDetail () {
100
104
val detail = TaskDetailContract (1 )
101
105
rule.activity.supportFragmentManager.beginTransaction()
@@ -106,6 +110,6 @@ class FragmentFlowRenderViewTest {
106
110
}
107
111
108
112
private fun currentBackstack (): List <FragmentContract <* >> {
109
- return rule.activity.component.currentFragmentState ().backStack.keys
113
+ return rule.activity.viewModel.state.test().values().last ().backStack.keys
110
114
}
111
115
}
0 commit comments