@saasicat/persistence-testing 1.0.0-rc.3 → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/dist/.build-stamp +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @saasicat/persistence-testing
|
|
2
2
|
|
|
3
|
+
## What this is
|
|
4
|
+
|
|
3
5
|
The executable persistence contract for SaaSiCat adapters. One `node:test`
|
|
4
6
|
suite that every adapter (Prisma and Drizzle ship today, TypeORM plugs into
|
|
5
7
|
the same harness) must pass **against a real database** — this is what makes
|
|
@@ -26,6 +28,17 @@ gated-off group reports as **skipped with reason** — coverage gaps stay
|
|
|
26
28
|
visible, never silent. Roadmap scenarios (subscription contracts, reference
|
|
27
29
|
migrations N→N+1) are registered as visible skips until the slices ship.
|
|
28
30
|
|
|
31
|
+
## What this is not
|
|
32
|
+
|
|
33
|
+
Not a test framework and not a set of fixtures for your application. It is one
|
|
34
|
+
executable contract: the suite an adapter must pass before it can claim to
|
|
35
|
+
implement the ports.
|
|
36
|
+
|
|
37
|
+
Not runnable without a database. The semantics it checks — row locks, rollback,
|
|
38
|
+
atomic promo redemption, tenant isolation — are exactly the ones an in-memory
|
|
39
|
+
double cannot have, so it needs a real PostgreSQL and says so when it does not
|
|
40
|
+
find one.
|
|
41
|
+
|
|
29
42
|
## Usage
|
|
30
43
|
|
|
31
44
|
```js
|
|
@@ -64,3 +77,8 @@ fixture writes are schema-specific. See
|
|
|
64
77
|
In-memory fakes must not be used to "verify" an adapter — they cannot
|
|
65
78
|
emulate lock semantics (declare `pessimisticLocking: false` and the lock
|
|
66
79
|
scenarios gate off, visibly).
|
|
80
|
+
|
|
81
|
+
## Next
|
|
82
|
+
|
|
83
|
+
- [Ports and adapters](../../docs/explanation/adr/0007-ports-and-adapters.md) — what a port promises
|
|
84
|
+
- [Test coverage](../../docs/explanation/test-coverage.md) — what this contract reaches, and what it does not
|
package/dist/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
54504dfad58694d04f572b1988c322264de68a2dc5aac252a38189073cc44d82
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saasicat/persistence-testing",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.4",
|
|
4
4
|
"description": "Contract test kit for SaaSiCat persistence adapters: one node:test suite that every adapter (Prisma, Drizzle, ...) must pass against a real database — locks, transaction rollback, atomic promo claims, tenant isolation, audit/MFA roundtrips.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dist"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@saasicat/core": "^1.0.0-rc.
|
|
26
|
+
"@saasicat/core": "^1.0.0-rc.4"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^25.6.0",
|