Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,30 @@ Critical path for MVP: Stages 1–5, 7–8, 10–11
xunit.v3 is built against Microsoft.Testing.Platform 1.x; anything 2.x makes every test run die at
startup with a `TypeLoadException`. See the comment in `Directory.Packages.props`.

### Cross-store compliance suites

Event sourcing behavior that Polecat and Marten both have belongs in
`JasperFx.Events.ComplianceTests` (source-only package; the suites compile into `Polecat.Tests` so
JasperFx's aggregate source generator binds Polecat's session types). Enroll a suite with an empty
subclass in `Compliance/polecat_event_store_compliance.cs`, implement whatever seam it needs on
`PolecatComplianceFixture`, and delete the Polecat-local copy. Ten suites are enrolled across three
waves (#393, #400, #399).

To iterate on a suite before the JasperFx release, build against a working copy instead of the
package:

```
dotnet build src/Polecat.Tests/Polecat.Tests.csproj \
-p:ComplianceSourceDir=$HOME/code/jasperfx/src/JasperFx.Events.ComplianceTests
```

**Two markers, opposite meanings.** `ported:` on a test file means it *duplicates* a test that also
exists in another store and should eventually move into a shared suite — one file carries it today,
`Linq/additional_linq_operator_tests.cs`, blocked because there is no document-db compliance library.
A bare `marten#NNNN` citation means the opposite: Polecat implemented the same feature and the issue
number is provenance. Do not treat a `marten#NNNN` count as a porting backlog; it grows with every
parity feature and never converges.

### Writing tests that survive being run in parallel processes

The suite is a candidate for being run across several worker processes at once (Bobcat's supervisor
Expand Down
17 changes: 11 additions & 6 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -61,23 +61,28 @@
Also carries the jasperfx#594 patch half (a timed-out blue/green side-effect gate
re-reads progression and succeeds when the replay had already reached the mark, plus a
configurable DaemonSettings.SideEffectGateTimeout), jasperfx#595 (BatchingChannel could
deliver its trailing batch twice on shutdown) and #597. Same lockstep rule as above. -->
<PackageVersion Include="JasperFx" Version="2.37.2" />
<PackageVersion Include="JasperFx.Events" Version="2.37.2" />
deliver its trailing batch twice on shutdown) and #597. Same lockstep rule as above.
JasperFx 2.37.3: compliance wave 3 (polecat#399) — JasperFx.Events.ComplianceTests gains
ActivityCorrelationCompliance and StringIdentitySingleStreamCompliance, plus the seam
those needed (ComplianceStoreConfig.StreamIdentity/.EnableCorrelationTracking and the
CorrelationIdFor/CausationIdFor/SetCorrelationId fixture members). Whole family moves in
lockstep even though only the compliance package changed. -->
<PackageVersion Include="JasperFx" Version="2.37.3" />
<PackageVersion Include="JasperFx.Events" Version="2.37.3" />
<!--
The shared cross-store event sourcing compliance suites. Source-only package: the
suites compile inside Polecat.Tests so JasperFx's aggregate source generator binds
Polecat's own session types.
-->
<PackageVersion Include="JasperFx.Events.ComplianceTests" Version="2.37.2" />
<PackageVersion Include="JasperFx.Events.ComplianceTests" Version="2.37.3" />
<!-- Pin the sibling JasperFx packages for parity with Marten 9's matrix
even though Polecat doesn't currently reference them directly —
keeps the lockstep matrix coherent when transitive resolution
surfaces them through JasperFx / JasperFx.Events updates. The
RuntimeCompiler 5.x line is the active continuation of the 4.x
lineage; do not pin against the parallel stale 2.0.x series. -->
<PackageVersion Include="JasperFx.RuntimeCompiler" Version="5.0.0" />
<PackageVersion Include="JasperFx.SourceGenerator" Version="2.37.2" />
<PackageVersion Include="JasperFx.SourceGenerator" Version="2.37.3" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="7.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" />
Expand Down Expand Up @@ -169,7 +174,7 @@
<PackageVersion Include="StronglyTypedId" Version="1.0.0-beta08" />

<!-- Source generators (matched to JasperFx.Events above) -->
<PackageVersion Include="JasperFx.Events.SourceGenerator" Version="2.37.2" />
<PackageVersion Include="JasperFx.Events.SourceGenerator" Version="2.37.3" />

<!-- Build automation -->
<PackageVersion Include="Nuke.Common" Version="9.0.4" />
Expand Down
42 changes: 24 additions & 18 deletions docs/projection-sg-audit-108.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@

## How to read this report

- Types marked *(shared: SomethingCompliance)* are declared in
`JasperFx.Events.ComplianceTests` rather than in a Polecat test file. That
package is source-only, so they compile inside `Polecat.Tests` and the source
generator treats them exactly like local types. They moved there in compliance
waves 1–3 (#393, #400, #399); everything else cites the file it lives in.

- **✅ Generated**: SG emits a `[GeneratedEvolver]` partial / standalone
evolver / `EventProjection` partial override; runtime registration finds
the dispatcher; the post-#276 fail-fast does not fire.
Expand Down Expand Up @@ -59,16 +65,16 @@ methods and emits a standalone `TEvolver` class.
| 9 | `Report` *(Events/project_latest_tests.cs)* | `Guid` | Apply + Create | ✓ | `..._Report_System_GuidEvolver.g.cs` | ✅ |
| 10 | `StringReport` *(Events/project_latest_tests.cs)* | `string` | Apply + Create | ✓ | `..._StringReport_stringEvolver.g.cs` | ✅ |
| 11 | `ScenarioQuestParty` *(Events/projection_scenario_tests.cs)* | `Guid` | Apply + Create | ✓ | `..._ScenarioQuestParty_System_GuidEvolver.g.cs` | ✅ |
| 12 | `MutableIEventEvolveAggregate` *(Events/self_aggregating_evolve_method.cs)* | `Guid` | `Evolve(snapshot, IEvent)` | ✗ | `..._MutableIEventEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 13 | `MutableObjectEvolveAggregate` *(Events/self_aggregating_evolve_method.cs)* | `Guid` | `Evolve(snapshot, TEvent)` | ✗ | `..._MutableObjectEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 14 | `ImmutableIEventEvolveAggregate` *(record; Events/self_aggregating_evolve_method.cs)* | `Guid` | `Evolve(snapshot, IEvent)` returning new record | ✗ | `..._ImmutableIEventEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 12 | `MutableIEventEvolveAggregate` *(shared: SelfAggregatingEvolveCompliance)* | `Guid` | `Evolve(snapshot, IEvent)` | ✗ | `..._MutableIEventEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 13 | `MutableObjectEvolveAggregate` *(shared: SelfAggregatingEvolveCompliance)* | `Guid` | `Evolve(snapshot, TEvent)` | ✗ | `..._MutableObjectEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 14 | `ImmutableIEventEvolveAggregate` *(record; shared: SelfAggregatingEvolveCompliance)* | `Guid` | `Evolve(snapshot, IEvent)` returning new record | ✗ | `..._ImmutableIEventEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 15 | `ImmutableObjectEvolveAggregate` *(record; same file)* | `Guid` | `Evolve(snapshot, TEvent)` returning new record | ✗ | `..._ImmutableObjectEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 16 | `AsyncEvolveAggregate` *(Events/self_aggregating_evolve_method.cs)* | `Guid` | `EvolveAsync` | ✗ | `..._AsyncEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 16 | `AsyncEvolveAggregate` *(shared: SelfAggregatingEvolveCompliance)* | `Guid` | `EvolveAsync` | ✗ | `..._AsyncEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 17 | `ImmutableAsyncEvolveAggregate` *(record; same file)* | `Guid` | `EvolveAsync` returning new record | ✗ | `..._ImmutableAsyncEvolveAggregate_System_GuidEvolveEvolver.g.cs` | ✅ |
| 18 | `CompositeQuestParty` *(Projections/composite_projection_tests.cs)* | `Guid` | Apply + Create | ✓ | `..._CompositeQuestParty_System_GuidEvolver.g.cs` | ✅ |
| 19 | `QuestStats` *(Projections/composite_projection_tests.cs)* | `Guid` | Apply + Create | ✓ | `..._QuestStats_System_GuidEvolver.g.cs` | ✅ |
| 20 | `QuestParty` *(Projections/inline_projection_tests.cs)* | `Guid` | Apply + Create + ShouldDelete | ✓ | `..._QuestParty_System_GuidEvolver.g.cs` | ✅ |
| 21 | `SelfAggregatingStringQuest` *(Projections/single_stream_projection_with_string_identity_tests.cs)* | `string` | Apply + Create | ✓ | `..._SelfAggregatingStringQuest_stringEvolver.g.cs` | ✅ |
| 21 | `SelfAggregatingStringQuest` *(shared: StringIdentitySingleStreamCompliance)* | `string` | Apply + Create | ✓ | `..._SelfAggregatingStringQuest_stringEvolver.g.cs` | ✅ |
| 22 | `SnapshotParty` *(Projections/snapshot_registration_tests.cs)* | `Guid` | Apply + Create | ✓ | `..._SnapshotParty_System_GuidEvolver.g.cs` | ✅ |
| 23 | `SnapshotPartyByString` *(Projections/snapshot_registration_tests.cs)* | `string` | Apply + Create | ✓ | `..._SnapshotPartyByString_stringEvolver.g.cs` | ✅ |
| 24 | `Payment` *(Projections/using_guid_based_strong_typed_id_for_aggregate_identity.cs)* | `PaymentId` *(wraps Guid)* | Apply + Create | ✓ | `..._Payment_Polecat_Tests_Projections_PaymentIdEvolver.g.cs` | ✅ |
Expand All @@ -90,13 +96,13 @@ override) — **`partial` required on the class** for these shapes.
|---|---|---|---|---|---|---|
| 1 | `QuestLogProjection` *(Projections/event_projection_tests.cs)* | `EventProjection` | conventional `Project(TEvent, IDocumentSession)` | ✓ | `..._QuestLogProjection.EventProjection.g.cs` | ✅ |
| 2 | `MultiEventQuestLogProjection` *(Projections/event_projection_tests.cs)* | `EventProjection` | conventional `Project(TEvent, IDocumentSession)` × 2 | ✓ | `..._MultiEventQuestLogProjection.EventProjection.g.cs` | ✅ |
| 3 | `SimpleEnrichmentProjection` *(Projections/event_projection_enrichment_tests.cs)* | `EventProjection` | `Project` + `EnrichEventsAsync` override | ✓ | `..._SimpleEnrichmentProjection.EventProjection.g.cs` | ✅ (EnrichEventsAsync is a side-channel; dispatch still through SG-emitted `Project`) |
| 4 | `EnrichmentCallOrderProjection` *(Projections/event_projection_enrichment_tests.cs)* | `EventProjection` | `Project` + `EnrichEventsAsync` override | ✓ | `..._EnrichmentCallOrderProjection.EventProjection.g.cs` | ✅ |
| 5 | `DbLookupEnrichmentProjection` *(Projections/event_projection_enrichment_tests.cs)* | `EventProjection` | `Project` + `EnrichEventsAsync` override | ✓ | `..._DbLookupEnrichmentProjection.EventProjection.g.cs` | ✅ |
| 6 | `AuditRecordProjection` *(Projections/event_projection_should_register_document_types.cs)* | `EventProjection` | overrides `ApplyAsync` directly | ✓ | `..._AuditRecordProjection.TypeRegistration.g.cs` *(TypeRegistration-only)* | ✅ — dispatch via `ApplyAsync` override; SG emits only the `RegisterPublishedType<AuditRecord>` constructor so `Schema.For<AuditRecord>` is discoverable (per [marten#4166](https://github.com/JasperFx/marten/issues/4166)) |
| 7 | `AuditRecordCreatorProjection` *(Projections/event_projection_should_register_document_types.cs)* | `EventProjection` | conventional `Create(AuditableEvent)` returning the doc type | ✓ | `..._AuditRecordCreatorProjection.EventProjection.g.cs` | ✅ |
| 3 | `SimpleEnrichmentProjection` *(shared: EventProjectionEnrichmentCompliance)* | `EventProjection` | `Project` + `EnrichEventsAsync` override | ✓ | `..._SimpleEnrichmentProjection.EventProjection.g.cs` | ✅ (EnrichEventsAsync is a side-channel; dispatch still through SG-emitted `Project`) |
| 4 | `EnrichmentCallOrderProjection` *(shared: EventProjectionEnrichmentCompliance)* | `EventProjection` | `Project` + `EnrichEventsAsync` override | ✓ | `..._EnrichmentCallOrderProjection.EventProjection.g.cs` | ✅ |
| 5 | `DbLookupEnrichmentProjection` *(shared: EventProjectionEnrichmentCompliance)* | `EventProjection` | `Project` + `EnrichEventsAsync` override | ✓ | `..._DbLookupEnrichmentProjection.EventProjection.g.cs` | ✅ |
| 6 | `AuditRecordProjection` *(shared: EventProjectionRegistrationCompliance)* | `EventProjection` | overrides `ApplyAsync` directly | ✓ | `..._AuditRecordProjection.TypeRegistration.g.cs` *(TypeRegistration-only)* | ✅ — dispatch via `ApplyAsync` override; SG emits only the `RegisterPublishedType<AuditRecord>` constructor so `Schema.For<AuditRecord>` is discoverable (per [marten#4166](https://github.com/JasperFx/marten/issues/4166)) |
| 7 | `AuditRecordCreatorProjection` *(shared: EventProjectionRegistrationCompliance)* | `EventProjection` | conventional `Create(AuditableEvent)` returning the doc type | ✓ | `..._AuditRecordCreatorProjection.EventProjection.g.cs` | ✅ |
| 8 | `ImportSqlProjection` *(Projections/using_event_projection_for_flat_tables.cs)* | `EventProjection` | conventional `Project(TEvent, IDocumentSession)` × 2 | ✓ | `..._ImportSqlProjection.EventProjection.g.cs` | ✅ |
| 9 | `StringQuestPartyProjection` *(Projections/single_stream_projection_with_string_identity_tests.cs)* | `SingleStreamProjection<StringQuestParty, string>` | conventional Apply/Create + ShouldDelete on the **projection** (delegating to doc would be the alternative) | ✓ | `..._StringQuestPartyProjection.Evolver.g.cs` *(PartialProjection)* | ✅ |
| 9 | `StringQuestPartyProjection` *(shared: StringIdentitySingleStreamCompliance)* | `SingleStreamProjection<StringQuestParty, string>` | conventional Apply/Create + ShouldDelete on the **projection** (delegating to doc would be the alternative) | ✓ | `..._StringQuestPartyProjection.Evolver.g.cs` *(PartialProjection)* | ✅ |
| 10 | `CustomerSummaryProjection` *(Projections/multi_stream_projection_tests.cs)* | `MultiStreamProjection<CustomerSummary, Guid>` | conventional Apply on the projection | ✓ | `..._CustomerSummaryProjection.Evolver.g.cs` | ✅ |
| 11 | `MonthlyAccountActivityProjection` *(Projections/time_based_multi_stream_projection_tests.cs)* | `MultiStreamProjection<MonthlyAccountActivity, string>` | conventional Apply on the projection | ✓ | `..._MonthlyAccountActivityProjection.Evolver.g.cs` | ✅ |
| 12 | `CompositeOrderProjection` *(Projections/composite_try_find_upstream_cache_tests.cs)* | `SingleStreamProjection<CompositeOrder, Guid>` | **overrides `Evolve` directly** | ✓ | — | ⚠ Deliberate bypass — override wins per #276 doctrine. Composite-projection test exercises upstream-cache lookup, not dispatch correctness. |
Expand Down Expand Up @@ -151,15 +157,15 @@ through the projection and asserts state evolves correctly:
|---|---|
| Self-aggregating sync Apply + Create | `fetch_for_writing_tests`, `Bug_4197_fetch_for_writing_natural_key` |
| Self-aggregating Apply + Create + **ShouldDelete** | `aggregate_stream_to_last_known_tests` (DeletableAggregate), `inline_projection_tests` (QuestParty) |
| Self-aggregating sync `Evolve(snapshot, IEvent)` (mutable + immutable record) | `self_aggregating_evolve_method` (×4 variants) |
| Self-aggregating `EvolveAsync` | `self_aggregating_evolve_method` (×2 variants) |
| String identity | `single_stream_projection_with_string_identity_tests`, `project_latest_tests` (StringReport), `always_enforce_consistency_with_string_stream_id` |
| Self-aggregating sync `Evolve(snapshot, IEvent)` (mutable + immutable record) | `SelfAggregatingEvolveCompliance` (×4 variants) |
| Self-aggregating `EvolveAsync` | `SelfAggregatingEvolveCompliance` (×2 variants) |
| String identity | `StringIdentitySingleStreamCompliance`, `project_latest_tests` (StringReport), `always_enforce_consistency_with_string_stream_id` |
| Strong-typed-id identity (wrapper struct) | `using_guid_based_strong_typed_id_for_aggregate_identity`, `using_string_based_strong_typed_id_for_aggregate_identity` |
| `EventProjection` with conventional `Project(TEvent, IDocumentSession)` | `event_projection_tests` |
| `EventProjection` with `Create(TEvent)` returning a doc | `event_projection_should_register_document_types` (AuditRecordCreatorProjection) |
| `EventProjection` with `ApplyAsync` override | `event_projection_should_register_document_types` (AuditRecordProjection) |
| `EventProjection` with `EnrichEventsAsync` override | `event_projection_enrichment_tests` (×3 variants) |
| `SingleStreamProjection<TDoc, TId>` subclass with Apply on the projection | `single_stream_projection_with_string_identity_tests` (StringQuestPartyProjection) |
| `EventProjection` with `Create(TEvent)` returning a doc | `EventProjectionRegistrationCompliance` (AuditRecordCreatorProjection) |
| `EventProjection` with `ApplyAsync` override | `EventProjectionRegistrationCompliance` (AuditRecordProjection) |
| `EventProjection` with `EnrichEventsAsync` override | `EventProjectionEnrichmentCompliance` (×3 variants) |
| `SingleStreamProjection<TDoc, TId>` subclass with Apply on the projection | `StringIdentitySingleStreamCompliance` (StringQuestPartyProjection) |
| `MultiStreamProjection<TDoc, TId>` subclass with Apply on the projection | `multi_stream_projection_tests`, `time_based_multi_stream_projection_tests` |
| `PolecatCompositeProjection` with `Snapshot<T>` | `composite_projection_tests` |
| `PolecatCompositeProjection` with `TryFindUpstreamCache` between stages | `composite_try_find_upstream_cache_tests` |
Expand Down
6 changes: 6 additions & 0 deletions src/Polecat.Tests/Compliance/ComplianceQuerySessionAlias.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@
// they cannot reach the <TOperations, TQuerySession> pair their suite class is generic over.
global using ComplianceOperations = Polecat.IDocumentSession;
global using ComplianceEventProjection = Polecat.Projections.EventProjection;

// The string-identity suite's custom projection needs Polecat's own SingleStreamProjection base, and
// that one is generic over the identity type as well as the document, so this alias names a closed
// generic rather than an open one.
global using ComplianceStringPartyProjectionBase =
Polecat.Projections.SingleStreamProjection<JasperFx.Events.ComplianceTests.StringQuestParty, string>;

Check failure on line 16 in src/Polecat.Tests/Compliance/ComplianceQuerySessionAlias.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

The type or namespace name 'StringQuestParty' does not exist in the namespace 'JasperFx.Events.ComplianceTests' (are you missing an assembly reference?)

Check failure on line 16 in src/Polecat.Tests/Compliance/ComplianceQuerySessionAlias.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

The type or namespace name 'StringQuestParty' does not exist in the namespace 'JasperFx.Events.ComplianceTests' (are you missing an assembly reference?)

Check failure on line 16 in src/Polecat.Tests/Compliance/ComplianceQuerySessionAlias.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

The type or namespace name 'StringQuestParty' does not exist in the namespace 'JasperFx.Events.ComplianceTests' (are you missing an assembly reference?)

Check failure on line 16 in src/Polecat.Tests/Compliance/ComplianceQuerySessionAlias.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

The type or namespace name 'StringQuestParty' does not exist in the namespace 'JasperFx.Events.ComplianceTests' (are you missing an assembly reference?)
18 changes: 18 additions & 0 deletions src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,17 @@
options.DaemonSettings.MaxConcurrentRebuildsPerDatabase = config.MaxConcurrentRebuildsPerDatabase;
}

if (config.StreamIdentity.HasValue)
{
options.Events.StreamIdentity = config.StreamIdentity.Value;
}

if (config.EnableCorrelationTracking)
{
options.Events.EnableCorrelationId = true;
options.Events.EnableCausationId = true;
}

config.ApplyTo(new PolecatComplianceRegistrar(options));

_store = new DocumentStore(options);
Expand Down Expand Up @@ -81,6 +92,13 @@

public override IEventStoreOperations EventsFor(IDocumentSession session) => session.Events;

public override string? CorrelationIdFor(IDocumentSession session) => session.CorrelationId;

Check failure on line 95 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

'PolecatComplianceFixture.CorrelationIdFor(IDocumentSession)': no suitable method found to override

Check failure on line 95 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

'PolecatComplianceFixture.CorrelationIdFor(IDocumentSession)': no suitable method found to override

Check failure on line 95 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

'PolecatComplianceFixture.CorrelationIdFor(IDocumentSession)': no suitable method found to override

Check failure on line 95 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

'PolecatComplianceFixture.CorrelationIdFor(IDocumentSession)': no suitable method found to override

public override string? CausationIdFor(IDocumentSession session) => session.CausationId;

Check failure on line 97 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

'PolecatComplianceFixture.CausationIdFor(IDocumentSession)': no suitable method found to override

Check failure on line 97 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

'PolecatComplianceFixture.CausationIdFor(IDocumentSession)': no suitable method found to override

Check failure on line 97 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

'PolecatComplianceFixture.CausationIdFor(IDocumentSession)': no suitable method found to override

Check failure on line 97 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

'PolecatComplianceFixture.CausationIdFor(IDocumentSession)': no suitable method found to override

public override void SetCorrelationId(IDocumentSession session, string? correlationId)

Check failure on line 99 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

'PolecatComplianceFixture.SetCorrelationId(IDocumentSession, string?)': no suitable method found to override

Check failure on line 99 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

'PolecatComplianceFixture.SetCorrelationId(IDocumentSession, string?)': no suitable method found to override

Check failure on line 99 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

'PolecatComplianceFixture.SetCorrelationId(IDocumentSession, string?)': no suitable method found to override

Check failure on line 99 in src/Polecat.Tests/Compliance/PolecatComplianceFixture.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

'PolecatComplianceFixture.SetCorrelationId(IDocumentSession, string?)': no suitable method found to override
=> session.CorrelationId = correlationId;

public override IEventStore EventStore => _store;

public override IEnumerable<Type> AllAggregateTypes() => _store.Options.Projections.AllAggregateTypes();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,9 @@

public class rebuild_concurrency_cap_compliance
: RebuildConcurrencyCapCompliance<PolecatComplianceFixture, IDocumentSession, IQuerySession>;

public class activity_correlation_compliance
: ActivityCorrelationCompliance<PolecatComplianceFixture, IDocumentSession, IQuerySession>;

Check failure on line 38 in src/Polecat.Tests/Compliance/polecat_event_store_compliance.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

The type or namespace name 'ActivityCorrelationCompliance<,,>' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 38 in src/Polecat.Tests/Compliance/polecat_event_store_compliance.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

The type or namespace name 'ActivityCorrelationCompliance<,,>' could not be found (are you missing a using directive or an assembly reference?)

public class string_identity_single_stream_compliance
: StringIdentitySingleStreamCompliance<PolecatComplianceFixture, IDocumentSession, IQuerySession>;

Check failure on line 41 in src/Polecat.Tests/Compliance/polecat_event_store_compliance.cs

View workflow job for this annotation

GitHub Actions / test (edge) / test

The type or namespace name 'StringIdentitySingleStreamCompliance<,,>' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 41 in src/Polecat.Tests/Compliance/polecat_event_store_compliance.cs

View workflow job for this annotation

GitHub Actions / test (default) / test

The type or namespace name 'StringIdentitySingleStreamCompliance<,,>' could not be found (are you missing a using directive or an assembly reference?)
Loading
Loading