Skip to content

Commit 4e2f45a

Browse files
committed
Address code review comments for FakeCaptureController: use UNLIMITED channel and add simulateCaptureEvent
1 parent 08e9084 commit 4e2f45a

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

ui/controller/testing/src/main/java/com/google/jetpackcamera/ui/controller/testing/FakeCaptureController.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,23 @@ import kotlinx.coroutines.channels.ReceiveChannel
3333
* @param setAudioEnabledAction The action to perform when [setAudioEnabled] is called.
3434
*/
3535
class FakeCaptureController(
36-
override val captureEvents: ReceiveChannel<CaptureEvent> = Channel(),
36+
override val captureEvents: ReceiveChannel<CaptureEvent> = Channel(Channel.UNLIMITED),
3737
var captureImageAction: (ContentResolver) -> Unit = {},
3838
var startVideoRecordingAction: () -> Unit = {},
3939
var stopVideoRecordingAction: () -> Unit = {},
4040
var setLockedRecordingAction: (Boolean) -> Unit = {},
4141
var setPausedAction: (Boolean) -> Unit = {},
4242
var setAudioEnabledAction: (Boolean) -> Unit = {}
4343
) : CaptureController {
44+
/**
45+
* Simulates a [CaptureEvent] being emitted by the controller.
46+
* This relies on the [captureEvents] instance being a [Channel].
47+
*/
48+
fun simulateCaptureEvent(event: CaptureEvent) {
49+
(captureEvents as? Channel<CaptureEvent>)?.trySend(event)
50+
?: throw IllegalStateException("captureEvents is not a Channel")
51+
}
52+
4453
override fun captureImage(contentResolver: ContentResolver) {
4554
captureImageAction(contentResolver)
4655
}

ui/controller/testing/src/test/java/com/google/jetpackcamera/ui/controller/testing/FakeCaptureControllerTest.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import android.content.Context
2020
import androidx.test.core.app.ApplicationProvider
2121
import com.google.common.truth.Truth.assertThat
2222
import com.google.jetpackcamera.model.CaptureEvent
23+
import com.google.jetpackcamera.model.ImageCaptureEvent
2324
import kotlinx.coroutines.channels.Channel
2425
import org.junit.Test
2526
import org.junit.runner.RunWith
@@ -34,6 +35,16 @@ class FakeCaptureControllerTest {
3435
assertThat(controller.captureEvents).isEqualTo(channel)
3536
}
3637

38+
@Test
39+
fun simulateCaptureEvent_emitsToCaptureEventsChannel() {
40+
val controller = FakeCaptureController()
41+
val event = ImageCaptureEvent.SingleImageSaved()
42+
controller.simulateCaptureEvent(event)
43+
44+
val receivedEvent = controller.captureEvents.tryReceive().getOrNull()
45+
assertThat(receivedEvent).isEqualTo(event)
46+
}
47+
3748
@Test
3849
fun captureImage_invokesAction() {
3950
var calledResolver: ContentResolver? = null

0 commit comments

Comments
 (0)