Skip to content

Commit 779086a

Browse files
authored
Merge pull request #4172 from BrighterCommand/test_naming
refactor(spec-0031): align BoxProvisioning test naming to convention
2 parents 51c2d9f + de703c9 commit 779086a

142 files changed

Lines changed: 1736 additions & 459 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,9 @@ ServiceFabricBackup/
252252

253253
# SQLite files
254254
*.db
255+
*.db-shm
256+
*.db-wal
257+
*.db-journal
255258
*.sqlite
256259
*.sqlite3
257260

PROMPT.md

Lines changed: 35 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -1,157 +1,42 @@
1-
# Resume State — Spec 0030 primitive_obsession
1+
# Resume State — Spec 0031 test_naming_conventions
22

3-
**Last updated:** 2026-06-08
4-
**Branch:** `primitive_obsession`
5-
**Spec dir:** `specs/0030-primitive_obsession/` · `specs/.current-spec` = `0030-primitive_obsession`
6-
**Issue:** #4164 · ADR: `docs/adr/0061-box-provisioning-value-types.md`
7-
**HEAD:** `7f451cd96`
3+
**Last updated:** 2026-06-09
4+
**Branch:** `test_naming` · **Spec dir:** `specs/0031-test_naming_conventions/` · **Issue:** #4157
85

9-
## Where we are in the workflow
6+
## ✅ STATUS: IMPLEMENTATION + VERIFICATION COMPLETE — nothing pushed yet
107

11-
Issue → **Requirements ✅****Design (ADR 0061) ✅****Tasks ✅****Tests/Code ✅****Code Review ✅ (all findings resolved)**
8+
Spec 0031 was a **pure rename refactor** (no behaviour/assertion/logic/count changes; `/test-first`
9+
did not apply). All 7 tasks done & committed on `test_naming`:
1210

13-
## Code Review — COMPLETE ✅
14-
15-
Findings from `specs/0030-primitive_obsession/review-code.md` all resolved in `7f451cd96`:
16-
- **Finding 2 (Score 72)** — Spanner provisioners now forward `_configuration.SchemaName` to migration activity
17-
- **Finding 1 fix-forward** — ServiceActivator .Value call-site completions for string?-widened operators
18-
- **Finding 3 (Score 64)** — 4 characterisation tests added for mapper null paths
19-
- **Phase 2 miss** — 3 BoxProvisioning test doubles updated to `BoxTableName` type
20-
- **Finding 4 (Score 38)** / **Finding 5 (Score 22)** — low severity, no action required
21-
22-
## Phase 1 — COMPLETE ✅ (111/111 tests, net9.0)
23-
24-
All six value types implemented and committed:
25-
26-
| Commit | What |
11+
| Commit | Task |
2712
|---|---|
28-
| `6262cc15d` | fix: resolve CS8604/CS8601 call-site nullability in `Paramore.Brighter` (boy-scout) |
29-
| `56f77029a` | feat(spec-0030): `BoxTableName` round-trip + value equality (4 tests) |
30-
| `056204fc7` | feat(spec-0030): `BoxTableName.IsNullOrEmpty` (3 tests) |
31-
| `30e7ea169` | feat(spec-0030): `SchemaName` round-trip + nullable + `IsNullOrEmpty` (8 tests) |
32-
| `2efa24466` | feat(spec-0030): `MigrationDescription` round-trip + `IsNullOrEmpty` (7 tests) |
33-
| `e8f854397` | feat(spec-0030): `SqlScript` round-trip + nullable + no-validation + `IsNullOrEmpty` (9 tests) |
34-
| `a92ffc70c` | feat(spec-0030): `SourceReference` round-trip + nullable + `IsNullOrEmpty` (8 tests) |
35-
| `4cb46c41d` | feat(spec-0030): `MigrationVersion` round-trip + int arithmetic + `IComparable` (7 tests) |
36-
37-
New type files (all in `src/Paramore.Brighter.BoxProvisioning/`):
38-
- `BoxTableName.cs`, `SchemaName.cs`, `MigrationDescription.cs`
39-
- `SqlScript.cs`, `SourceReference.cs`, `MigrationVersion.cs`
40-
41-
---
42-
43-
## Phase 2 — COMPLETE ✅ (111/111 tests net9.0+net10.0, all TFMs build clean)
44-
45-
Commit: `2d0aaa80c` — retype BoxProvisioning contracts to value types.
46-
47-
All Phase 3 and Phase 4 verification tasks also done:
48-
- All 4 relational backends + Spanner compile with 0 warnings/errors
49-
- All 4 TFMs (netstandard2.0/net8/net9/net10) build clean
50-
- Identifier-validation regression: 11/11 tests pass
51-
- Monotonicity regression: pass
52-
- Full suite: 111/111 on net9.0 and net10.0
53-
- No types leaked outside Paramore.Brighter.BoxProvisioning
54-
- Core Paramore.Brighter assembly unmodified
55-
56-
## Current phase: CODE REVIEW 🔄
57-
58-
All implementation tasks complete. Ready for `/spec:review` or PR creation.
59-
60-
---
61-
62-
### Archived: Phase 2 contract-retyping plan (for reference)
63-
64-
### Task 2a — Retype `IAmABoxMigration` and `BoxMigration`
65-
66-
Files to edit:
67-
- `src/Paramore.Brighter.BoxProvisioning/IAmABoxMigration.cs`
68-
- `src/Paramore.Brighter.BoxProvisioning/BoxMigration.cs`
69-
70-
Changes:
71-
- `int Version``MigrationVersion`
72-
- `string Description``MigrationDescription`
73-
- `string UpScript``SqlScript`
74-
- `string? SourceReference``SourceReference?`
75-
- `string? IdempotencyCheckSql``SqlScript?`
76-
- `LogicalColumns` stays `IReadOnlyCollection<string>` — do NOT change
77-
78-
Verify existing `new BoxMigration(1, "Add Source", "ALTER TABLE …", new[] { "Source" })` call sites in the four relational catalog assemblies compile unchanged via implicit conversions (no argument changes needed).
79-
80-
### Task 2b — Retype `IAmABoxMigrationRunner.MigrateAsync` + fix D4 ternary
81-
82-
Files to edit:
83-
- `src/Paramore.Brighter.BoxProvisioning/IAmABoxMigrationRunner.cs`
84-
- `src/Paramore.Brighter.BoxProvisioning/SqlBoxMigrationRunner.cs`
85-
86-
Changes:
87-
- `MigrateAsync(string tableName, string? schemaName, …)``MigrateAsync(BoxTableName tableName, SchemaName? schemaName, …)`
88-
- **D4 ternary** at `SqlBoxMigrationRunner.cs:285`: change to `migrations.Count == 0 ? (MigrationVersion)0 : migrations[migrations.Count - 1].Version` (resolves CS0172 bidirectional-implicit ambiguity)
89-
- `Identifiers.AssertSafe(tableName, …)` and `AssertSafe(schemaName, …)` lines ~191/194 pass `string?` via implicit conversion — resolve any CS8604 with `.Value` or `!`, do NOT revert operator return type
90-
- `SqlBoxProvisioner` call `_migrationRunner.MigrateAsync(BoxTableName, _configuration.SchemaName, …)` compiles via implicit `string? → SchemaName?`
91-
92-
### Task 2c — Retype `IAmABoxProvisioner.BoxTableName`
93-
94-
Files to edit:
95-
- `src/Paramore.Brighter.BoxProvisioning/IAmABoxProvisioner.cs`
96-
- `src/Paramore.Brighter.BoxProvisioning/SqlBoxProvisioner.cs` (line ~105)
97-
98-
Changes:
99-
- `string BoxTableName` property → `BoxTableName`
100-
- `SqlBoxProvisioner` derives property from `_configuration.OutBoxTableName`/`InBoxTableName` (core `string`) — compiles via implicit conversion, no core changes
101-
- `Identifiers.AssertSafe(BoxTableName, …)` at line ~105 still compiles via implicit `→ string?`; resolve CS8604 with `.Value` or `!`
102-
103-
### Task 2d — Update test doubles to new types (mechanical, no behaviour)
104-
105-
Files to edit (exhaustive list):
106-
107-
**`IAmABoxMigration` implementers** (update property declarations only):
108-
- `tests/.../When_relational_box_migration_runner_base_migrate_receives_non_monotonic_migrations_it_should_throw_before_opening_connection.cs` (`StubBoxMigration`)
109-
- `tests/.../When_relational_box_migration_runner_base_migrate_receives_unsafe_identifier_it_should_throw_before_opening_connection.cs` (`StubBoxMigration`)
110-
111-
**`IAmABoxMigrationRunner` direct implementers** (update `MigrateAsync` signature only):
112-
- `tests/.../When_sql_box_provisioner_detect_table_state_inlines_negative_version_clamp.cs` (`VersionCapturingMigrationRunner`)
113-
- `tests/.../When_sql_box_provisioner_effective_schema_name_is_overridden_it_should_propagate_to_detection_and_payload_calls_only.cs` (`SchemaCapturingMigrationRunner`)
114-
- `tests/.../When_sql_box_provisioner_provision_async_receives_unsafe_identifier_it_should_throw_before_opening_connection.cs` (`ThrowingMigrationRunner`)
115-
- `tests/.../When_sql_box_provisioner_provision_async_runs_successfully_it_should_invoke_hooks_in_documented_order.cs` (`RecordingMigrationRunner`)
116-
117-
**`IAmABoxProvisioner` implementer**:
118-
- `tests/.../TestDoubles/StubBoxProvisioner.cs` (`BoxTableName` property type)
119-
120-
Do NOT modify: `StubBoxDetectionHelper.cs` (detection-helper, out of scope).
121-
122-
---
123-
124-
## Phase 3 — Backend compilability (after Phase 2)
125-
126-
Build all four relational backends (MsSql, MySql, PostgreSql, Sqlite) + Spanner against the retyped interfaces. Confirm compilation via implicit conversions — no argument changes expected. Also confirm null-path behaviour: SQLite null `SchemaName` and V2+ null `IdempotencyCheckSql` produce no NRE.
127-
128-
---
129-
130-
## Phase 4 — Cross-cutting verification (after Phase 3)
131-
132-
1. All TFMs compile (`netstandard2.0;net8.0;net9.0;net10.0`) — confirm no `netstandard2.0`-unavailable APIs
133-
2. Identifier-validation regression: `1Outbox``ConfigurationException`; SQLite null schema → succeeds
134-
3. Monotonicity regression: `[1,2,3]` passes; `[1,3]``ConfigurationException` with `V1 followed by V3 (expected V2)`
135-
4. Full suite parity + telemetry/log string content unchanged
136-
5. Scope guard: no new types leaked outside `Paramore.Brighter.BoxProvisioning`; core assembly unmodified
137-
138-
---
139-
140-
## Key implementation notes
141-
142-
- **No behaviour changes in Phase 2** — only type signatures change; call sites compile via implicit conversions
143-
- **D4 ternary** is the one required explicit cast; it is pre-identified at `SqlBoxMigrationRunner.cs:285`
144-
- **`AssertSafe` stays at call sites** — do NOT move validation into constructors (D3)
145-
- **`LogicalColumns` unchanged** — stays `IReadOnlyCollection<string>` throughout (D5)
146-
- **CS8604 pattern**: all string-backed operators return `string?`; when passing into non-nullable `AssertSafe(string, …)`, resolve with `.Value` or `!` at the call site (established codebase pattern)
147-
- Phase 2 tasks 2a–2c should each be committed separately; 2d (test doubles) committed after 2c
148-
149-
## Test run command
150-
13+
| `a3b2bc33d` | T2 — BoxProvisioning.Tests (2) |
14+
| `53520bb84` | T3 — Sqlite (22) |
15+
| `d9947c90b` | T4 — MSSQL (33) |
16+
| `e9358acb3` | T5 — MySQL (27) |
17+
| `24c4f168d` | T6 — PostgreSQL (34) |
18+
| `299f18d5c` | spec docs + T1 baseline + T7 sign-off |
19+
20+
**118 non-conforming files renamed** to the convention in `.agent_instructions/testing.md`
21+
(class `[Behavior]Tests`, method `When_..._should_...`). 0 WRONG + 0 MIXED remain. All AC-1..10 PASS;
22+
all 5 projects build clean; count + green/red parity vs baseline (MSSQL keeps its 13 pre-existing
23+
failures — 12 = DateTimeOffset/BST #4161, 1 now under a renamed FQN). 0 file renames needed (names
24+
already conformed), 0 `src/`/analyzer/CI/agent-instruction changes, 0 `Assert.` lines touched.
25+
Full evidence: `specs/0031-test_naming_conventions/.scratch/T7-signoff.md`.
26+
27+
## ▶️ FIRST THING NEXT SESSION — ask before reviewing
28+
29+
This change is **style only** (identifier + comment renames, mechanically verified by build + suite
30+
parity). Before doing more work, **ASK the user whether a `/spec:review code` / code review is even
31+
warranted here**, or whether we should skip straight to opening the PR / merging. A full adversarial
32+
code review is likely overkill for a rename-only diff — surface that and let the user decide.
33+
34+
## Remaining options (pending the user's answer)
35+
- `/spec:review code` (if they want it) → then PR / merge, OR
36+
- open PR for branch `test_naming` directly, OR
37+
- merge to `master`.
38+
39+
## Verify (per project)
15140
```bash
152-
dotnet test tests/Paramore.Brighter.BoxProvisioning.Tests/ --framework net9.0 --no-build -q
41+
dotnet test tests/Paramore.Brighter.<Project>.Tests --framework net9.0 -q
15342
```
154-
155-
## Spec 0030 about
156-
157-
Replace bare `string`/`int` primitives in Box Provisioning public interfaces with six dedicated value-type `record`s modelled on `src/Paramore.Brighter/Id.cs`. Six types: `BoxTableName`, `SchemaName`, `MigrationDescription`, `SqlScript`, `SourceReference`, `MigrationVersion`. Implicit conversions preserve full source compatibility at every existing call site.

specs/.current-spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0030-primitive_obsession
1+
0031-test_naming_conventions
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
design N/A: correction to an already-documented convention (.agent_instructions/testing.md), not a design decision. Approved 2026-06-09.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4157

specs/0031-test_naming_conventions/.requirements-approved

Whitespace-only changes.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# T7 — Whole-spec sign-off (Spec 0031) — 2026-06-09
2+
3+
Pre-work base commit: 51c2d9f29 (a3b2bc33d^). Spec commits: T2 a3b2bc33d · T3 53520bb84 · T4 d9947c90b · T5 e9358acb3 · T6 24c4f168d.
4+
5+
## Acceptance criteria
6+
- **AC-9 (0 WRONG + 0 MIXED)**: all 5 folders — 0 `class When_`, 0 `Should_` test methods. PASS.
7+
- **AC-2 (no Should_ method remains)**: 0 across scope. PASS.
8+
- **AC-1/AC-4 (classes → [Behavior]Tests; multi-case files structured)**: every test class ends in `Tests`
9+
(sole non-Tests public class = `BoxProvisioningObservabilityCollection`, an xUnit `[CollectionDefinition]`
10+
fixture — not a test class, untouched). Every `[Fact]`/`[Theory]` method begins with `When_`. PASS.
11+
- **AC-3 (file renames via git mv, history preserved)**: 0 file renames were required — every in-scope
12+
test file name already conformed to `When_..._should_...`, so files were modified in place (118 × M,
13+
0 × R). git history is intact (no moves). PASS (vacuously — no rename needed).
14+
- **AC-5 / FR-5 / NFR-1 (CORRECT files untouched)**: exactly 118 files changed (2+22+33+27+34), matching the
15+
non-conforming set; all 77 CORRECT test files + helpers show no diff. PASS.
16+
- **AC-10 (scope containment)**: (a) 0 files changed outside the 5 in-scope folders; (b) diff contains
17+
ONLY class/method/constructor declaration identifiers + comment-reference updates — 0 `Assert.` lines
18+
changed, no arrange/act/assertion logic touched; (c) 0 analyzer / .github CI / .editorconfig /
19+
agent-instruction / hook / testing.md changes; (d) 0 production (src/) files changed. PASS.
20+
- **AC-6 (compiles, references resolve)**: all 5 projects `dotnet build` net9.0 = 0 Error(s). PASS.
21+
- **AC-8 (count parity)** & **AC-7 (green/red parity)** vs T1 baseline — all containers available, every suite run:
22+
23+
| Project | Baseline Total | After Total | Baseline P/F | After P/F | Verdict |
24+
|---|---|---|---|---|---|
25+
| BoxProvisioning.Tests | 111 | 111 | 111/0 | 111/0 | parity |
26+
| Sqlite.Tests | 127 | 127 | 127/0 | 127/0 | parity |
27+
| MSSQL.Tests | 198 | 198 | 185/13 | 185/13 | parity (13 pre-existing fails preserved; 1 in-scope under renamed FQN `MsSqlRunnerLockResourceSchemaQualificationTests`, 12 = DateTimeOffset/BST #4161) |
28+
| MySQL.Tests | 160 | 160 | 160/0 | 160/0 | parity |
29+
| PostgresSQL.Tests | 191 | 191 | 191/0 | 191/0 | parity |
30+
31+
No "infra unavailable" gaps — MSSQL/Postgres/MySQL Docker all up; Spanner not in scope (no Spanner BoxProvisioning rename folder).
32+
33+
## Conclusion
34+
All FR-1..6, NFR-1..6, AC-1..10 satisfied. Pure rename refactor complete; behaviour, assertions, and test
35+
counts preserved exactly. Cross-file comment references (4 total: 1 Sqlite, 1 MSSQL, 1 MySQL, 2 Postgres-wait=2)
36+
updated to new class names; file-name comments (referencing unchanged .cs files) left intact.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Paramore.Brighter.MSSQL.Tests.BoxProvisioning.When_mssql_runner_acquires_lock_resource_should_be_qualified_by_schema.Should_qualify_lock_resource_with_effective_schema(configuredSchema: null, expectedSchemaInLockResource: "dbo")
2+
Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Async.WhenAddingAMessageItShouldBeStoredWithAllPropertiesAsync.When_Adding_A_Message_It_Should_Be_Stored_With_All_Properties_Async
3+
Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Async.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommitAsync.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit_Async
4+
Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Async.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessageAsync.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message_Async
5+
Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenAddingAMessageItShouldBeStoredWithAllProperties.When_Adding_A_Message_It_Should_Be_Stored_With_All_Properties
6+
Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommit.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit
7+
Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessage.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message
8+
Paramore.Brighter.MSSQL.Tests.Outbox.Text.Async.WhenAddingAMessageItShouldBeStoredWithAllPropertiesAsync.When_Adding_A_Message_It_Should_Be_Stored_With_All_Properties_Async
9+
Paramore.Brighter.MSSQL.Tests.Outbox.Text.Async.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommitAsync.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit_Async
10+
Paramore.Brighter.MSSQL.Tests.Outbox.Text.Async.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessageAsync.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message_Async
11+
Paramore.Brighter.MSSQL.Tests.Outbox.Text.Sync.WhenAddingAMessageItShouldBeStoredWithAllProperties.When_Adding_A_Message_It_Should_Be_Stored_With_All_Properties
12+
Paramore.Brighter.MSSQL.Tests.Outbox.Text.Sync.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommit.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit
13+
Paramore.Brighter.MSSQL.Tests.Outbox.Text.Sync.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessage.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Passed! - Failed: 0, Passed: 111, Skipped: 0, Total: 111, Duration: 148 ms - Paramore.Brighter.BoxProvisioning.Tests.dll (net9.0)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Stack Trace:
2+
at Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenAddingAMessageItShouldBeStoredWithAllProperties.When_Adding_A_Message_It_Should_Be_Stored_With_All_Properties() in /Users/ian_hammond_cooper/CSharpProjects/github/BrighterCommand/Brighter/tests/Paramore.Brighter.MSSQL.Tests/Outbox/Binary/Generated/Sync/When_Adding_A_Message_It_Should_Be_Stored_With_All_Properties.cs:line 72
3+
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
4+
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
5+
[xUnit.net 00:00:13.97] Paramore.Brighter.MSSQL.Tests.Outbox.Text.Async.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommitAsync.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit_Async [FAIL]
6+
Failed Paramore.Brighter.MSSQL.Tests.Outbox.Text.Async.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommitAsync.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit_Async [11 ms]
7+
Error Message:
8+
Assert.Equal() Failure: Values differ
9+
Expected: 2026-06-09T09:01:20.8916580+00:00
10+
Actual: 2026-06-09T09:01:20.8900000+01:00 (difference 01:00:00.0016580 is larger than 00:00:01)
11+
Stack Trace:
12+
at Paramore.Brighter.MSSQL.Tests.Outbox.Text.Async.WhenAddingAMessageWithinTransactionItShouldBeStoredAfterCommitAsync.When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit_Async() in /Users/ian_hammond_cooper/CSharpProjects/github/BrighterCommand/Brighter/tests/Paramore.Brighter.MSSQL.Tests/Outbox/Text/Generated/Async/When_Adding_A_Message_Within_Transaction_It_Should_Be_Stored_After_Commit_Async.cs:line 62
13+
--- End of stack trace from previous location ---
14+
[xUnit.net 00:00:14.31] Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessage.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message [FAIL]
15+
Failed Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessage.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message [27 ms]
16+
Error Message:
17+
Assert.Equal() Failure: Values differ
18+
Expected: 2026-06-09T09:01:21.2130000+01:00
19+
Actual: 2026-06-09T09:01:21.2145240+00:00 (difference 01:00:00.0015240 is larger than 00:00:01)
20+
Stack Trace:
21+
at Paramore.Brighter.MSSQL.Tests.Outbox.Binary.Sync.WhenRetrievingAMessageByIdItShouldReturnTheCorrectMessage.When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message() in /Users/ian_hammond_cooper/CSharpProjects/github/BrighterCommand/Brighter/tests/Paramore.Brighter.MSSQL.Tests/Outbox/Binary/Generated/Sync/When_Retrieving_A_Message_By_Id_It_Should_Return_The_Correct_Message.cs:line 79
22+
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
23+
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
24+
25+
Failed! - Failed: 13, Passed: 185, Skipped: 0, Total: 198, Duration: 14 s - Paramore.Brighter.MSSQL.Tests.dll (net9.0)

0 commit comments

Comments
 (0)