runStoreTck
@rotorsoft/act-root / act-tck/src / runStoreTck
Function: runStoreTck()
runStoreTck(
options):void
Defined in: libs/act-tck/src/store-tck.ts:239
Runs the Store contract test compatibility kit against the
implementation produced by options.factory.
The TCK is the executable definition of the Store contract.
Every method on the interface in libs/act/src/types/ports.ts has
matching cases here:
commit— single + multi-event commits, optimistic concurrencyquery— stream, names, correlation, before, after, created_after, created_before, limit, with_snaps, stream_exact, backward traversal- stream filter grammar — the portable regex subset (
^,$,.,.*, literal characters) matches identically everywhere; richer patterns either match with full regex semantics or throwValidationError— never a silent approximation subscribe— idempotent re-subscribe, watermark return valueclaim/ack— lease lifecycle, dual frontiers, leased streams not double-claimed, exact-source fetch, timed-out-lease retry accountingblock— blocked streams hidden from claim, only same-drainer can blockreset— restart watermarks (including blocked), no-op for missingprioritize— bulk priority updates by filtertruncate— snapshot vs tombstone seeding, empty inputs, missing streams; windowed boundaries (before/max_id) — prefix deleted behind the closest safe snapshot, tail + subscriptions kept, no-snapshot no-op, mixed full + windowed targetsquery_streams— filters, exact-match, pagination, blockednotify(capability-gated) — cross-instance delivery, self-filtering (an instance never receives its own commits), one notification per stream a commit appends to, with that stream's events
Tests namespace their streams with a per-test uid so the suite is parallel-safe against a shared backing store (e.g., a real Postgres instance running tests for the whole monorepo concurrently).
Parameters
options
Returns
void
Example
import { runStoreTck } from "@rotorsoft/act-tck";
import { InMemoryStore } from "@rotorsoft/act";
runStoreTck({
name: "InMemoryStore",
factory: () => new InMemoryStore(),
});