From 597c7b0ec6d1a934891e742d17de3969e9be62cd Mon Sep 17 00:00:00 2001 From: naturecurly Date: Mon, 7 Apr 2025 23:37:36 +1000 Subject: [PATCH 1/2] Remove startup and use Hilt to instantiate Wharf singleton. --- compose/build.gradle.kts | 2 - compose/src/main/AndroidManifest.xml | 16 ------- .../com/naturecurly/deck/compose/WharfImpl.kt | 11 ++--- .../{DeckInitializer.kt => di/WharfModule.kt} | 31 +++++++++---- .../java/com/naturecurly/deck/DeckProvider.kt | 10 ++-- .../main/java/com/naturecurly/deck/Wharf.kt | 4 -- .../deck/{WharfLocal.kt => WharfAccess.kt} | 16 ++++--- .../com/naturecurly/deck/WharfAccessImpl.kt | 46 +++++++++++++++++++ .../com/naturecurly/deck/DeckProviderTest.kt | 4 +- .../kotlin/com/naturecurly/deck/WharfTest.kt | 9 ---- .../deck/sample/feature1/MainViewModel.kt | 6 ++- 11 files changed, 92 insertions(+), 63 deletions(-) delete mode 100644 compose/src/main/AndroidManifest.xml rename compose/src/main/java/com/naturecurly/deck/compose/{DeckInitializer.kt => di/WharfModule.kt} (62%) rename core/src/main/java/com/naturecurly/deck/{WharfLocal.kt => WharfAccess.kt} (74%) create mode 100644 core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt diff --git a/compose/build.gradle.kts b/compose/build.gradle.kts index f80a46d..a5ce095 100644 --- a/compose/build.gradle.kts +++ b/compose/build.gradle.kts @@ -51,7 +51,6 @@ kover { classes( "com.naturecurly.deck.compose.DeckKt", "com.naturecurly.deck.compose.DeckComposeContainerUi", - "com.naturecurly.deck.compose.DeckInitializer", "com.naturecurly.deck.compose.DeckScope", "com.naturecurly.deck.compose.DeckScopeImpl", ) @@ -69,7 +68,6 @@ kover { dependencies { api(projects.core) implementation(platform(libs.androidx.compose.bom)) - implementation(libs.androidx.compose.runtime) implementation(libs.androidx.compose.ui) implementation(libs.hilt) ksp(libs.hilt.compiler) diff --git a/compose/src/main/AndroidManifest.xml b/compose/src/main/AndroidManifest.xml deleted file mode 100644 index 69087bf..0000000 --- a/compose/src/main/AndroidManifest.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt b/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt index 3a43369..a1eb921 100644 --- a/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt +++ b/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt @@ -23,7 +23,6 @@ package com.naturecurly.deck.compose import android.app.Application -import android.content.Context import com.naturecurly.deck.DeckContainer import com.naturecurly.deck.DeckProvider import com.naturecurly.deck.Wharf @@ -37,22 +36,18 @@ class WharfImpl : Wharf() { // synchronizedMap is used to make the map thread-safe? private val entryPoints: MutableMap, Class> = mutableMapOf() - internal fun init(context: Context) { + internal fun init(app: Application) { entryPoints.clear() deckEntry.clear() runCatching { entryPoints.putAll( - EntryPoints.get(context, DeckDependenciesEntryPoint::class.java).dependencies(), + EntryPoints.get(app, DeckDependenciesEntryPoint::class.java).dependencies(), ) }.onFailure { DeckLog.e("WharfImpl initialization failed", it) return } - if (context is Application) { - application = context - } else { - DeckLog.w("Context is not an instance of Application") - } + application = app } @Suppress("UNCHECKED_CAST") diff --git a/compose/src/main/java/com/naturecurly/deck/compose/DeckInitializer.kt b/compose/src/main/java/com/naturecurly/deck/compose/di/WharfModule.kt similarity index 62% rename from compose/src/main/java/com/naturecurly/deck/compose/DeckInitializer.kt rename to compose/src/main/java/com/naturecurly/deck/compose/di/WharfModule.kt index 4607863..b71bc57 100644 --- a/compose/src/main/java/com/naturecurly/deck/compose/DeckInitializer.kt +++ b/compose/src/main/java/com/naturecurly/deck/compose/di/WharfModule.kt @@ -20,16 +20,29 @@ * SOFTWARE. */ -package com.naturecurly.deck.compose +package com.naturecurly.deck.compose.di -import android.content.Context -import androidx.startup.Initializer +import android.app.Application +import com.naturecurly.deck.Wharf +import com.naturecurly.deck.WharfAccess +import com.naturecurly.deck.WharfAccessImpl +import com.naturecurly.deck.compose.WharfImpl +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton -class DeckInitializer : Initializer { - override fun create(context: Context): WharfImpl = - WharfImpl().apply { - init(context) - } +@Module +@InstallIn(SingletonComponent::class) +class WharfModule { + @Provides + @Singleton + fun provideWharf(app: Application): Wharf = WharfImpl().apply { + init(app) + } - override fun dependencies(): List?>?> = emptyList() + @Provides + @Singleton + fun provideWharfAccess(wharf: Wharf): WharfAccess = WharfAccessImpl(wharf) } diff --git a/core/src/main/java/com/naturecurly/deck/DeckProvider.kt b/core/src/main/java/com/naturecurly/deck/DeckProvider.kt index 1d9d8ad..a3cbf69 100644 --- a/core/src/main/java/com/naturecurly/deck/DeckProvider.kt +++ b/core/src/main/java/com/naturecurly/deck/DeckProvider.kt @@ -26,14 +26,14 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.merge import kotlinx.coroutines.launch -interface DeckProvider { +interface DeckProvider : WharfAccess { private val containers: Set> - get() = WharfLocal.get().getDeckContainers(System.identityHashCode(this)) + get() = getDeckContainers(System.identityHashCode(this)) val containerUis: Map> - get() = WharfLocal.get().getDeckContainerUis(System.identityHashCode(this)) + get() = getDeckContainerUis(System.identityHashCode(this)) fun initDeckProvider(scope: CoroutineScope) { - WharfLocal.get().registerNewProvider(this::class, System.identityHashCode(this)) + registerNewProvider(this::class, System.identityHashCode(this)) containers.forEach { it.init(scope) } val containersFlow = merge(*(containers.map { it.containerEventFlow }.toTypedArray())) scope.launch { @@ -50,6 +50,6 @@ interface DeckProvider { fun onContainerEvent(containerEvent: ContainerEvent) fun onDeckClear() { - WharfLocal.get().clearProvider(System.identityHashCode(this)) + clearProvider(System.identityHashCode(this)) } } diff --git a/core/src/main/java/com/naturecurly/deck/Wharf.kt b/core/src/main/java/com/naturecurly/deck/Wharf.kt index 701c79f..8f5dd3f 100644 --- a/core/src/main/java/com/naturecurly/deck/Wharf.kt +++ b/core/src/main/java/com/naturecurly/deck/Wharf.kt @@ -27,10 +27,6 @@ import com.naturecurly.deck.model.DeckEntry abstract class Wharf : ProviderRegister { protected val deckEntry = DeckEntry() - init { - WharfLocal.init(this) - } - internal fun getDeckContainers( providerIdentity: Int, ): Set> { diff --git a/core/src/main/java/com/naturecurly/deck/WharfLocal.kt b/core/src/main/java/com/naturecurly/deck/WharfAccess.kt similarity index 74% rename from core/src/main/java/com/naturecurly/deck/WharfLocal.kt rename to core/src/main/java/com/naturecurly/deck/WharfAccess.kt index d81bcf7..50cfeb3 100644 --- a/core/src/main/java/com/naturecurly/deck/WharfLocal.kt +++ b/core/src/main/java/com/naturecurly/deck/WharfAccess.kt @@ -22,11 +22,15 @@ package com.naturecurly.deck -internal object WharfLocal { - private lateinit var wharf: Wharf - internal fun init(wharf: Wharf) { - this.wharf = wharf - } +import kotlin.reflect.KClass - internal fun get() = wharf +interface WharfAccess { + fun registerNewProvider( + providerClass: KClass>, + providerIdentity: Int, + ) + + fun getDeckContainers(providerIdentity: Int): Set> + fun getDeckContainerUis(providerIdentity: Int): Map> + fun clearProvider(providerIdentity: Int) } diff --git a/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt b/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt new file mode 100644 index 0000000..8b7a479 --- /dev/null +++ b/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2025 naturecurly + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.naturecurly.deck + +import kotlin.reflect.KClass + +class WharfAccessImpl(private val wharf: Wharf) : WharfAccess { + override fun getDeckContainers(providerIdentity: Int): Set> { + return wharf.getDeckContainers(providerIdentity) + } + + override fun getDeckContainerUis(providerIdentity: Int): Map> { + return wharf.getDeckContainerUis(providerIdentity) + } + + override fun clearProvider(providerIdentity: Int) { + return wharf.clearProvider(providerIdentity) + } + + override fun registerNewProvider( + providerClass: KClass>, + providerIdentity: Int, + ) { + wharf.registerNewProvider(providerClass, providerIdentity) + } +} diff --git a/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt b/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt index 4f7b639..d60dec0 100644 --- a/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt +++ b/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt @@ -55,7 +55,6 @@ class DeckProviderTest { every { mockedContainer.init(any()) } just runs every { mockedContainer.onDataReady(any(), any()) } just runs every { mockedContainer.containerEventFlow } returns mockedContainerEventFlow - WharfLocal.init(wharf) } @Test @@ -105,7 +104,8 @@ class DeckProviderTest { } private fun getDeckProvider(eventList: MutableList = mutableListOf()): DeckProvider { - val provider = object : DeckProvider { + val mockedWharfAccess: WharfAccess = mockk() + val provider = object : DeckProvider, WharfAccess by mockedWharfAccess { override fun onContainerEvent(containerEvent: ContainerEvent) { eventList.add(containerEvent) } diff --git a/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt b/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt index 1977fdb..f921f49 100644 --- a/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt +++ b/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt @@ -103,15 +103,6 @@ class WharfTest { assertThat(wharfImpl.getDeckContainerUis(123, filterDisabled = false)).isEmpty() } - @Test - fun `verify WharfLocal`() { - // Given - val wharfImpl = WharfTest(listOf()) - val actual = WharfLocal.get() - // Then - assertThat(actual).isEqualTo(wharfImpl) - } - class WharfTest(private val containerContainerUiPairs: List, DeckContainer<*, *>>>) : Wharf() { override fun registerNewProvider( providerClass: KClass>, diff --git a/sample/mainFeature/src/main/java/com/naturecurly/deck/sample/feature1/MainViewModel.kt b/sample/mainFeature/src/main/java/com/naturecurly/deck/sample/feature1/MainViewModel.kt index 1eb43a9..396d355 100644 --- a/sample/mainFeature/src/main/java/com/naturecurly/deck/sample/feature1/MainViewModel.kt +++ b/sample/mainFeature/src/main/java/com/naturecurly/deck/sample/feature1/MainViewModel.kt @@ -28,15 +28,17 @@ import androidx.lifecycle.viewModelScope import com.naturecurly.deck.ContainerEvent import com.naturecurly.deck.DeckProvider import com.naturecurly.deck.RefreshProvider +import com.naturecurly.deck.WharfAccess import com.naturecurly.deck.annotations.Provider import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel @Provider("MainFeature") -class MainViewModel @Inject constructor() : +class MainViewModel @Inject constructor(private val wharfAccess: WharfAccess) : ViewModel(), - DeckProvider { + DeckProvider, + WharfAccess by wharfAccess { init { initDeckProvider(viewModelScope) onDeckReady(viewModelScope, "Hello, World!") From d186419aa978011cd4e87ab2e8c36bb09edc681f Mon Sep 17 00:00:00 2001 From: naturecurly Date: Wed, 9 Apr 2025 20:07:23 +1000 Subject: [PATCH 2/2] Remove startup and use Hilt to instantiate Wharf singleton. --- compose/build.gradle.kts | 4 ++- .../com/naturecurly/deck/compose/WharfImpl.kt | 6 ++-- .../naturecurly/deck/compose/WharfImplTest.kt | 36 +++++-------------- .../com/naturecurly/deck/ProviderRegister.kt | 32 ----------------- .../main/java/com/naturecurly/deck/Wharf.kt | 8 ++++- .../com/naturecurly/deck/WharfAccessImpl.kt | 2 +- .../com/naturecurly/deck/DeckProviderTest.kt | 8 ++--- .../kotlin/com/naturecurly/deck/WharfTest.kt | 8 ++--- 8 files changed, 29 insertions(+), 75 deletions(-) delete mode 100644 core/src/main/java/com/naturecurly/deck/ProviderRegister.kt diff --git a/compose/build.gradle.kts b/compose/build.gradle.kts index a5ce095..5f4e82b 100644 --- a/compose/build.gradle.kts +++ b/compose/build.gradle.kts @@ -53,13 +53,15 @@ kover { "com.naturecurly.deck.compose.DeckComposeContainerUi", "com.naturecurly.deck.compose.DeckScope", "com.naturecurly.deck.compose.DeckScopeImpl", + "com.naturecurly.deck.compose.di.*", + "hilt_aggregated_deps.*", ) } } verify { rule { minBound(95, CoverageUnit.LINE) - minBound(80, CoverageUnit.BRANCH) + minBound(75, CoverageUnit.BRANCH) } } } diff --git a/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt b/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt index a1eb921..4cfe387 100644 --- a/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt +++ b/compose/src/main/java/com/naturecurly/deck/compose/WharfImpl.kt @@ -23,7 +23,6 @@ package com.naturecurly.deck.compose import android.app.Application -import com.naturecurly.deck.DeckContainer import com.naturecurly.deck.DeckProvider import com.naturecurly.deck.Wharf import com.naturecurly.deck.compose.log.DeckLog @@ -33,7 +32,6 @@ import kotlin.reflect.KClass class WharfImpl : Wharf() { private var application: Application? = null - // synchronizedMap is used to make the map thread-safe? private val entryPoints: MutableMap, Class> = mutableMapOf() internal fun init(app: Application) { @@ -51,14 +49,14 @@ class WharfImpl : Wharf() { } @Suppress("UNCHECKED_CAST") - override fun registerNewProvider( + override fun registerNewProvider( providerClass: KClass>, providerIdentity: Int, ) { entryPoints[providerClass.java]?.let { dep -> application?.let { app -> val dependencies = EntryPoints.get(app, dep) - val containers = dependencies.containers() as Set> + val containers = dependencies.containers() deckEntry.addProvider(providerIdentity) containers.forEach { deckEntry.addContainer( diff --git a/compose/src/test/kotlin/com/naturecurly/deck/compose/WharfImplTest.kt b/compose/src/test/kotlin/com/naturecurly/deck/compose/WharfImplTest.kt index 626a8f9..1aee9f9 100644 --- a/compose/src/test/kotlin/com/naturecurly/deck/compose/WharfImplTest.kt +++ b/compose/src/test/kotlin/com/naturecurly/deck/compose/WharfImplTest.kt @@ -23,12 +23,14 @@ package com.naturecurly.deck.compose import android.app.Application -import android.content.Context import android.util.Log import com.naturecurly.deck.ContainerEvent import com.naturecurly.deck.DeckContainer import com.naturecurly.deck.DeckContainerUi import com.naturecurly.deck.DeckProvider +import com.naturecurly.deck.Wharf +import com.naturecurly.deck.WharfAccess +import com.naturecurly.deck.WharfAccessImpl import com.naturecurly.deck.compose.log.DeckLog import dagger.hilt.EntryPoints import io.mockk.every @@ -92,30 +94,6 @@ class WharfImplTest { verify { DeckLog.e(any(), any()) } } - @Test - fun `verify WharfImpl with non Application context`() { - // Given - val mockedContext: Context = mockk(relaxed = true) - val entryPoints: DeckDependenciesEntryPoint = object : DeckDependenciesEntryPoint { - override fun dependencies(): Map, @JvmSuppressWildcards Class> { - return mapOf() - } - } - mockkStatic(EntryPoints::class) - every { - EntryPoints.get( - mockedContext, - DeckDependenciesEntryPoint::class.java, - ) - } returns entryPoints - // When - val wharf = WharfImpl() - wharf.init(mockedContext) - // Then - verify(exactly = 0) { DeckLog.e(any(), any()) } - verify { DeckLog.w(any()) } - } - @Test fun `verify WharfImpl registerNewProvider`() { // Given @@ -142,7 +120,7 @@ class WharfImplTest { // When val wharf = WharfImpl() wharf.init(mockedContext) - wharf.registerNewProvider(DeckProviderTest::class, 123) + wharf.registerNewProvider(DeckProviderTest::class, 123) // Then verify(exactly = 0) { DeckLog.e(any(), any()) } verify(exactly = 0) { DeckLog.w(any()) } @@ -153,10 +131,12 @@ class WharfImplTest { // Given // When val wharf = WharfImpl() - wharf.registerNewProvider(DeckProviderTest::class, 123) + wharf.registerNewProvider(DeckProviderTest::class, 123) } - class DeckProviderTest : DeckProvider { + class DeckProviderTest(wharf: Wharf) : + DeckProvider, + WharfAccess by WharfAccessImpl(wharf) { override fun onContainerEvent(containerEvent: ContainerEvent) { } } diff --git a/core/src/main/java/com/naturecurly/deck/ProviderRegister.kt b/core/src/main/java/com/naturecurly/deck/ProviderRegister.kt deleted file mode 100644 index c71a948..0000000 --- a/core/src/main/java/com/naturecurly/deck/ProviderRegister.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2025 naturecurly - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.naturecurly.deck - -import kotlin.reflect.KClass - -interface ProviderRegister { - fun registerNewProvider( - providerClass: KClass>, - providerIdentity: Int, - ) -} diff --git a/core/src/main/java/com/naturecurly/deck/Wharf.kt b/core/src/main/java/com/naturecurly/deck/Wharf.kt index 8f5dd3f..c69376a 100644 --- a/core/src/main/java/com/naturecurly/deck/Wharf.kt +++ b/core/src/main/java/com/naturecurly/deck/Wharf.kt @@ -23,8 +23,9 @@ package com.naturecurly.deck import com.naturecurly.deck.model.DeckEntry +import kotlin.reflect.KClass -abstract class Wharf : ProviderRegister { +abstract class Wharf { protected val deckEntry = DeckEntry() internal fun getDeckContainers( @@ -53,4 +54,9 @@ abstract class Wharf : ProviderRegister { internal fun clearProvider(providerIdentity: Int) { deckEntry.clearProvider(providerIdentity) } + + abstract fun registerNewProvider( + providerClass: KClass>, + providerIdentity: Int, + ) } diff --git a/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt b/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt index 8b7a479..a615656 100644 --- a/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt +++ b/core/src/main/java/com/naturecurly/deck/WharfAccessImpl.kt @@ -41,6 +41,6 @@ class WharfAccessImpl(private val wharf: Wharf) : WharfAccess { providerClass: KClass>, providerIdentity: Int, ) { - wharf.registerNewProvider(providerClass, providerIdentity) + wharf.registerNewProvider(providerClass, providerIdentity) } } diff --git a/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt b/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt index d60dec0..ad697e3 100644 --- a/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt +++ b/core/src/test/kotlin/com/naturecurly/deck/DeckProviderTest.kt @@ -48,7 +48,7 @@ class DeckProviderTest { @Before fun setUp() { - every { wharf.registerNewProvider(any(), any()) } just runs + every { wharf.registerNewProvider(any(), any()) } just runs every { wharf.getDeckContainers(any()) } returns setOf(mockedContainer) every { wharf.getDeckContainerUis(any()) } returns mapOf("1" to mockedContainerUi) every { wharf.clearProvider(any()) } just runs @@ -67,7 +67,7 @@ class DeckProviderTest { provider.initDeckProvider(testScope) mockedContainerEventFlow.emit(RefreshProvider) // Then - verify { wharf.registerNewProvider(provider::class, any()) } + verify { wharf.registerNewProvider(provider::class, any()) } verify { mockedContainer.init(testScope) } assertThat(events.first()).isEqualTo(RefreshProvider) } @@ -89,7 +89,7 @@ class DeckProviderTest { provider.initDeckProvider(testScope) provider.onDeckReady(testScope, "test") // Then - verify { wharf.registerNewProvider(provider::class, any()) } + verify { wharf.registerNewProvider(provider::class, any()) } verify { mockedContainer.init(testScope) } verify { mockedContainer.onDataReady(testScope, "test") } } @@ -104,7 +104,7 @@ class DeckProviderTest { } private fun getDeckProvider(eventList: MutableList = mutableListOf()): DeckProvider { - val mockedWharfAccess: WharfAccess = mockk() + val mockedWharfAccess: WharfAccess = WharfAccessImpl(wharf) val provider = object : DeckProvider, WharfAccess by mockedWharfAccess { override fun onContainerEvent(containerEvent: ContainerEvent) { eventList.add(containerEvent) diff --git a/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt b/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt index f921f49..4df6aa6 100644 --- a/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt +++ b/core/src/test/kotlin/com/naturecurly/deck/WharfTest.kt @@ -41,7 +41,7 @@ class WharfTest { listOf(mockContainerUiToContainerPairOne, mockContainerUiToContainerPairTwo), ) // When - wharfImpl.registerNewProvider(providerClass, 123) + wharfImpl.registerNewProvider(providerClass, 123) val containers = wharfImpl.getDeckContainers(providerIdentity = 123) // Then assertThat(containers).isNotEmpty() @@ -59,7 +59,7 @@ class WharfTest { listOf(mockContainerUiToContainerPairOne, mockContainerUiToContainerPairTwo), ) // When - wharfImpl.registerNewProvider(providerClass, 123) + wharfImpl.registerNewProvider(providerClass, 123) val containers = wharfImpl.getDeckContainers(providerIdentity = 123) var containerUis = wharfImpl.getDeckContainerUis(123, filterDisabled = false) // Then @@ -94,7 +94,7 @@ class WharfTest { listOf(mockContainerUiToContainerPairOne, mockContainerUiToContainerPairTwo), ) // When - wharfImpl.registerNewProvider(providerClass, 123) + wharfImpl.registerNewProvider(providerClass, 123) val containers = wharfImpl.getDeckContainers(providerIdentity = 123) wharfImpl.clearProvider(123) // Then @@ -104,7 +104,7 @@ class WharfTest { } class WharfTest(private val containerContainerUiPairs: List, DeckContainer<*, *>>>) : Wharf() { - override fun registerNewProvider( + override fun registerNewProvider( providerClass: KClass>, providerIdentity: Int, ) {