You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Render portable unique <property> on <Event> and unique event <Event> constraints as named Chronicle constraints, with every target, release, casing rule and message. Generated specifications prove violations, releases, casing and re-claiming one's own value. Constraints on optional, composite or non-text properties, and several events from one command that target or release a unique-value constraint, still fail with STAGE-ESM-014. Chronicle updates its constraint index after commit (Cratis/Chronicle#4123), so a storage failure there is not rejected at append time. (#118)
Commands that produce several unconditional events render, and generated specifications assert each event on its stream in order. A specification may now expect several read models and query results. (part of #14)
Specifications with a given caller fixture and then denied now render. The caller runs through Arc's principal override, and a denied specification checks that the command was unauthorized, that the policy is registered, and that nothing was appended. Protected-query expectations and claim conditions on the role claim type are still rejected. (part of #57)
Render nested from and clear blocks, supported every event-source mappings, and root and child RemovedWith / RemovedWithJoin. A differential specification now runs admitted projection shapes through Chronicle and compares the results with Screenplay's reference execution. (part of #117)
Changed
Command properties that feed a constrained event property get a not-null validation rule, so a null value never reaches the unique index (Cratis/Chronicle#4122).
Projection shapes where Chronicle keys, clears or removes differently from the reference now fail with STAGE-ESM-017. This covers one event contract in several roles at the root, and nested from/clear blocks without a matching root from. It also covers clearing a nested block and then re-creating it, and removing a child joined to several parents.