Unit test for send static location task
This commit is contained in:
parent
f981900cf3
commit
1ecc42c903
@ -32,7 +32,6 @@ internal interface SendStaticLocationTask : Task<SendStaticLocationTask.Params,
|
||||
)
|
||||
}
|
||||
|
||||
// TODO add unit tests
|
||||
internal class DefaultSendStaticLocationTask @Inject constructor(
|
||||
private val localEchoEventFactory: LocalEchoEventFactory,
|
||||
private val eventSenderProcessor: EventSenderProcessor,
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* 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 A_LATITUDE = 1.4
|
||||
private const val A_LONGITUDE = 44.0
|
||||
private const val AN_UNCERTAINTY = 5.0
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
internal class DefaultSendStaticLocationTaskTest {
|
||||
|
||||
private val fakeLocalEchoEventFactory = FakeLocalEchoEventFactory()
|
||||
private val fakeEventSenderProcessor = FakeEventSenderProcessor()
|
||||
|
||||
private val defaultSendStaticLocationTask = DefaultSendStaticLocationTask(
|
||||
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 = SendStaticLocationTask.Params(
|
||||
roomId = A_ROOM_ID,
|
||||
latitude = A_LATITUDE,
|
||||
longitude = A_LONGITUDE,
|
||||
uncertainty = AN_UNCERTAINTY,
|
||||
isUserLocation = true
|
||||
)
|
||||
|
||||
val event = fakeLocalEchoEventFactory.givenCreateLocationEvent(
|
||||
withLocalEcho = true
|
||||
)
|
||||
|
||||
defaultSendStaticLocationTask.execute(params)
|
||||
|
||||
fakeLocalEchoEventFactory.verifyCreateLocationEvent(
|
||||
roomId = params.roomId,
|
||||
latitude = params.latitude,
|
||||
longitude = params.longitude,
|
||||
uncertainty = params.uncertainty,
|
||||
isUserLocation = params.isUserLocation
|
||||
)
|
||||
fakeLocalEchoEventFactory.verifyCreateLocalEcho(event)
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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.test.fakes
|
||||
|
||||
import io.mockk.mockk
|
||||
import org.matrix.android.sdk.api.session.events.model.Event
|
||||
import org.matrix.android.sdk.api.util.Cancelable
|
||||
import org.matrix.android.sdk.internal.session.room.send.queue.EventSenderProcessor
|
||||
|
||||
internal class FakeEventSenderProcessor : EventSenderProcessor by mockk() {
|
||||
|
||||
override fun postEvent(event: Event): Cancelable = mockk()
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* 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.test.fakes
|
||||
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.runs
|
||||
import io.mockk.verify
|
||||
import org.matrix.android.sdk.api.session.events.model.Event
|
||||
import org.matrix.android.sdk.internal.session.room.send.LocalEchoEventFactory
|
||||
|
||||
internal class FakeLocalEchoEventFactory {
|
||||
|
||||
val instance = mockk<LocalEchoEventFactory>()
|
||||
|
||||
fun givenCreateLocationEvent(withLocalEcho: Boolean): Event {
|
||||
val event = Event()
|
||||
every {
|
||||
instance.createLocationEvent(
|
||||
roomId = any(),
|
||||
latitude = any(),
|
||||
longitude = any(),
|
||||
uncertainty = any(),
|
||||
isUserLocation = any()
|
||||
)
|
||||
} returns event
|
||||
|
||||
if (withLocalEcho) {
|
||||
every { instance.createLocalEcho(event) } just runs
|
||||
}
|
||||
return event
|
||||
}
|
||||
|
||||
fun verifyCreateLocationEvent(
|
||||
roomId: String,
|
||||
latitude: Double,
|
||||
longitude: Double,
|
||||
uncertainty: Double?,
|
||||
isUserLocation: Boolean
|
||||
) {
|
||||
verify {
|
||||
instance.createLocationEvent(
|
||||
roomId = roomId,
|
||||
latitude = latitude,
|
||||
longitude = longitude,
|
||||
uncertainty = uncertainty,
|
||||
isUserLocation = isUserLocation
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun verifyCreateLocalEcho(event: Event) {
|
||||
verify { instance.createLocalEcho(event) }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user