Skip to content

Commit 2ec511b

Browse files
committed
test: fix unit tests for QNN backend
Update test mocks and fixtures to support QNN repository and use cases: - Add QnnGenerationRepository mocks to generation use case tests - Add GetForgeModulesUseCase to generation viewmodel tests - Add QNN preferences to configuration tests - Fix mapper tests for model name field - Add missing parameters to presentation viewmodel tests
1 parent 64ae49d commit 2ec511b

16 files changed

Lines changed: 91 additions & 4 deletions

File tree

data/src/test/java/com/shifthackz/aisdv1/data/local/DownloadableModelLocalDataSourceTest.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,19 @@ class DownloadableModelLocalDataSourceTest {
217217
}
218218

219219
@Test
220-
fun `given attempt to get model by id, dao throws exception, expected error true`() {
220+
fun `given attempt to get model by id, dao throws exception and no builtin model found, expected error`() {
221221
every {
222222
stubDao.queryById(any())
223223
} returns Single.error(stubException)
224224

225+
every {
226+
stubQnnModelsBuiltInDataSource.getAll()
227+
} returns Single.just(emptyList())
228+
225229
localDataSource
226230
.getById("5598")
227231
.test()
228-
.assertError(stubException)
232+
.assertError { it is NoSuchElementException }
229233
.assertNoValues()
230234
.await()
231235
.assertNotComplete()

data/src/test/java/com/shifthackz/aisdv1/data/mocks/GenerationResultEntityMocks.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ val mockGenerationResultEntity = GenerationResultEntity(
2626
mediaPath = "",
2727
inputMediaPath = "",
2828
mediaType = "IMAGE",
29-
modelName = "",
29+
modelName = "MockModel",
3030
)
3131

3232
val mockGenerationResultEntities = listOf(mockGenerationResultEntity)

data/src/test/java/com/shifthackz/aisdv1/data/remote/DownloadableModelRemoteDataSourceTest.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,13 @@ class DownloadableModelRemoteDataSourceTest {
2929
whenever(stubApi.fetchMediaPipeModels())
3030
.thenReturn(Single.just(mockDownloadableModelsResponse))
3131

32+
whenever(stubApi.fetchQnnModels())
33+
.thenReturn(Single.just(mockDownloadableModelsResponse))
34+
3235
val expected = listOf(
3336
mockDownloadableModelsResponse.mapRawToCheckpointDomain(LocalAiModel.Type.ONNX),
3437
mockDownloadableModelsResponse.mapRawToCheckpointDomain(LocalAiModel.Type.MediaPipe),
38+
mockDownloadableModelsResponse.mapRawToCheckpointDomain(LocalAiModel.Type.QNN),
3539
).flatten()
3640

3741
remoteDataSource
@@ -51,6 +55,9 @@ class DownloadableModelRemoteDataSourceTest {
5155
whenever(stubApi.fetchMediaPipeModels())
5256
.thenReturn(Single.just(emptyList()))
5357

58+
whenever(stubApi.fetchQnnModels())
59+
.thenReturn(Single.just(emptyList()))
60+
5461
remoteDataSource
5562
.fetch()
5663
.test()
@@ -68,6 +75,9 @@ class DownloadableModelRemoteDataSourceTest {
6875
whenever(stubApi.fetchMediaPipeModels())
6976
.thenReturn(Single.error(stubException))
7077

78+
whenever(stubApi.fetchQnnModels())
79+
.thenReturn(Single.error(stubException))
80+
7181
remoteDataSource
7282
.fetch()
7383
.test()

domain/src/test/java/com/shifthackz/aisdv1/domain/mocks/ConfigurationMocks.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ val mockConfiguration = Configuration(
1717
localOnnxModelPath = "/storage/emulated/0/5598",
1818
localMediaPipeModelId = "5598",
1919
localMediaPipeModelPath = "/storage/emulated/0/5598",
20+
localQnnModelId = "5598",
21+
localQnnModelPath = "/storage/emulated/0/5598",
2022
)

domain/src/test/java/com/shifthackz/aisdv1/domain/usecase/generation/ImageToImageUseCaseImplTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.shifthackz.aisdv1.domain.preference.PreferenceManager
1010
import com.shifthackz.aisdv1.domain.repository.HordeGenerationRepository
1111
import com.shifthackz.aisdv1.domain.repository.HuggingFaceGenerationRepository
1212
import com.shifthackz.aisdv1.domain.repository.StabilityAiGenerationRepository
13+
import com.shifthackz.aisdv1.domain.repository.QnnGenerationRepository
1314
import com.shifthackz.aisdv1.domain.repository.StableDiffusionGenerationRepository
1415
import com.shifthackz.aisdv1.domain.repository.SwarmUiGenerationRepository
1516
import io.reactivex.rxjava3.core.Single
@@ -23,6 +24,7 @@ class ImageToImageUseCaseImplTest {
2324
private val stubHordeGenerationRepository = mock<HordeGenerationRepository>()
2425
private val stubHuggingFaceGenerationRepository = mock<HuggingFaceGenerationRepository>()
2526
private val stubStabilityAiGenerationRepository = mock<StabilityAiGenerationRepository>()
27+
private val stubQnnGenerationRepository = mock<QnnGenerationRepository>()
2628
private val stubPreferenceManager = mock<PreferenceManager>()
2729

2830
private val useCase = ImageToImageUseCaseImpl(
@@ -31,6 +33,7 @@ class ImageToImageUseCaseImplTest {
3133
hordeGenerationRepository = stubHordeGenerationRepository,
3234
huggingFaceGenerationRepository = stubHuggingFaceGenerationRepository,
3335
stabilityAiGenerationRepository = stubStabilityAiGenerationRepository,
36+
qnnGenerationRepository = stubQnnGenerationRepository,
3437
preferenceManager = stubPreferenceManager,
3538
)
3639

domain/src/test/java/com/shifthackz/aisdv1/domain/usecase/generation/InterruptGenerationUseCaseImplTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.shifthackz.aisdv1.domain.entity.ServerSource
66
import com.shifthackz.aisdv1.domain.preference.PreferenceManager
77
import com.shifthackz.aisdv1.domain.repository.HordeGenerationRepository
88
import com.shifthackz.aisdv1.domain.repository.LocalDiffusionGenerationRepository
9+
import com.shifthackz.aisdv1.domain.repository.QnnGenerationRepository
910
import com.shifthackz.aisdv1.domain.repository.StableDiffusionGenerationRepository
1011
import io.reactivex.rxjava3.core.Completable
1112
import org.junit.Test
@@ -16,12 +17,14 @@ class InterruptGenerationUseCaseImplTest {
1617
private val stubStableDiffusionGenerationRepository = mock<StableDiffusionGenerationRepository>()
1718
private val stubHordeGenerationRepository = mock<HordeGenerationRepository>()
1819
private val stubLocalDiffusionGenerationRepository = mock<LocalDiffusionGenerationRepository>()
20+
private val stubQnnGenerationRepository = mock<QnnGenerationRepository>()
1921
private val stubPreferenceManager = mock<PreferenceManager>()
2022

2123
private val useCase = InterruptGenerationUseCaseImpl(
2224
stableDiffusionGenerationRepository = stubStableDiffusionGenerationRepository,
2325
hordeGenerationRepository = stubHordeGenerationRepository,
2426
localDiffusionGenerationRepository = stubLocalDiffusionGenerationRepository,
27+
qnnGenerationRepository = stubQnnGenerationRepository,
2528
preferenceManager = stubPreferenceManager,
2629
)
2730

domain/src/test/java/com/shifthackz/aisdv1/domain/usecase/generation/TextToImageUseCaseImplTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.shifthackz.aisdv1.domain.repository.LocalDiffusionGenerationRepositor
1414
import com.shifthackz.aisdv1.domain.repository.MediaPipeGenerationRepository
1515
import com.shifthackz.aisdv1.domain.repository.OpenAiGenerationRepository
1616
import com.shifthackz.aisdv1.domain.repository.StabilityAiGenerationRepository
17+
import com.shifthackz.aisdv1.domain.repository.QnnGenerationRepository
1718
import com.shifthackz.aisdv1.domain.repository.StableDiffusionGenerationRepository
1819
import com.shifthackz.aisdv1.domain.repository.SwarmUiGenerationRepository
1920
import io.reactivex.rxjava3.core.Single
@@ -31,6 +32,7 @@ class TextToImageUseCaseImplTest {
3132
private val stubSwarmUiGenerationRepository = mock<SwarmUiGenerationRepository>()
3233
private val stubLocalDiffusionGenerationRepository = mock<LocalDiffusionGenerationRepository>()
3334
private val stubMediaPipeGenerationRepository = mock<MediaPipeGenerationRepository>()
35+
private val stubQnnGenerationRepository = mock<QnnGenerationRepository>()
3436
private val stubPreferenceManager = mock<PreferenceManager>()
3537

3638
private val useCase = TextToImageUseCaseImpl(
@@ -43,6 +45,7 @@ class TextToImageUseCaseImplTest {
4345
swarmUiGenerationRepository = stubSwarmUiGenerationRepository,
4446
localDiffusionGenerationRepository = stubLocalDiffusionGenerationRepository,
4547
mediaPipeGenerationRepository = stubMediaPipeGenerationRepository,
48+
qnnGenerationRepository = stubQnnGenerationRepository,
4649
preferenceManager = stubPreferenceManager,
4750
)
4851

domain/src/test/java/com/shifthackz/aisdv1/domain/usecase/settings/GetConfigurationUseCaseImplTest.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ class GetConfigurationUseCaseImplTest {
8888
stubPreferenceManager::falAiApiKey.get()
8989
} returns mockConfiguration.falAiApiKey
9090

91+
every {
92+
stubPreferenceManager::localQnnModelId.get()
93+
} returns mockConfiguration.localQnnModelId
94+
95+
every {
96+
stubPreferenceManager::localQnnCustomModelPath.get()
97+
} returns mockConfiguration.localQnnModelPath
98+
9199
useCase
92100
.invoke()
93101
.test()

domain/src/test/java/com/shifthackz/aisdv1/domain/usecase/settings/SetServerConfigurationUseCaseImplTest.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ class SetServerConfigurationUseCaseImplTest {
8787
stubPreferenceManager::falAiApiKey.set(any())
8888
} returns Unit
8989

90+
every {
91+
stubPreferenceManager::localQnnModelId.set(any())
92+
} returns Unit
93+
94+
every {
95+
stubPreferenceManager::localQnnCustomModelPath.set(any())
96+
} returns Unit
97+
9098
useCase
9199
.invoke(mockConfiguration)
92100
.test()

presentation/src/test/java/com/shifthackz/aisdv1/presentation/core/CoreGenerationMviViewModelTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.shifthackz.aisdv1.domain.usecase.generation.ObserveHordeProcessStatus
1616
import com.shifthackz.aisdv1.domain.usecase.generation.ObserveLocalDiffusionProcessStatusUseCase
1717
import com.shifthackz.aisdv1.domain.usecase.generation.SaveGenerationResultUseCase
1818
import com.shifthackz.aisdv1.domain.usecase.sdsampler.GetStableDiffusionSamplersUseCase
19+
import com.shifthackz.aisdv1.domain.usecase.forgemodule.GetForgeModulesUseCase
1920
import com.shifthackz.aisdv1.domain.usecase.wakelock.AcquireWakelockUseCase
2021
import com.shifthackz.aisdv1.domain.usecase.wakelock.ReleaseWakeLockUseCase
2122
import com.shifthackz.aisdv1.presentation.navigation.router.drawer.DrawerRouter
@@ -55,6 +56,7 @@ abstract class CoreGenerationMviViewModelTest<V : GenerationMviViewModel<*, *, *
5556
protected val stubWakeLockInterActor = mockk<WakeLockInterActor>()
5657
protected val stubBackgroundWorkObserver = mockk<BackgroundWorkObserver>()
5758
protected val stubBackgroundTaskManager = mockk<BackgroundTaskManager>()
59+
protected val stubGetForgeModulesUseCase = mockk<GetForgeModulesUseCase>()
5860

5961
private val stubHordeProcessStatus = BehaviorSubject.create<HordeProcessStatus>()
6062
private val stubLdStatus = BehaviorSubject.create<LocalDiffusionStatus>()

0 commit comments

Comments
 (0)