Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30c7967d authored by Wes Okuhara's avatar Wes Okuhara
Browse files

Screen capture: Update tests to assert UI closes after screenshot

Bug: 442841660
Test: atest PreCaptureViewModelTest
Flag: com.android.systemui.large_screen_screencapture
Change-Id: Ia3584faac72a9bcf7dd0fd3c12ae0a1188058713
parent dd91f1c3
Loading
Loading
Loading
Loading
+50 −9
Original line number Diff line number Diff line
@@ -86,6 +86,19 @@ class PreCaptureViewModelTest : SysuiTestCase() {
        viewModel.activateIn(kosmos.testScope)
    }

    private fun assertUiClosed() {
        with(kosmos) {
            val uiState by
                collectLastValue(
                    kosmos.screenCaptureUiRepository.uiState(
                        com.android.systemui.screencapture.common.shared.model.ScreenCaptureType
                            .RECORD
                    )
                )
            assertThat(uiState).isEqualTo(ScreenCaptureUiState.Invisible)
        }
    }

    @Before
    fun setUp() {
        MockitoAnnotations.openMocks(this)
@@ -263,6 +276,19 @@ class PreCaptureViewModelTest : SysuiTestCase() {
            assertThat(capturedRequest.displayId).isEqualTo(displayId)
        }

    @Test
    fun beginCapture_forFullscreenScreenshot_closesUi() =
        kosmos.runTest {
            setupViewModel()

            viewModel.updateCaptureType(ScreenCaptureType.SCREENSHOT)
            viewModel.updateCaptureRegion(ScreenCaptureRegion.FULLSCREEN)

            viewModel.beginCapture()

            assertUiClosed()
        }

    @Test
    fun beginCapture_forPartialScreenshot_makesCorrectRequest() =
        kosmos.runTest {
@@ -295,6 +321,29 @@ class PreCaptureViewModelTest : SysuiTestCase() {
            assertThat(capturedRequest.displayId).isEqualTo(displayId)
        }

    @Test
    fun beginCapture_forPartialScreenshot_closesUi() =
        kosmos.runTest {
            setupViewModel()

            viewModel.updateCaptureType(ScreenCaptureType.SCREENSHOT)
            viewModel.updateCaptureRegion(ScreenCaptureRegion.PARTIAL)

            val regionBox = Rect(0, 0, 100, 100)
            viewModel.updateRegionBoxBounds(regionBox)

            whenever(kosmos.mockImageCapture.captureDisplay(any(), eq(regionBox)))
                .thenReturn(mockBitmap)

            viewModel.beginCapture()

            // Account for the delay (temporary fix b/435225255)
            advanceTimeBy(100)
            runCurrent()

            assertUiClosed()
        }

    @Test
    fun beginCapture_forFullScreenRecording_startsRecordingWithCorrectParameters() =
        kosmos.runTest {
@@ -408,17 +457,9 @@ class PreCaptureViewModelTest : SysuiTestCase() {
        kosmos.runTest {
            setupViewModel()

            val uiState by
                collectLastValue(
                    kosmos.screenCaptureUiRepository.uiState(
                        com.android.systemui.screencapture.common.shared.model.ScreenCaptureType
                            .RECORD
                    )
                )

            viewModel.closeFromToolbar()

            assertThat(uiState).isEqualTo(ScreenCaptureUiState.Invisible)
            assertUiClosed()
        }

    @Test