adding test cases for when adding a pusher fails and when it already exists
This commit is contained in:
parent
21479b2b28
commit
b7c911feee
|
@ -28,6 +28,7 @@ import io.realm.RealmModel
|
||||||
import io.realm.RealmQuery
|
import io.realm.RealmQuery
|
||||||
import io.realm.kotlin.where
|
import io.realm.kotlin.where
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
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.failure.GlobalError
|
||||||
|
@ -35,6 +36,7 @@ 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.internal.network.GlobalErrorReceiver
|
||||||
import org.matrix.android.sdk.internal.util.awaitTransaction
|
import org.matrix.android.sdk.internal.util.awaitTransaction
|
||||||
|
import java.net.SocketException
|
||||||
|
|
||||||
private val A_JSON_PUSHER = JsonPusher(
|
private val A_JSON_PUSHER = JsonPusher(
|
||||||
pushKey = "push-key",
|
pushKey = "push-key",
|
||||||
|
@ -60,10 +62,10 @@ class DefaultAddPusherTaskTest {
|
||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `given no persisted pusher when running task then fetches from api and inserts result with Registered state`() = runBlocking {
|
fun `given no persisted pusher when adding Pusher then updates api and inserts result with Registered state`() {
|
||||||
monarchy.givenWhereReturns<PusherEntity>(result = null)
|
monarchy.givenWhereReturns<PusherEntity>(result = null)
|
||||||
|
|
||||||
addPusherTask.execute(AddPusherTask.Params(A_JSON_PUSHER))
|
runBlocking { addPusherTask.execute(AddPusherTask.Params(A_JSON_PUSHER)) }
|
||||||
|
|
||||||
pushersAPI.verifySetPusher(A_JSON_PUSHER)
|
pushersAPI.verifySetPusher(A_JSON_PUSHER)
|
||||||
monarchy.verifyInsertOrUpdate<PusherEntity> {
|
monarchy.verifyInsertOrUpdate<PusherEntity> {
|
||||||
|
@ -72,6 +74,42 @@ class DefaultAddPusherTaskTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `given a persisted pusher when adding Pusher then updates api and mutates persisted result with Registered state`() {
|
||||||
|
val realmResult = PusherEntity(appDisplayName = null)
|
||||||
|
monarchy.givenWhereReturns(result = realmResult)
|
||||||
|
|
||||||
|
runBlocking { addPusherTask.execute(AddPusherTask.Params(A_JSON_PUSHER)) }
|
||||||
|
|
||||||
|
pushersAPI.verifySetPusher(A_JSON_PUSHER)
|
||||||
|
|
||||||
|
realmResult.appDisplayName shouldBeEqualTo A_JSON_PUSHER.appDisplayName
|
||||||
|
realmResult.state shouldBeEqualTo PusherState.REGISTERED
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `given a persisted push entity and SetPush API fails when adding Pusher then mutates persisted result with Failed registration state and rethrows error`() {
|
||||||
|
val realmResult = PusherEntity()
|
||||||
|
monarchy.givenWhereReturns(result = realmResult)
|
||||||
|
pushersAPI.givenSetPusherErrors(SocketException())
|
||||||
|
|
||||||
|
assertFailsWith<SocketException> {
|
||||||
|
runBlocking { addPusherTask.execute(AddPusherTask.Params(A_JSON_PUSHER)) }
|
||||||
|
}
|
||||||
|
|
||||||
|
realmResult.state shouldBeEqualTo PusherState.FAILED_TO_REGISTER
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `given no persisted push entity and SetPush API fails when adding Pusher then rethrows error`() {
|
||||||
|
monarchy.givenWhereReturns<PusherEntity>(result = null)
|
||||||
|
pushersAPI.givenSetPusherErrors(SocketException())
|
||||||
|
|
||||||
|
assertFailsWith<SocketException> {
|
||||||
|
runBlocking { addPusherTask.execute(AddPusherTask.Params(A_JSON_PUSHER)) }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class FakePushersAPI : PushersAPI {
|
internal class FakePushersAPI : PushersAPI {
|
||||||
|
|
Loading…
Reference in New Issue