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(
|
internal class DefaultSendLiveLocationTask @Inject constructor(
|
||||||
private val localEchoEventFactory: LocalEchoEventFactory,
|
private val localEchoEventFactory: LocalEchoEventFactory,
|
||||||
private val eventSenderProcessor: EventSenderProcessor,
|
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
|
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(
|
fun verifyCreateLocationEvent(
|
||||||
roomId: String,
|
roomId: String,
|
||||||
latitude: Double,
|
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) {
|
fun verifyCreateLocalEcho(event: Event) {
|
||||||
verify { instance.createLocalEcho(event) }
|
verify { instance.createLocalEcho(event) }
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user