test(domain): Registration aggregate invariants (refs #6)
Failing unit tests for the Registration aggregate root: a submission starts in INGEDIEND carrying its bsn, an empty/whitespace/null bsn is rejected, the started process-instance id is remembered, and attaching the zaak the ACL opened records its URL idempotently (a conflicting URL is rejected) while the status stays INGEDIEND. The aggregate is a stub (no-op mutators, empty bsn) so the tests compile and fail on their assertions; the green commit implements the invariants. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
15
services/domain/Big.Domain/RegistrationId.cs
Normal file
15
services/domain/Big.Domain/RegistrationId.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace Big.Domain;
|
||||
|
||||
/// <summary>The identity of a <see cref="Registration"/> aggregate — opaque, server-assigned,
|
||||
/// and distinct from the OpenZaak zaak id (which the projection keys on). A value object so the
|
||||
/// id can travel as a Flowable process variable and back without ever being a bare string.</summary>
|
||||
public readonly record struct RegistrationId(Guid Value)
|
||||
{
|
||||
/// <summary>Mint a fresh identity for a newly submitted registration.</summary>
|
||||
public static RegistrationId New() => new(Guid.NewGuid());
|
||||
|
||||
/// <summary>Rehydrate an id carried as a string (e.g. a Flowable process variable).</summary>
|
||||
public static RegistrationId Parse(string value) => new(Guid.Parse(value));
|
||||
|
||||
public override string ToString() => Value.ToString();
|
||||
}
|
||||
Reference in New Issue
Block a user