|
| 1 | +package com.caplin.integration.datasourcex.reactive.core |
| 2 | + |
| 3 | +import com.caplin.datasource.Service |
| 4 | +import com.caplin.datasource.internal.ServiceImpl |
| 5 | +import com.caplin.datasource.publisher.CachingPublisher |
| 6 | +import com.caplin.integration.datasourcex.reactive.api.ServiceConfig |
| 7 | +import com.caplin.integration.datasourcex.util.AntPatternNamespace |
| 8 | +import io.kotest.core.spec.style.FunSpec |
| 9 | +import io.mockk.Runs |
| 10 | +import io.mockk.every |
| 11 | +import io.mockk.just |
| 12 | +import io.mockk.mockk |
| 13 | +import io.mockk.mockkConstructor |
| 14 | +import io.mockk.slot |
| 15 | +import io.mockk.verify |
| 16 | +import kotlinx.coroutines.flow.flowOf |
| 17 | + |
| 18 | +class BinderTest : |
| 19 | + FunSpec({ |
| 20 | + test("Ant namespace binding to a service") { |
| 21 | + mockkConstructor(ServiceImpl::class) |
| 22 | + |
| 23 | + val publisher = mockk<CachingPublisher>() |
| 24 | + val mockDataSource = |
| 25 | + mockk<ScopedDataSource> { |
| 26 | + every { configuration } returns |
| 27 | + mockk { every { getStringValue("datasrc-local-label") } returns "local-label" } |
| 28 | + every { createService(any()) } just Runs |
| 29 | + every { createCachingPublisher(any(), any()) } returns publisher |
| 30 | + } |
| 31 | + val binder = Binder(mockDataSource) |
| 32 | + |
| 33 | + val namespace = AntPatternNamespace("/PRIVATE/{username}/{param}") |
| 34 | + binder.withServiceConfig(ServiceConfig("abc")) { |
| 35 | + it.bindActiveRecord({}, namespace, { flowOf(mapOf()) }) |
| 36 | + } |
| 37 | + |
| 38 | + val service = slot<Service>() |
| 39 | + verify { mockDataSource.createService(capture(service)) } |
| 40 | + |
| 41 | + verify { |
| 42 | + (service.captured as ServiceImpl).addIncludePattern("^\\/PRIVATE\\/[^/]*\\/[^/]*$") |
| 43 | + } |
| 44 | + } |
| 45 | + }) |
0 commit comments