FeatureStoreContractTest

abstract class FeatureStoreContractTest(body: FunSpec.() -> Unit = {}) : FunSpec(source)

Abstract contract test for FeatureStore implementations.

This abstract class defines a comprehensive test suite that all FeatureStore implementations must pass. It implements all specific contract test interfaces:

  • featureStoreCrudTests

  • featureStoreGroupTests

  • featureStorePermissionTests

  • featureStoreConcurrencyTests

To use this contract test, extend this class and implement the createStore method:

class InMemoryFeatureStoreTest : FeatureStoreContractTest() {
override suspend fun createStore(): FeatureStore = InMemoryFeatureStore()
}

Constructors

Link copied to clipboard
constructor(body: FunSpec.() -> Unit = {})

Properties

Link copied to clipboard
var assertions: AssertionMode?
Link copied to clipboard
Link copied to clipboard
@ExperimentalKotest
var blockingTest: Boolean?
Link copied to clipboard
@ExperimentalKotest
var concurrency: Int?
Link copied to clipboard
Link copied to clipboard
@ExperimentalKotest
var coroutineDispatcherFactory: CoroutineDispatcherFactory?
Link copied to clipboard
Link copied to clipboard
var defaultTestConfig: TestCaseConfig?
Link copied to clipboard
@ExperimentalKotest
var dispatcherAffinity: Boolean?
Link copied to clipboard
var duplicateTestNameMode: DuplicateTestNameMode?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
var isolationMode: IsolationMode?
Link copied to clipboard
var severity: TestCaseSeverityLevel?
Link copied to clipboard
@ExperimentalKotest
var testCoroutineDispatcher: Boolean?
Link copied to clipboard
var testOrder: TestCaseOrder?
Link copied to clipboard
var threads: Int?
Link copied to clipboard

Functions

Link copied to clipboard
open override fun add(test: RootTest)
Link copied to clipboard
fun afterAny(f: suspend (Tuple2<TestCase, TestResult>) -> Unit)
open suspend fun afterAny(testCase: TestCase, result: TestResult)
Link copied to clipboard
fun afterContainer(f: suspend (Tuple2<TestCase, TestResult>) -> Unit)
open suspend fun afterContainer(testCase: TestCase, result: TestResult)
Link copied to clipboard
fun afterEach(f: suspend (Tuple2<TestCase, TestResult>) -> Unit)
open suspend fun afterEach(testCase: TestCase, result: TestResult)
Link copied to clipboard
fun afterInvocation(f: suspend (TestCase, Int) -> Unit)
Link copied to clipboard
fun afterProject(f: AfterProject)
Link copied to clipboard
open suspend fun afterSpec(spec: Spec)
open override fun afterSpec(f: suspend (Spec) -> Unit)
Link copied to clipboard
open override fun afterTest(f: suspend (Tuple2<TestCase, TestResult>) -> Unit)
open suspend fun afterTest(testCase: TestCase, result: TestResult)
Link copied to clipboard
fun appliedTags(): Set<Tag>
Link copied to clipboard
fun aroundSpec(aroundSpecFn: suspend (Tuple2<KClass<out Spec>, suspend () -> Unit>) -> Unit)
Link copied to clipboard
fun aroundTest(aroundTestFn: suspend (Tuple2<TestCase, suspend (TestCase) -> TestResult>) -> TestResult)
Link copied to clipboard
open fun assertionMode(): AssertionMode?
Link copied to clipboard
fun <T : AutoCloseable> autoClose(closeable: T): T
fun <T : AutoCloseable> autoClose(closeable: Lazy<T>): Lazy<T>
Link copied to clipboard
fun beforeAny(f: suspend (TestCase) -> Unit)
open suspend fun beforeAny(testCase: TestCase)
Link copied to clipboard
fun beforeContainer(f: suspend (TestCase) -> Unit)
open suspend fun beforeContainer(testCase: TestCase)
Link copied to clipboard
fun beforeEach(f: suspend (TestCase) -> Unit)
open suspend fun beforeEach(testCase: TestCase)
Link copied to clipboard
fun beforeInvocation(f: suspend (TestCase, Int) -> Unit)
Link copied to clipboard
fun beforeSpec(f: suspend (Spec) -> Unit)
open suspend fun beforeSpec(spec: Spec)
Link copied to clipboard
open suspend fun beforeTest(testCase: TestCase)
open override fun beforeTest(f: suspend (TestCase) -> Unit)
Link copied to clipboard
@ExperimentalKotest
open fun concurrency(): Int?
Link copied to clipboard
@ExperimentalKotest
open fun context(name: String): RootContainerWithConfigBuilder<FunSpecContainerScope>
open fun context(name: String, test: suspend FunSpecContainerScope.() -> Unit)
Link copied to clipboard
open fun coroutineDispatcherFactory(): CoroutineDispatcherFactory?
Link copied to clipboard
abstract suspend fun createStore(): FeatureStore
Link copied to clipboard
open fun defaultTestCaseConfig(): TestCaseConfig?
Link copied to clipboard
@ExperimentalKotest
open fun dispatcherAffinity(): Boolean?
Link copied to clipboard
fun <T : Extension> extension(extension: T): T
fun extension(f: suspend (Tuple2<TestCase, suspend (TestCase) -> TestResult>) -> TestResult)
Link copied to clipboard
fun extensions(vararg extensions: Extension)
fun extensions(extensions: List<Extension>)
open fun extensions(): List<Extension>
Link copied to clipboard
fun finalizeSpec(f: suspend (Tuple2<KClass<out Spec>, Map<TestCase, TestResult>>) -> Unit)
Link copied to clipboard
open override fun globalExtensions(): List<Extension>
Link copied to clipboard
fun include(factory: TestFactory)
fun include(prefix: String, factory: TestFactory)
Link copied to clipboard
open fun invocationTimeout(): Long?
Link copied to clipboard
open fun isolationMode(): IsolationMode?
Link copied to clipboard
fun <T : TestListener> listener(listener: T): T
Link copied to clipboard
fun listeners(vararg listeners: TestListener)
fun listeners(listeners: List<TestListener>)
open fun listeners(): List<TestListener>
Link copied to clipboard
fun prependExtension(extension: Extension)
Link copied to clipboard
fun prependExtensions(extensions: List<Extension>)
Link copied to clipboard
fun <T : TestListener> register(extension: T): T
fun register(vararg extensions: Extension)
fun register(extensions: List<Extension>)
Link copied to clipboard
fun registeredAutoCloseables(): List<Lazy<AutoCloseable>>
Link copied to clipboard
fun registeredExtensions(): List<Extension>
Link copied to clipboard
open override fun rootTests(): List<RootTest>
Link copied to clipboard
fun seal()
Link copied to clipboard
fun setParentConfiguration(configuration: TestConfiguration)
Link copied to clipboard
open override fun tags(vararg tags: Tag)
open fun tags(): Set<Tag>
Link copied to clipboard
open fun test(name: String): RootTestWithConfigBuilder
open fun test(name: String, test: suspend TestScope.() -> Unit)
Link copied to clipboard
open fun testCaseOrder(): TestCaseOrder?
Link copied to clipboard
open fun threads(): Int?
Link copied to clipboard
open fun timeout(): Long?
Link copied to clipboard
@ExperimentalKotest
open fun xcontext(name: String): RootContainerWithConfigBuilder<FunSpecContainerScope>
open fun xcontext(name: String, test: suspend FunSpecContainerScope.() -> Unit)
Link copied to clipboard
open fun xtest(name: String): RootTestWithConfigBuilder
open fun xtest(name: String, test: suspend TestScope.() -> Unit)