test(database): share real-backend atomic conformance tests - #17
Merged
Merged
Conversation
Exercise portable mutation behavior through the provider resolved by ajs. Preserve interface encoding and mocked-outcome tests separately. The standalone test provider must support atomicMutation before this follow-up can be released.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Outcome
Adds 13 real-backend atomic mutation conformance tests to
src/tests/atomic_mutation_operations.test.ts. The publisheddist/testssuite is automatically discovered byajs module testfor modules declaring@antelopejs/interface-databaseinantelopeJs.implements.This supplements the existing atomic encoding, validation, and outcome-wrapper tests, which remain unchanged. The new suite uses public database operations rather than mocking query execution or importing provider internals. There are no production API changes or package version changes.
Coverage includes competing updates, revision deletion versus update, scalar cleanup versus refresh, stale revisions, missing identities/no upsert, tenant/default scope, absent versus null revisions, literal top-level replacement, unchanged payload revision advancement, scalar equality, and declared Date equality. Each contention scenario runs eight rounds.
Verification
git diff --check: passed. Existing lint warnings and configuration hints remain.5d479cf8e486d371d278e2c6a2ed5ab0dab9007b6126b3689bb558b1411ed114. Its metadata still says0.1.5, but it is not the published 0.1.5 package and must not be republished under that version.Merge/release blocker: standalone test provider
Do not merge or publish yet.
src/antelope.test.tsstill selects published@antelopejs/mongodb@1.2.7, which does not implement atomic mutations. The standalone interface test run has 171 passing and 13 failing tests, all new failures reportingUnimplemented stage: atomicMutation. This is an explicit prerequisite failure, not a skipped or suppressed check.Resolve the fixture with an atomic-capable MongoDB provider: either a separately approved release of MongoDB #33, followed by pinning its actual published version here, or an explicitly coordinated test-only fixture. Then rerun standalone interface CI and the three providers before publishing a new interface version.
Follow-up ordering
Only after the new interface version is published should the prepared provider duplicate removals be combined with minimum-version/lockfile updates and registry-only verification:
Their current remote test coverage is unchanged. If MongoDB #33 is merged first to unblock the fixture, its later test cleanup needs a follow-up PR instead of updating the closed PR.
No merge, package release, deployment, or shared-database writes are part of this PR creation.