Initial Commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Consumer-side pact recording
|
||||
|
||||
The `@suaveplan/schema-registry` package SHALL ship a `schema-registry.contract.test.ts` that uses `recordPactInteraction` from `@suaveplan/testing-contract` to record interactions against an upstream registry's lookup, register, and compatibility-check endpoints. The resulting pact file MUST be committed to `pacts/schema-registry__upstream-registry.json`.
|
||||
|
||||
#### Scenario: Lookup, register, compatibility recorded
|
||||
|
||||
- **WHEN** the consumer-side test exercises `getSchema`, `registerSchema`, and `checkCompatibility`
|
||||
- **THEN** `pacts/schema-registry__upstream-registry.json` contains at least one interaction per public method
|
||||
|
||||
### Requirement: Provider-side pact verification
|
||||
|
||||
The `@suaveplan/schema-registry` package SHALL ship a `schema-registry.provider.test.ts` that uses `verifyProviderAgainstPact` from `@suaveplan/testing-contract` to replay `pacts/schema-registry__upstream-registry.json` against the registry server implemented by the package itself. Provider states for "subject exists with N versions" SHALL be registered via `options.stateHandlers`.
|
||||
|
||||
#### Scenario: Provider state seeds version history
|
||||
|
||||
- **WHEN** an interaction declares `providerStates:[{ name:"subject 'orders' has 3 versions" }]` AND the corresponding state handler runs
|
||||
- **THEN** the registry under test reports `versions.length === 3` for subject `'orders'` before the interaction is replayed
|
||||
|
||||
#### Scenario: Compatibility break fails verification
|
||||
|
||||
- **WHEN** the registry server's `BACKWARD` compatibility check returns `false` for an interaction recorded as `true`
|
||||
- **THEN** `verifyProviderAgainstPact` throws `TestingContractError` with `code === "TESTING_CONTRACT.VERIFY.MISMATCH"` AND `pact:verify` fails the build
|
||||
Reference in New Issue
Block a user