Skip to content

Commit

Permalink
Merge pull request #674 from minvws/dashboard-items-tests
Browse files Browse the repository at this point in the history
Unit tests for dashboard items
  • Loading branch information
BartNijland91 authored Sep 22, 2021
2 parents bcc9106 + f25f888 commit 6e974bc
Show file tree
Hide file tree
Showing 8 changed files with 568 additions and 51 deletions.
2 changes: 1 addition & 1 deletion holder/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}

def appVersionCode = System.getenv("GITHUB_RUN_NUMBER") != null ? System.getenv("GITHUB_RUN_NUMBER").toInteger() : 1000000
version = "2.4"
version = "2.3.2"
archivesBaseName = "holder-v${version}-${appVersionCode}"

android {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package nl.rijksoverheid.ctr.holder.ui.create_qr.models

data class DashboardItems(
val domesticItems: List<DashboardItem>,
val internationalItems: List<DashboardItem>
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,15 @@ import nl.rijksoverheid.ctr.holder.persistence.database.DatabaseSyncerResult
import nl.rijksoverheid.ctr.holder.persistence.database.entities.GreenCardType
import nl.rijksoverheid.ctr.holder.persistence.database.models.GreenCard
import nl.rijksoverheid.ctr.holder.ui.create_qr.models.DashboardItem
import nl.rijksoverheid.ctr.holder.ui.create_qr.models.DashboardItems
import nl.rijksoverheid.ctr.holder.ui.create_qr.util.*

interface GetDashboardItemsUseCase {
suspend fun getDomesticItems(
suspend fun getItems(
allGreenCards: List<GreenCard>,
databaseSyncerResult: DatabaseSyncerResult = DatabaseSyncerResult.Success,
isLoadingNewCredentials: Boolean
): List<DashboardItem>
suspend fun getInternationalItems(
allGreenCards: List<GreenCard>,
databaseSyncerResult: DatabaseSyncerResult = DatabaseSyncerResult.Success,
isLoadingNewCredentials: Boolean
): List<DashboardItem>
isLoadingNewCredentials: Boolean,
): DashboardItems
}

class GetDashboardItemsUseCaseImpl(
Expand All @@ -26,8 +22,26 @@ class GetDashboardItemsUseCaseImpl(
private val originUtil: OriginUtil,
private val dashboardItemUtil: DashboardItemUtil,
): GetDashboardItemsUseCase {
override suspend fun getItems(
allGreenCards: List<GreenCard>,
databaseSyncerResult: DatabaseSyncerResult,
isLoadingNewCredentials: Boolean
): DashboardItems {
return DashboardItems(
domesticItems = getDomesticItems(
allGreenCards = allGreenCards,
databaseSyncerResult = databaseSyncerResult,
isLoadingNewCredentials = isLoadingNewCredentials
),
internationalItems = getInternationalItems(
allGreenCards = allGreenCards,
databaseSyncerResult = databaseSyncerResult,
isLoadingNewCredentials = isLoadingNewCredentials
)
)
}

override suspend fun getDomesticItems(
private fun getDomesticItems(
allGreenCards: List<GreenCard>,
databaseSyncerResult: DatabaseSyncerResult,
isLoadingNewCredentials: Boolean,
Expand All @@ -36,12 +50,6 @@ class GetDashboardItemsUseCaseImpl(
val domesticGreenCards = allGreenCards.filter { it.greenCardEntity.type == GreenCardType.Domestic }
val internationalGreenCards = allGreenCards.filter { it.greenCardEntity.type == GreenCardType.Eu }

if (dashboardItemUtil.shouldShowPlaceholderItem(allGreenCards)) {
dashboardItems.add(DashboardItem.PlaceholderCardItem(
greenCardType = GreenCardType.Domestic
))
}

if (dashboardItemUtil.shouldShowHeaderItem(allGreenCards)) {
dashboardItems.add(DashboardItem.HeaderItem(
text = R.string.my_overview_description
Expand All @@ -62,14 +70,20 @@ class GetDashboardItemsUseCaseImpl(
)
)

if (dashboardItemUtil.shouldShowPlaceholderItem(allGreenCards)) {
dashboardItems.add(DashboardItem.PlaceholderCardItem(
greenCardType = GreenCardType.Domestic
))
}

dashboardItems.add(
DashboardItem.AddQrButtonItem(dashboardItemUtil.shouldAddQrButtonItem(allGreenCards))
)

return dashboardItems
}

override suspend fun getInternationalItems(
private fun getInternationalItems(
allGreenCards: List<GreenCard>,
databaseSyncerResult: DatabaseSyncerResult,
isLoadingNewCredentials: Boolean,
Expand All @@ -78,12 +92,6 @@ class GetDashboardItemsUseCaseImpl(
val domesticGreenCards = allGreenCards.filter { it.greenCardEntity.type == GreenCardType.Domestic }
val internationalGreenCards = allGreenCards.filter { it.greenCardEntity.type == GreenCardType.Eu }

if (dashboardItemUtil.shouldShowPlaceholderItem(allGreenCards)) {
dashboardItems.add(DashboardItem.PlaceholderCardItem(
greenCardType = GreenCardType.Eu
))
}

if (dashboardItemUtil.shouldShowHeaderItem(allGreenCards)) {
dashboardItems.add(DashboardItem.HeaderItem(
text = R.string.my_overview_description_eu
Expand All @@ -94,10 +102,6 @@ class GetDashboardItemsUseCaseImpl(
dashboardItems.add(DashboardItem.ClockDeviationItem)
}

dashboardItems.add(
DashboardItem.AddQrButtonItem(dashboardItemUtil.shouldAddQrButtonItem(allGreenCards))
)

dashboardItems.addAll(
getGreenCardItems(
greenCardType = GreenCardType.Eu,
Expand All @@ -108,6 +112,16 @@ class GetDashboardItemsUseCaseImpl(
)
)

if (dashboardItemUtil.shouldShowPlaceholderItem(allGreenCards)) {
dashboardItems.add(DashboardItem.PlaceholderCardItem(
greenCardType = GreenCardType.Eu
))
}

dashboardItems.add(
DashboardItem.AddQrButtonItem(dashboardItemUtil.shouldAddQrButtonItem(allGreenCards))
)

return dashboardItems
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,24 +82,22 @@ class DashboardViewModelImpl(
databaseSyncerResult: DatabaseSyncerResult,
isLoadingNewCredentials: Boolean
) {
val items = getDashboardItemsUseCase.getItems(
allGreenCards = allGreenCards,
databaseSyncerResult = databaseSyncerResult,
isLoadingNewCredentials = isLoadingNewCredentials
)

val domesticItem = DashboardTabItem(
title = R.string.travel_button_domestic,
greenCardType = GreenCardType.Domestic,
items = getDashboardItemsUseCase.getDomesticItems(
allGreenCards = allGreenCards,
databaseSyncerResult = databaseSyncerResult,
isLoadingNewCredentials = isLoadingNewCredentials
)
items = items.domesticItems
)

val internationalItem = DashboardTabItem(
title = R.string.travel_button_europe,
greenCardType = GreenCardType.Eu,
items = getDashboardItemsUseCase.getInternationalItems(
allGreenCards = allGreenCards,
databaseSyncerResult = databaseSyncerResult,
isLoadingNewCredentials = isLoadingNewCredentials
)
items = items.internationalItems
)

val dashboardTabItems = listOf(
Expand Down
58 changes: 48 additions & 10 deletions holder/src/test/java/nl/rijksoverheid/ctr/holder/Fakes.kt
Original file line number Diff line number Diff line change
@@ -1,21 +1,14 @@
package nl.rijksoverheid.ctr.holder

import androidx.lifecycle.MutableLiveData
import androidx.room.DatabaseConfiguration
import androidx.room.InvalidationTracker
import androidx.sqlite.db.SupportSQLiteOpenHelper
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
import io.mockk.mockk
import nl.rijksoverheid.ctr.appconfig.AppConfigViewModel
import nl.rijksoverheid.ctr.appconfig.api.model.HolderConfig
import nl.rijksoverheid.ctr.appconfig.models.AppStatus
import nl.rijksoverheid.ctr.appconfig.usecases.ClockDeviationUseCase
import nl.rijksoverheid.ctr.holder.persistence.CachedAppConfigUseCase
import nl.rijksoverheid.ctr.holder.persistence.PersistenceManager
import nl.rijksoverheid.ctr.holder.persistence.database.HolderDatabase
import nl.rijksoverheid.ctr.holder.persistence.database.dao.*
import nl.rijksoverheid.ctr.holder.persistence.database.entities.EventGroupEntity
import nl.rijksoverheid.ctr.holder.persistence.database.entities.GreenCardType
import nl.rijksoverheid.ctr.holder.persistence.database.entities.OriginType
import nl.rijksoverheid.ctr.holder.persistence.database.entities.*
import nl.rijksoverheid.ctr.holder.persistence.database.models.GreenCard
import nl.rijksoverheid.ctr.holder.persistence.database.usecases.*
import nl.rijksoverheid.ctr.holder.ui.create_qr.CommercialTestCodeViewModel
Expand All @@ -24,7 +17,7 @@ import nl.rijksoverheid.ctr.holder.ui.create_qr.repositories.CoronaCheckReposito
import nl.rijksoverheid.ctr.holder.ui.create_qr.repositories.EventProviderRepository
import nl.rijksoverheid.ctr.holder.ui.create_qr.repositories.TestProviderRepository
import nl.rijksoverheid.ctr.holder.ui.create_qr.usecases.*
import nl.rijksoverheid.ctr.holder.ui.create_qr.util.GreenCardUtil
import nl.rijksoverheid.ctr.holder.ui.create_qr.util.*
import nl.rijksoverheid.ctr.holder.ui.myoverview.DashboardViewModel
import nl.rijksoverheid.ctr.holder.ui.myoverview.usecases.TestResultAttributesUseCase
import nl.rijksoverheid.ctr.holder.ui.myoverview.utils.TokenValidatorUtil
Expand Down Expand Up @@ -507,6 +500,27 @@ fun fakeGreenCardUtil(
}
}

fun fakeCredentialUtil() = object: CredentialUtil {
override fun getActiveCredential(entities: List<CredentialEntity>): CredentialEntity? {
return null
}

override fun isExpiring(credentialRenewalDays: Long, credential: CredentialEntity): Boolean {
return false
}

override fun getTestTypeForEuropeanCredentials(entities: List<CredentialEntity>): String {
return ""
}

override fun getVaccinationDosesForEuropeanCredentials(
entities: List<CredentialEntity>,
getString: (String, String) -> String
): String {
return ""
}
}

fun fakeGetRemoteGreenCardUseCase(result: RemoteGreenCardsResult = RemoteGreenCardsResult.Success(
RemoteGreenCards(null, null)
)) = object: GetRemoteGreenCardsUseCase {
Expand All @@ -523,5 +537,29 @@ fun fakeSyncRemoteGreenCardUseCase(
}
}

fun fakeClockDevationUseCase(
hasDeviation: Boolean = false
) = object: ClockDeviationUseCase() {
override fun store(serverResponseTimestamp: Long, localReceivedTimestamp: Long) {

}

override fun hasDeviation(): Boolean {
return hasDeviation
}
}

val fakeGreenCardEntity = GreenCardEntity(
id = 0,
walletId = 1,
type = GreenCardType.Domestic
)

val fakeGreenCard = GreenCard(
greenCardEntity = fakeGreenCardEntity,
origins = listOf(),
credentialEntities = listOf()
)



Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ import org.koin.dsl.module
*/
class TestHolderApplication : HolderApplication() {

fun addKoinModules(modules: List<Module>) {
loadKoinModules(modules)
}

override fun getAdditionalModules(): List<Module> {
return listOf(module {
factory {
Expand Down
Loading

0 comments on commit 6e974bc

Please sign in to comment.