Slide 24
Slide 24 text
private val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().start().resume().get()
// テスト
@Test
fun `ログイン画面でヘルプリンクが押されると、生成したURLをChromeに渡し、ヘルプページを開く`() {
// Given (前提条件: ログイン画面を開いている)
val fragment = Fragment()
activity.add(fragment)
val helpLinkUrl = generateHelpLink(language = "ja", country = "JP")
// When (操作:ヘルプリンクを押す)
fragment.openBrowser(url = helpLinkUrl, errorCallback = { e -> fail(e) })
// Then (結果:ChromeがURLを開く)
val openedActivity = Shadows.shadowOf(activity).nextStartedActivity
val openedPackage = openedActivity.getPackage()
Truth.assertThat(openedPackage).isEqualTo("com.android.chrome")
val openedUrlString = openedActivity.data.toString()
Truth.assertThat(openedUrlString).isEqualTo(helpLinkUrl)
}
// 実装
fun Fragment.openBrowser(
url: String,
errorCallback: (e: Exception) -> Unit = { e ->
// エラー処理
},
) {
try {
val chromeIntent = Intent(Intent.ACTION_VIEW, url.toUri())
chromeIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
chromeIntent.setPackage("com.android.chrome")
startActivity(chromeIntent)
} catch (e: Exception) {
errorCallback(e)
}
}
(1) 接続先情報と端末の言語設定に応じたヘルプページのURLを生成する
日本語 / 日本サーバー の組合せ
英語 / 日本サーバー の組合せ
簡
簡
簡
/ 簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
繁体字 / 日本サーバー の組合せ
その他 / 日本サーバー の組合せ
日本語 / 米国サーバー の組合せ
英語 / 米国サーバー の組合せ
簡体字 / 米国サーバー の組合せ
繁体字 / 米国サーバー の組合せ
その他 / 米国サーバー の組合せ
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
/ 簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
簡
(2) ログイン画面でヘルプリンクが押されると、1.で生成したURLを
Chromeに渡し、ヘルプページを開く
24