Slide 26
Slide 26 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)
}
}
ଓઌใͱͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ͢Δ
✅ຊޠຊαʔόʔͷ߹ͤ
✅ӳޠຊαʔόʔͷ߹ͤ
✅؆ମࣈຊαʔόʔͷ߹ͤ
✅ൟମࣈຊαʔόʔͷ߹ͤ
✅ͦͷଞຊαʔόʔͷ߹ͤ
✅ຊޠถࠃαʔόʔͷ߹ͤ
✅ӳޠถࠃαʔόʔͷ߹ͤ
✅؆ମࣈถࠃαʔόʔͷ߹ͤ
✅ൟମࣈถࠃαʔόʔͷ߹ͤ
✅ͦͷଞถࠃαʔόʔͷ߹ͤ
✅
ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜͨ͠63-Λ
$ISPNFʹ͠ɺϔϧϓϖʔδΛ։͘
GREEN