Part of #5110. Blocked by P3.1a (the seam).
Port the three highest-overlap Marten↔Polecat test pairs into abstract compliance suites written once against EventStoreComplianceFixture<,>:
SelfAggregatingEvolveCompliance (from EventSourcingTests/Aggregation/self_aggregating_evolve_method.cs; 84% line overlap with the Polecat mirror, 8/8 methods)
DcbTagQueryAndConsistencyCompliance (from EventSourcingTests/Dcb/dcb_tag_query_and_consistency_tests.cs; 79%, 24/26)
AssignTagWhereCompliance (from EventSourcingTests/Dcb/assign_tag_where_tests.cs; 72%, 6/6)
Marten-side: concrete subclasses in EventSourcingTests consume them through the Marten fixture; the original Marten test files are then retired (program steps 1–2: write on the standard base, retire the old).
Strongest-assertion-wins fixes (decision D5) — these are real findings, not style
- Inline-snapshot tests must assert document persistence via
LoadDocumentAsync — the Polecat mirror reads back via AggregateStreamAsync (live re-fold) and would pass with a broken inline projection.
assign_tag_where_by_stream_id keeps Marten's e.StreamId == stream1 assertion (the Polecat mirror weakened it to Data-type checks).
- Adopt Polecat's
can_query_events_across_distinct_tag_types_with_or regression test (INNER JOIN bug) — Marten gains this coverage on day one; if Marten fails it, that is a product bug to fix, not a test to soften.
Verification: EventSourcingTests net9.0 full suite; the retired originals' coverage is a strict subset of the new suites.
🤖 Generated with Claude Code
Part of #5110. Blocked by P3.1a (the seam).
Port the three highest-overlap Marten↔Polecat test pairs into abstract compliance suites written once against
EventStoreComplianceFixture<,>:SelfAggregatingEvolveCompliance(fromEventSourcingTests/Aggregation/self_aggregating_evolve_method.cs; 84% line overlap with the Polecat mirror, 8/8 methods)DcbTagQueryAndConsistencyCompliance(fromEventSourcingTests/Dcb/dcb_tag_query_and_consistency_tests.cs; 79%, 24/26)AssignTagWhereCompliance(fromEventSourcingTests/Dcb/assign_tag_where_tests.cs; 72%, 6/6)Marten-side: concrete subclasses in EventSourcingTests consume them through the Marten fixture; the original Marten test files are then retired (program steps 1–2: write on the standard base, retire the old).
Strongest-assertion-wins fixes (decision D5) — these are real findings, not style
LoadDocumentAsync— the Polecat mirror reads back viaAggregateStreamAsync(live re-fold) and would pass with a broken inline projection.assign_tag_where_by_stream_idkeeps Marten'se.StreamId == stream1assertion (the Polecat mirror weakened it to Data-type checks).can_query_events_across_distinct_tag_types_with_orregression test (INNER JOIN bug) — Marten gains this coverage on day one; if Marten fails it, that is a product bug to fix, not a test to soften.Verification: EventSourcingTests net9.0 full suite; the retired originals' coverage is a strict subset of the new suites.
🤖 Generated with Claude Code