diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessor.kt index dd34a6e48cd3a1970ed050989c295124129eba03..817591e968fdb28dca40793b92f3ceabf977d489 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessor.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessor.kt @@ -6,7 +6,9 @@ import de.rki.coronawarnapp.R import de.rki.coronawarnapp.bugreporting.ui.toErrorDialogBuilder import de.rki.coronawarnapp.coronatest.TestRegistrationRequest import de.rki.coronawarnapp.coronatest.errors.AlreadyRedeemedException +import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.type.CoronaTest +import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.exception.ExceptionCategory import de.rki.coronawarnapp.exception.http.BadRequestException import de.rki.coronawarnapp.exception.http.CwaClientError @@ -20,7 +22,8 @@ import kotlinx.coroutines.sync.withLock import javax.inject.Inject class TestRegistrationStateProcessor @Inject constructor( - private val submissionRepository: SubmissionRepository + private val submissionRepository: SubmissionRepository, + private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector, ) { private val mutex = Mutex() @@ -90,7 +93,11 @@ class TestRegistrationStateProcessor @Inject constructor( if (isSubmissionConsentGiven) { submissionRepository.giveConsentToSubmission(type = coronaTest.type) + if (request is CoronaTestQRCode) { + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(request.type) + } } + stateInternal.value = State.TestRegistered(test = coronaTest) coronaTest } catch (err: Exception) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModel.kt index 2e99ed97093486051fb3d51dd253caeb715471ec..cdbf4b7dcaac3a95a57f758e388f3e8be7102b7c 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModel.kt @@ -7,7 +7,6 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import de.rki.coronawarnapp.coronatest.TestRegistrationRequest import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode -import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor import de.rki.coronawarnapp.util.ui.SingleLiveEvent import de.rki.coronawarnapp.util.viewmodel.CWAViewModel @@ -19,7 +18,6 @@ class RequestCovidCertificateViewModel @AssistedInject constructor( @Assisted("coronaTestConsent") private val coronaTestConsent: Boolean, @Assisted("deleteOldTest") private val deleteOldTest: Boolean, private val registrationStateProcessor: TestRegistrationStateProcessor, - private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector, ) : CWAViewModel() { val registrationState = registrationStateProcessor.state.asLiveData2() @@ -63,8 +61,6 @@ class RequestCovidCertificateViewModel @AssistedInject constructor( isSubmissionConsentGiven = coronaTestConsent, allowReplacement = deleteOldTest ) - - if (coronaTestConsent) analyticsKeySubmissionCollector.reportAdvancedConsentGiven(consentedQrCode.type) } @AssistedFactory diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt index b707a2e43b34b242a43543bb9e0f685559d7832c..7cc747194e11cccf1cfc0319a132d1dbad705fa6 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt @@ -5,7 +5,6 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQrCodeValidator import de.rki.coronawarnapp.coronatest.qrcode.InvalidQRCodeException -import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.submission.SubmissionRepository import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents @@ -24,7 +23,6 @@ class SubmissionQRCodeScanViewModel @AssistedInject constructor( private val registrationStateProcessor: TestRegistrationStateProcessor, private val submissionRepository: SubmissionRepository, private val qrCodeValidator: CoronaTestQrCodeValidator, - private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector ) : CWAViewModel(dispatcherProvider = dispatcherProvider) { val events = SingleLiveEvent<SubmissionNavigationEvents>() @@ -50,8 +48,6 @@ class SubmissionQRCodeScanViewModel @AssistedInject constructor( isSubmissionConsentGiven = isConsentGiven, allowReplacement = false ) - - if (isConsentGiven) analyticsKeySubmissionCollector.reportAdvancedConsentGiven(ctQrCode.type) } else { events.postValue( SubmissionNavigationEvents.NavigateToRequestDccFragment(ctQrCode, isConsentGiven) diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessorTest.kt index 238c38ddeea4605f50275a8b30763e8e7a18e9c7..39256d8213d830e06978280ad7d381407f12b7b2 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessorTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/TestRegistrationStateProcessorTest.kt @@ -1,7 +1,9 @@ package de.rki.coronawarnapp.submission import de.rki.coronawarnapp.coronatest.TestRegistrationRequest +import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.type.CoronaTest +import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.exception.http.BadRequestException import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations @@ -13,6 +15,7 @@ import io.mockk.impl.annotations.MockK import io.mockk.just import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runBlockingTest +import org.joda.time.Instant import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import testhelpers.BaseTest @@ -20,40 +23,55 @@ import testhelpers.BaseTest class TestRegistrationStateProcessorTest : BaseTest() { @MockK lateinit var submissionRepository: SubmissionRepository - @MockK lateinit var request: TestRegistrationRequest - @MockK lateinit var registeredTest: CoronaTest + @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector + @MockK lateinit var registeredTestRA: CoronaTest + @MockK lateinit var registeredTestPCR: CoronaTest + + private val raRequest: TestRegistrationRequest = CoronaTestQRCode.RapidAntigen( + hash = "ra-hash", + createdAt = Instant.EPOCH, + ) + private val pcrRequest: TestRegistrationRequest = CoronaTestQRCode.PCR( + qrCodeGUID = "pcr-guid" + ) @BeforeEach fun setup() { MockKAnnotations.init(this) submissionRepository.apply { - coEvery { registerTest(any()) } returns registeredTest - coEvery { tryReplaceTest(any()) } returns registeredTest + coEvery { registerTest(raRequest) } returns registeredTestRA + coEvery { registerTest(pcrRequest) } returns registeredTestPCR + + coEvery { tryReplaceTest(raRequest) } returns registeredTestRA + coEvery { tryReplaceTest(pcrRequest) } returns registeredTestPCR + coEvery { giveConsentToSubmission(any()) } just Runs } - registeredTest.apply { + registeredTestRA.apply { every { type } returns CoronaTest.Type.RAPID_ANTIGEN } - - request.apply { - every { type } returns CoronaTest.Type.RAPID_ANTIGEN + registeredTestPCR.apply { + every { type } returns CoronaTest.Type.PCR } + + every { analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } just Runs } private fun createInstance() = TestRegistrationStateProcessor( - submissionRepository = submissionRepository + submissionRepository = submissionRepository, + analyticsKeySubmissionCollector = analyticsKeySubmissionCollector, ) @Test - fun `register new test - with consent`() = runBlockingTest { + fun `register new RA test - with consent`() = runBlockingTest { val instance = createInstance() instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle instance.startRegistration( - request = request, + request = raRequest, isSubmissionConsentGiven = true, allowReplacement = false ) @@ -61,23 +79,24 @@ class TestRegistrationStateProcessorTest : BaseTest() { advanceUntilIdle() instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( - test = registeredTest + test = registeredTestRA ) coVerify { - submissionRepository.registerTest(request) + submissionRepository.registerTest(raRequest) submissionRepository.giveConsentToSubmission(CoronaTest.Type.RAPID_ANTIGEN) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.RAPID_ANTIGEN) } } @Test - fun `register new test - without consent`() = runBlockingTest { + fun `register new RA test - without consent`() = runBlockingTest { val instance = createInstance() instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle instance.startRegistration( - request = request, + request = raRequest, isSubmissionConsentGiven = false, allowReplacement = false ) @@ -85,25 +104,26 @@ class TestRegistrationStateProcessorTest : BaseTest() { advanceUntilIdle() instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( - test = registeredTest + test = registeredTestRA ) coVerify { - submissionRepository.registerTest(request) + submissionRepository.registerTest(raRequest) } coVerify(exactly = 0) { submissionRepository.giveConsentToSubmission(any()) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } @Test - fun `replace test - with consent`() = runBlockingTest { + fun `replace RA test - with consent`() = runBlockingTest { val instance = createInstance() instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle instance.startRegistration( - request = request, + request = raRequest, isSubmissionConsentGiven = true, allowReplacement = true ) @@ -111,23 +131,128 @@ class TestRegistrationStateProcessorTest : BaseTest() { advanceUntilIdle() instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( - test = registeredTest + test = registeredTestRA ) coVerify { - submissionRepository.tryReplaceTest(request) + submissionRepository.tryReplaceTest(raRequest) submissionRepository.giveConsentToSubmission(CoronaTest.Type.RAPID_ANTIGEN) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.RAPID_ANTIGEN) + } + } + + @Test + fun `replace RA new test - without consent`() = runBlockingTest { + val instance = createInstance() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle + + instance.startRegistration( + request = raRequest, + isSubmissionConsentGiven = false, + allowReplacement = true + ) + + advanceUntilIdle() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( + test = registeredTestRA + ) + + coVerify { + submissionRepository.tryReplaceTest(raRequest) + } + coVerify(exactly = 0) { + submissionRepository.giveConsentToSubmission(any()) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) + } + } + + @Test + fun `register new PCR test - with consent`() = runBlockingTest { + val instance = createInstance() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle + + instance.startRegistration( + request = pcrRequest, + isSubmissionConsentGiven = true, + allowReplacement = false + ) + + advanceUntilIdle() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( + test = registeredTestPCR + ) + + coVerify { + submissionRepository.registerTest(pcrRequest) + submissionRepository.giveConsentToSubmission(CoronaTest.Type.PCR) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.PCR) + } + } + + @Test + fun `register new PCR test - without consent`() = runBlockingTest { + val instance = createInstance() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle + + instance.startRegistration( + request = pcrRequest, + isSubmissionConsentGiven = false, + allowReplacement = false + ) + + advanceUntilIdle() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( + test = registeredTestPCR + ) + + coVerify { + submissionRepository.registerTest(pcrRequest) + } + coVerify(exactly = 0) { + submissionRepository.giveConsentToSubmission(any()) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) + } + } + + @Test + fun `replace PCR test - with consent`() = runBlockingTest { + val instance = createInstance() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle + + instance.startRegistration( + request = pcrRequest, + isSubmissionConsentGiven = true, + allowReplacement = true + ) + + advanceUntilIdle() + + instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( + test = registeredTestPCR + ) + + coVerify { + submissionRepository.tryReplaceTest(pcrRequest) + submissionRepository.giveConsentToSubmission(CoronaTest.Type.PCR) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.PCR) } } @Test - fun `replace new test - without consent`() = runBlockingTest { + fun `replace PCR new test - without consent`() = runBlockingTest { val instance = createInstance() instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle instance.startRegistration( - request = request, + request = pcrRequest, isSubmissionConsentGiven = false, allowReplacement = true ) @@ -135,14 +260,15 @@ class TestRegistrationStateProcessorTest : BaseTest() { advanceUntilIdle() instance.state.first() shouldBe TestRegistrationStateProcessor.State.TestRegistered( - test = registeredTest + test = registeredTestPCR ) coVerify { - submissionRepository.tryReplaceTest(request) + submissionRepository.tryReplaceTest(pcrRequest) } coVerify(exactly = 0) { submissionRepository.giveConsentToSubmission(any()) + analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } @@ -156,7 +282,7 @@ class TestRegistrationStateProcessorTest : BaseTest() { instance.state.first() shouldBe TestRegistrationStateProcessor.State.Idle instance.startRegistration( - request = request, + request = raRequest, isSubmissionConsentGiven = true, allowReplacement = false ) @@ -168,7 +294,7 @@ class TestRegistrationStateProcessorTest : BaseTest() { ) coVerify { - submissionRepository.registerTest(request) + submissionRepository.registerTest(raRequest) } coVerify(exactly = 0) { submissionRepository.giveConsentToSubmission(any()) diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModelTest.kt index 7787f4a27c46facb49b5b4b1063951cab25bd446..61c9d776d4e008c867526a9e26b03ca1a6191b5b 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModelTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/covidcertificate/RequestCovidCertificateViewModelTest.kt @@ -2,16 +2,13 @@ package de.rki.coronawarnapp.ui.submission.covidcertificate import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.type.CoronaTest -import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations -import io.mockk.Runs import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every import io.mockk.impl.annotations.MockK -import io.mockk.just import io.mockk.mockk import kotlinx.coroutines.flow.flowOf import org.joda.time.Instant @@ -28,7 +25,6 @@ import testhelpers.extensions.getOrAwaitValue internal class RequestCovidCertificateViewModelTest : BaseTest() { @MockK lateinit var testRegistrationStateProcessor: TestRegistrationStateProcessor - @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector @MockK lateinit var coronaTest: CoronaTest private val date = LocalDate.parse( @@ -49,7 +45,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { } every { coronaTest.identifier } returns "identifier" - every { analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } just Runs } private fun createInstance( @@ -61,7 +56,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { coronaTestConsent = coronTestConsent, deleteOldTest = deleteOldTest, registrationStateProcessor = testRegistrationStateProcessor, - analyticsKeySubmissionCollector = analyticsKeySubmissionCollector ) @Test @@ -84,7 +78,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = true ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -101,7 +94,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = false ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -117,7 +109,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = true ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -133,7 +124,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = false ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -149,7 +139,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = true ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -165,7 +154,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = false ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -181,7 +169,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = true ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -197,7 +184,6 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { isSubmissionConsentGiven = any(), allowReplacement = false ) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } } } @@ -225,44 +211,4 @@ internal class RequestCovidCertificateViewModelTest : BaseTest() { events.getOrAwaitValue() shouldBe ToDispatcherScreen } } - - @Test - fun `onAgreeGC reports analytics`() { - createInstance(coronTestConsent = true).apply { - onAgreeGC() - coVerify { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) - } - } - } - - @Test - fun `onDisagreeGC reports analytics`() { - createInstance(coronTestConsent = true).apply { - onDisagreeGC() - coVerify { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) - } - } - } - - @Test - fun `onAgreeGC does not report analytics`() { - createInstance(coronTestConsent = false).apply { - onAgreeGC() - coVerify(exactly = 0) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) - } - } - } - - @Test - fun `onDisagreeGC does not report analytics`() { - createInstance(coronTestConsent = false).apply { - onDisagreeGC() - coVerify(exactly = 0) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) - } - } - } } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt index 977907d7f68634f32c0825e343ba360c85f6be81..a15c1e8d97c7ed2453c7245640fd11199fc95710 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt @@ -4,23 +4,18 @@ import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQrCodeValidator import de.rki.coronawarnapp.coronatest.qrcode.InvalidQRCodeException import de.rki.coronawarnapp.coronatest.type.CoronaTest -import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.submission.SubmissionRepository import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor import de.rki.coronawarnapp.util.permission.CameraSettings import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations -import io.mockk.Runs import io.mockk.coEvery import io.mockk.every import io.mockk.impl.annotations.MockK -import io.mockk.just import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.flowOf -import kotlinx.coroutines.test.runBlockingTest -import org.joda.time.Instant import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -36,7 +31,6 @@ class SubmissionQRCodeScanViewModelTest : BaseTest() { @MockK lateinit var cameraSettings: CameraSettings @MockK lateinit var qrCodeValidator: CoronaTestQrCodeValidator @MockK lateinit var testRegistrationStateProcessor: TestRegistrationStateProcessor - @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector @BeforeEach fun setUp() { @@ -57,7 +51,6 @@ class SubmissionQRCodeScanViewModelTest : BaseTest() { registrationStateProcessor = testRegistrationStateProcessor, submissionRepository = submissionRepository, qrCodeValidator = qrCodeValidator, - analyticsKeySubmissionCollector = analyticsKeySubmissionCollector ) @Test @@ -97,77 +90,4 @@ class SubmissionQRCodeScanViewModelTest : BaseTest() { verify { cameraSettings.isCameraDeniedPermanently } } - - @Test - fun `registerCoronaTest() should call analyticsKeySubmissionCollector for PCR tests`() = - runBlockingTest { - val coronaTestQRCode = CoronaTestQRCode.PCR(qrCodeGUID = "123456-12345678-1234-4DA7-B166-B86D85475064") - - every { qrCodeValidator.validate(any()) } returns coronaTestQRCode - every { analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } just Runs - - createViewModel().registerCoronaTest(rawResult = "") - - verify(exactly = 0) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.PCR) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.RAPID_ANTIGEN) - } - } - - @Test - fun `registerCoronaTest() should NOT call analyticsKeySubmissionCollector for RAT tests`() = - runBlockingTest { - val coronaTestQRCode = CoronaTestQRCode.PCR(qrCodeGUID = "123456-12345678-1234-4DA7-B166-B86D85475064") - - every { qrCodeValidator.validate(any()) } returns coronaTestQRCode - every { analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } just Runs - - createViewModel().registerCoronaTest(rawResult = "") - - verify(exactly = 0) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.PCR) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.RAPID_ANTIGEN) - } - } - - @Test - fun `registerCoronaTest() should call analyticsKeySubmissionCollector for RAT tests - no-dcc support`() = - runBlockingTest { - val coronaTestQRCode = CoronaTestQRCode.RapidAntigen( - hash = "123456-12345678-1234-4DA7-B166-B86D85475064", - createdAt = Instant.EPOCH, - isDccSupportedByPoc = false - ) - - every { qrCodeValidator.validate(any()) } returns coronaTestQRCode - every { analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } just Runs - - createViewModel().registerCoronaTest(rawResult = "") - - verify(exactly = 1) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.RAPID_ANTIGEN) - } - verify(exactly = 0) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.PCR) - } - } - - @Test - fun `registerCoronaTest() should Not call analyticsKeySubmissionCollector for RAT tests - dcc support`() = - runBlockingTest { - val coronaTestQRCode = CoronaTestQRCode.RapidAntigen( - hash = "123456-12345678-1234-4DA7-B166-B86D85475064", - createdAt = Instant.EPOCH, - isDccSupportedByPoc = true - ) - - every { qrCodeValidator.validate(any()) } returns coronaTestQRCode - every { analyticsKeySubmissionCollector.reportAdvancedConsentGiven(any()) } just Runs - - createViewModel().registerCoronaTest(rawResult = "") - verify(exactly = 0) { - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.RAPID_ANTIGEN) - analyticsKeySubmissionCollector.reportAdvancedConsentGiven(CoronaTest.Type.PCR) - } - } }