2020-12-11 22:25:45 +01:00
|
|
|
package jp.juggler.subwaytooter
|
|
|
|
|
2023-01-15 08:51:13 +01:00
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
2021-10-27 22:58:19 +02:00
|
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
2020-12-11 22:25:45 +01:00
|
|
|
import jp.juggler.subwaytooter.api.TootApiCallback
|
|
|
|
import jp.juggler.subwaytooter.api.TootApiClient
|
|
|
|
import jp.juggler.subwaytooter.api.entity.Host
|
|
|
|
import jp.juggler.subwaytooter.api.entity.TootInstance
|
|
|
|
import jp.juggler.subwaytooter.table.SavedAccount
|
2023-01-15 08:51:13 +01:00
|
|
|
import jp.juggler.subwaytooter.testutil.MainDispatcherRule
|
|
|
|
import jp.juggler.subwaytooter.testutil.MockInterceptor
|
2020-12-11 22:25:45 +01:00
|
|
|
import jp.juggler.subwaytooter.util.SimpleHttpClientImpl
|
2023-01-13 13:22:25 +01:00
|
|
|
import jp.juggler.util.log.LogCategory
|
2023-01-15 08:51:13 +01:00
|
|
|
import kotlinx.coroutines.test.runTest
|
|
|
|
import okhttp3.*
|
2021-10-27 22:58:19 +02:00
|
|
|
import org.junit.Assert.assertNotNull
|
|
|
|
import org.junit.Assert.assertNull
|
2023-01-15 08:51:13 +01:00
|
|
|
import org.junit.Rule
|
2020-12-11 22:25:45 +01:00
|
|
|
import org.junit.Test
|
|
|
|
import org.junit.runner.RunWith
|
|
|
|
import java.util.*
|
|
|
|
|
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
|
|
class TestTootInstance {
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
private val log = LogCategory("TestTootInstance")
|
2023-01-15 08:51:13 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// テスト毎に書くと複数テストで衝突するので、MainDispatcherRuleに任せる
|
|
|
|
// プロパティは記述順に初期化されることに注意
|
|
|
|
@get:Rule
|
|
|
|
val mainDispatcherRule = MainDispatcherRule()
|
2020-12-11 22:25:45 +01:00
|
|
|
|
2023-01-15 08:51:13 +01:00
|
|
|
private val client by lazy {
|
|
|
|
val mockInterceptor = MockInterceptor(
|
|
|
|
// テストアプリのコンテキスト
|
|
|
|
context = InstrumentationRegistry.getInstrumentation().context!!,
|
|
|
|
// テストアプリ中のリソースID
|
|
|
|
rawId = jp.juggler.subwaytooter.test.R.raw.test_toot_instance_mock,
|
|
|
|
)
|
2020-12-11 22:25:45 +01:00
|
|
|
|
2023-01-15 08:51:13 +01:00
|
|
|
val okHttp = OkHttpClient.Builder().addInterceptor(mockInterceptor).build()
|
2020-12-11 22:25:45 +01:00
|
|
|
|
2023-01-15 08:51:13 +01:00
|
|
|
val dummyClientCallback = object : TootApiCallback {
|
2022-12-27 07:09:47 +01:00
|
|
|
override suspend fun isApiCancelled() = false
|
|
|
|
|
2020-12-11 22:25:45 +01:00
|
|
|
override suspend fun publishApiProgress(s: String) {
|
|
|
|
log.d("apiProgress: $s")
|
|
|
|
}
|
|
|
|
|
|
|
|
override suspend fun publishApiProgressRatio(value: Int, max: Int) {
|
|
|
|
log.d("apiProgressRatio: $value/$max")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-01-15 08:51:13 +01:00
|
|
|
val appContext = InstrumentationRegistry.getInstrumentation().targetContext!!
|
|
|
|
TootApiClient(
|
2020-12-11 22:25:45 +01:00
|
|
|
context = appContext,
|
2021-10-27 22:58:19 +02:00
|
|
|
httpClient = SimpleHttpClientImpl(appContext, okHttp),
|
2020-12-11 22:25:45 +01:00
|
|
|
callback = dummyClientCallback
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
TootInstance.get() はアカウントを指定する場合とホストを指定する場合がある
|
|
|
|
ホスト指定とアカウント指定、 MastodonとMisskey で試す
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Test
|
2023-01-15 08:51:13 +01:00
|
|
|
fun instanceByHostname() = runTest {
|
|
|
|
suspend fun a(host: Host) {
|
|
|
|
val (ti, ri) = TootInstance.getEx(client, hostArg = host)
|
|
|
|
assertNull("no error", ri?.error)
|
|
|
|
assertNotNull("instance information", ti)
|
2023-01-17 13:42:47 +01:00
|
|
|
ti?.run { log.d("$instanceType $apDomain $version") }
|
2020-12-11 22:25:45 +01:00
|
|
|
}
|
2023-01-15 08:51:13 +01:00
|
|
|
a(Host.parse("mastodon.juggler.jp"))
|
|
|
|
a(Host.parse("misskey.io"))
|
2020-12-11 22:25:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2023-01-15 08:51:13 +01:00
|
|
|
fun testWithAccount() = runTest {
|
|
|
|
suspend fun a(account: SavedAccount) {
|
|
|
|
val (ti, ri) = TootInstance.getEx(client, account = account)
|
|
|
|
assertNull(ri?.error)
|
|
|
|
assertNotNull(ti)
|
2023-01-17 13:42:47 +01:00
|
|
|
ti?.run { log.d("${account.acct} $instanceType $apDomain $version") }
|
2020-12-11 22:25:45 +01:00
|
|
|
}
|
2023-01-15 08:51:13 +01:00
|
|
|
a(SavedAccount(45, "tateisu@mastodon.juggler.jp"))
|
|
|
|
a(SavedAccount(45, "tateisu@misskey.io", misskeyVersion = 12))
|
2020-12-11 22:25:45 +01:00
|
|
|
}
|
2022-12-27 07:09:47 +01:00
|
|
|
}
|