Skip to content

Seed the compliance suites: self-aggregating evolve, DCB tag query/consistency, AssignTagWhere (P3.1b) #5112

Description

@jeremydmiller

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

  1. 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.
  2. assign_tag_where_by_stream_id keeps Marten's e.StreamId == stream1 assertion (the Polecat mirror weakened it to Data-type checks).
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions