mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-26 03:16:02 +03:00
extracting the test fakes to their own package
This commit is contained in:
parent
8e84aea434
commit
aff787bb29
5 changed files with 161 additions and 79 deletions
|
@ -16,26 +16,16 @@
|
||||||
|
|
||||||
package org.matrix.android.sdk.internal.session.pushers
|
package org.matrix.android.sdk.internal.session.pushers
|
||||||
|
|
||||||
import com.zhuinden.monarchy.Monarchy
|
|
||||||
import io.mockk.MockKVerificationScope
|
|
||||||
import io.mockk.coEvery
|
|
||||||
import io.mockk.every
|
|
||||||
import io.mockk.mockk
|
|
||||||
import io.mockk.mockkStatic
|
|
||||||
import io.mockk.verify
|
|
||||||
import io.realm.Realm
|
|
||||||
import io.realm.RealmModel
|
|
||||||
import io.realm.RealmQuery
|
|
||||||
import io.realm.kotlin.where
|
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.amshove.kluent.internal.assertFailsWith
|
import org.amshove.kluent.internal.assertFailsWith
|
||||||
import org.amshove.kluent.shouldBeEqualTo
|
import org.amshove.kluent.shouldBeEqualTo
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.matrix.android.sdk.api.failure.GlobalError
|
|
||||||
import org.matrix.android.sdk.api.session.pushers.PusherState
|
import org.matrix.android.sdk.api.session.pushers.PusherState
|
||||||
import org.matrix.android.sdk.internal.database.model.PusherEntity
|
import org.matrix.android.sdk.internal.database.model.PusherEntity
|
||||||
import org.matrix.android.sdk.internal.network.GlobalErrorReceiver
|
import org.matrix.android.sdk.test.fakes.FakeGlobalErrorReceiver
|
||||||
import org.matrix.android.sdk.internal.util.awaitTransaction
|
import org.matrix.android.sdk.test.fakes.FakeMonarchy
|
||||||
|
import org.matrix.android.sdk.test.fakes.FakePushersAPI
|
||||||
|
import org.matrix.android.sdk.test.fakes.FakeRequestExecutor
|
||||||
import java.net.SocketException
|
import java.net.SocketException
|
||||||
|
|
||||||
private val A_JSON_PUSHER = JsonPusher(
|
private val A_JSON_PUSHER = JsonPusher(
|
||||||
|
@ -111,68 +101,3 @@ class DefaultAddPusherTaskTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class FakePushersAPI : PushersAPI {
|
|
||||||
|
|
||||||
private var setRequestPayload: JsonPusher? = null
|
|
||||||
private var error: Throwable? = null
|
|
||||||
|
|
||||||
override suspend fun getPushers(): GetPushersResponse {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun setPusher(jsonPusher: JsonPusher) {
|
|
||||||
error?.let { throw it }
|
|
||||||
setRequestPayload = jsonPusher
|
|
||||||
}
|
|
||||||
|
|
||||||
fun verifySetPusher(payload: JsonPusher) {
|
|
||||||
this.setRequestPayload shouldBeEqualTo payload
|
|
||||||
}
|
|
||||||
|
|
||||||
fun givenSetPusherErrors(error: Throwable) {
|
|
||||||
this.error = error
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class FakeMonarchy {
|
|
||||||
|
|
||||||
val instance = mockk<Monarchy>()
|
|
||||||
private val realm = mockk<Realm>(relaxed = true)
|
|
||||||
|
|
||||||
init {
|
|
||||||
mockkStatic("org.matrix.android.sdk.internal.util.MonarchyKt")
|
|
||||||
coEvery {
|
|
||||||
instance.awaitTransaction(any<suspend (Realm) -> Any>())
|
|
||||||
} coAnswers {
|
|
||||||
secondArg<suspend (Realm) -> Any>().invoke(realm)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <reified T : RealmModel> givenWhereReturns(result: T?) {
|
|
||||||
val queryResult = mockk<RealmQuery<T>>(relaxed = true)
|
|
||||||
every { queryResult.findFirst() } returns result
|
|
||||||
every { realm.where<T>() } returns queryResult
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <reified T : RealmModel> verifyInsertOrUpdate(crossinline verification: MockKVerificationScope.() -> T) {
|
|
||||||
verify { realm.insertOrUpdate(verification()) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class FakeRequestExecutor : RequestExecutor {
|
|
||||||
|
|
||||||
override suspend fun <DATA> executeRequest(globalErrorReceiver: GlobalErrorReceiver?,
|
|
||||||
canRetry: Boolean,
|
|
||||||
maxDelayBeforeRetry: Long,
|
|
||||||
maxRetriesCount: Int,
|
|
||||||
requestBlock: suspend () -> DATA): DATA {
|
|
||||||
return requestBlock()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class FakeGlobalErrorReceiver : GlobalErrorReceiver {
|
|
||||||
override fun handleGlobalError(globalError: GlobalError) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.matrix.android.sdk.test.fakes
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.api.failure.GlobalError
|
||||||
|
import org.matrix.android.sdk.internal.network.GlobalErrorReceiver
|
||||||
|
|
||||||
|
internal class FakeGlobalErrorReceiver : GlobalErrorReceiver {
|
||||||
|
override fun handleGlobalError(globalError: GlobalError) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.matrix.android.sdk.test.fakes
|
||||||
|
|
||||||
|
import com.zhuinden.monarchy.Monarchy
|
||||||
|
import io.mockk.MockKVerificationScope
|
||||||
|
import io.mockk.coEvery
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.mockk
|
||||||
|
import io.mockk.mockkStatic
|
||||||
|
import io.mockk.verify
|
||||||
|
import io.realm.Realm
|
||||||
|
import io.realm.RealmModel
|
||||||
|
import io.realm.RealmQuery
|
||||||
|
import io.realm.kotlin.where
|
||||||
|
import org.matrix.android.sdk.internal.util.awaitTransaction
|
||||||
|
|
||||||
|
internal class FakeMonarchy {
|
||||||
|
|
||||||
|
val instance = mockk<Monarchy>()
|
||||||
|
private val realm = mockk<Realm>(relaxed = true)
|
||||||
|
|
||||||
|
init {
|
||||||
|
mockkStatic("org.matrix.android.sdk.internal.util.MonarchyKt")
|
||||||
|
coEvery {
|
||||||
|
instance.awaitTransaction(any<suspend (Realm) -> Any>())
|
||||||
|
} coAnswers {
|
||||||
|
secondArg<suspend (Realm) -> Any>().invoke(realm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline fun <reified T : RealmModel> givenWhereReturns(result: T?) {
|
||||||
|
val queryResult = mockk<RealmQuery<T>>(relaxed = true)
|
||||||
|
every { queryResult.findFirst() } returns result
|
||||||
|
every { realm.where<T>() } returns queryResult
|
||||||
|
}
|
||||||
|
|
||||||
|
inline fun <reified T : RealmModel> verifyInsertOrUpdate(crossinline verification: MockKVerificationScope.() -> T) {
|
||||||
|
verify { realm.insertOrUpdate(verification()) }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.matrix.android.sdk.test.fakes
|
||||||
|
|
||||||
|
import org.amshove.kluent.shouldBeEqualTo
|
||||||
|
import org.matrix.android.sdk.internal.session.pushers.GetPushersResponse
|
||||||
|
import org.matrix.android.sdk.internal.session.pushers.JsonPusher
|
||||||
|
import org.matrix.android.sdk.internal.session.pushers.PushersAPI
|
||||||
|
|
||||||
|
internal class FakePushersAPI : PushersAPI {
|
||||||
|
|
||||||
|
private var setRequestPayload: JsonPusher? = null
|
||||||
|
private var error: Throwable? = null
|
||||||
|
|
||||||
|
override suspend fun getPushers(): GetPushersResponse {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun setPusher(jsonPusher: JsonPusher) {
|
||||||
|
error?.let { throw it }
|
||||||
|
setRequestPayload = jsonPusher
|
||||||
|
}
|
||||||
|
|
||||||
|
fun verifySetPusher(payload: JsonPusher) {
|
||||||
|
this.setRequestPayload shouldBeEqualTo payload
|
||||||
|
}
|
||||||
|
|
||||||
|
fun givenSetPusherErrors(error: Throwable) {
|
||||||
|
this.error = error
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 The Matrix.org Foundation C.I.C.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.matrix.android.sdk.test.fakes
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.internal.network.GlobalErrorReceiver
|
||||||
|
import org.matrix.android.sdk.internal.session.pushers.RequestExecutor
|
||||||
|
|
||||||
|
internal class FakeRequestExecutor : RequestExecutor {
|
||||||
|
|
||||||
|
override suspend fun <DATA> executeRequest(globalErrorReceiver: GlobalErrorReceiver?,
|
||||||
|
canRetry: Boolean,
|
||||||
|
maxDelayBeforeRetry: Long,
|
||||||
|
maxRetriesCount: Int,
|
||||||
|
requestBlock: suspend () -> DATA): DATA {
|
||||||
|
return requestBlock()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue