@ExperimentalCoroutinesApi
@HiltAndroidTest
@UninstallModules(AppModule::class)
class MemberListScreenTest {
@get:Rule(order = 0)
val hiltRule = HiltAndroidRule(this)
@get:Rule(order = 1)
val composeRule = createAndroidComposeRule<MainActivity>()
@RelaxedMockK
lateinit var navController: NavController
private val testDispatcher = TestCoroutineDispatcher()
@Before
fun setUp() {
hiltRule.inject()
MockKAnnotations.init(this)
composeRule.setContent {
MemberListScreen(
navController = navController,
)
}
}
@Test
fun memberImage_canTapOnlyOnce() {
// Members are defined in data/remote/MockSakamichiApi
composeRule.onNodeWithContentDescription("image of 秋元 真夏").assertIsDisplayed()
composeRule.onNodeWithContentDescription("image of 秋元 真夏").performClick()
composeRule.onNodeWithContentDescription("image of 秋元 真夏").performClick()
val memberJson = StringBuilder()
.append("{\"birthday\":\"1993年8月20日\",")
.append("\"blogUrl\":\"https:%2F%2Fblog.nogizaka46.com%2Fmanatsu.akimoto\",")
.append("\"bloodType\":\"B型\",\"generation\":\"1期生\",\"group\":\"乃木坂\",\"height\":\"154cm\",")
.append("\"imgUrl\":\"https:%2F%2Fkokoichi0206.mydns.jp%2Fimgs%2Fnogi%2Fakimotomanatsu.jpeg\",")
.append("\"name\":\"秋元 真夏\"}")
.toString()
val member = Member(
name = "秋元 真夏",
birthday = "1993年8月20日",
height = "154cm",
bloodType = "B型",
generation = "1期生",
blogUrl = "https://blog.nogizaka46.com/manatsu.akimoto",
imgUrl = "https://kokoichi0206.mydns.jp/imgs/nogi/akimotomanatsu.jpeg",
group = "乃木坂",
)
verify {
navController.
navController.navigate(
// ここでの navOption の渡し方わからん
Screen.MemberDetailScreen.route
+ "/${Constants.NAV_PARAM_MEMBER_PROPS}=${getJsonFromMember(member)}") {launchSingleTop = true}
}
}
java.lang.AssertionError: Verification failed: call 1 of 1:
NavController(navController#1).navigate(eq(member_detail_screen/memberJson=
{"birthday":"1993年8月20
日","blogUrl":"https:%2F%2Fblog.nogizaka46.com%2Fmanatsu.akimoto","bloodType":"B
型","generation":"1期生","group":"乃木
坂","height":"154cm","imgUrl":"https:%2F%2Fkokoichi0206.mydns.jp%2Fimgs%2Fnogi%2F
akimotomanatsu.jpeg","name":"秋元 真夏"}), eq(lambda {}))). No matching calls found.
Calls to same method:
1) NavController(navController#1).navigate(member_detail_screen/memberJson=
{"birthday":"1993年8月20
日","blogUrl":"https:%2F%2Fblog.nogizaka46.com%2Fmanatsu.akimoto","bloodType":"B
型","generation":"1期生","group":"乃木
坂","height":"154cm","imgUrl":"https:%2F%2Fkokoichi0206.mydns.jp%2Fimgs%2Fnogi%2F
akimotomanatsu.jpeg","name":"秋元 真夏"}, lambda {})
2) NavController(navController#1).navigate(member_detail_screen/memberJson=
{"birthday":"1993年8月20
日","blogUrl":"https:%2F%2Fblog.nogizaka46.com%2Fmanatsu.akimoto","bloodType":"B
型","generation":"1期生","group":"乃木
坂","height":"154cm","imgUrl":"https:%2F%2Fkokoichi0206.mydns.jp%2Fimgs%2Fnogi%2F
akimotomanatsu.jpeg","name":"秋元 真夏"}, lambda {})