Unit test for send live location task
This commit is contained in:
parent
1ecc42c903
commit
879cafc8d1
@ -32,7 +32,6 @@ internal interface SendLiveLocationTask : Task<SendLiveLocationTask.Params, Canc
|
||||
)
|
||||
}
|
||||
|
||||
// TODO add unit tests
|
||||
internal class DefaultSendLiveLocationTask @Inject constructor(
|
||||
private val localEchoEventFactory: LocalEchoEventFactory,
|
||||
private val eventSenderProcessor: EventSenderProcessor,
|
||||
|
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (c) 2022 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.internal.session.room.location
|
||||
|
||||
import io.mockk.unmockkAll
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.After
|
||||
import org.junit.Test
|
||||
import org.matrix.android.sdk.test.fakes.FakeEventSenderProcessor
|
||||
import org.matrix.android.sdk.test.fakes.FakeLocalEchoEventFactory
|
||||
|
||||
private const val A_ROOM_ID = "room_id"
|
||||
private const val AN_EVENT_ID = "event_id"
|
||||
private const val A_LATITUDE = 1.4
|
||||
private const val A_LONGITUDE = 44.0
|
||||
private const val AN_UNCERTAINTY = 5.0
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
internal class DefaultSendLiveLocationTaskTest {
|
||||
|
||||
private val fakeLocalEchoEventFactory = FakeLocalEchoEventFactory()
|
||||
private val fakeEventSenderProcessor = FakeEventSenderProcessor()
|
||||
|
||||
private val defaultSendLiveLocationTask = DefaultSendLiveLocationTask(
|
||||
localEchoEventFactory = fakeLocalEchoEventFactory.instance,
|
||||
eventSenderProcessor = fakeEventSenderProcessor
|
||||
)
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
unmockkAll()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `given parameters when calling the task then it is correctly executed`() = runTest {
|
||||
val params = SendLiveLocationTask.Params(
|
||||
roomId = A_ROOM_ID,
|
||||
beaconInfoEventId = AN_EVENT_ID,
|
||||
latitude = A_LATITUDE,
|
||||
longitude = A_LONGITUDE,
|
||||
uncertainty = AN_UNCERTAINTY
|
||||
)
|
||||
|
||||
val event = fakeLocalEchoEventFactory.givenCreateLiveLocationEvent(
|
||||
withLocalEcho = true
|
||||
)
|
||||
|
||||
defaultSendLiveLocationTask.execute(params)
|
||||
|
||||
fakeLocalEchoEventFactory.verifyCreateLiveLocationEvent(
|
||||
roomId = params.roomId,
|
||||
beaconInfoEventId = params.beaconInfoEventId,
|
||||
latitude = params.latitude,
|
||||
longitude = params.longitude,
|
||||
uncertainty = params.uncertainty
|
||||
)
|
||||
fakeLocalEchoEventFactory.verifyCreateLocalEcho(event)
|
||||
}
|
||||
}
|
@ -46,6 +46,24 @@ internal class FakeLocalEchoEventFactory {
|
||||
return event
|
||||
}
|
||||
|
||||
fun givenCreateLiveLocationEvent(withLocalEcho: Boolean): Event {
|
||||
val event = Event()
|
||||
every {
|
||||
instance.createLiveLocationEvent(
|
||||
beaconInfoEventId = any(),
|
||||
roomId = any(),
|
||||
latitude = any(),
|
||||
longitude = any(),
|
||||
uncertainty = any()
|
||||
)
|
||||
} returns event
|
||||
|
||||
if (withLocalEcho) {
|
||||
every { instance.createLocalEcho(event) } just runs
|
||||
}
|
||||
return event
|
||||
}
|
||||
|
||||
fun verifyCreateLocationEvent(
|
||||
roomId: String,
|
||||
latitude: Double,
|
||||
@ -64,6 +82,24 @@ internal class FakeLocalEchoEventFactory {
|
||||
}
|
||||
}
|
||||
|
||||
fun verifyCreateLiveLocationEvent(
|
||||
roomId: String,
|
||||
beaconInfoEventId: String,
|
||||
latitude: Double,
|
||||
longitude: Double,
|
||||
uncertainty: Double?
|
||||
) {
|
||||
verify {
|
||||
instance.createLiveLocationEvent(
|
||||
roomId = roomId,
|
||||
beaconInfoEventId = beaconInfoEventId,
|
||||
latitude = latitude,
|
||||
longitude = longitude,
|
||||
uncertainty = uncertainty
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun verifyCreateLocalEcho(event: Event) {
|
||||
verify { instance.createLocalEcho(event) }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user