diff --git a/tests/LageBuch.Acceptance.Tests/AboutRenderTests.cs b/tests/LageBuch.Acceptance.Tests/AboutRenderTests.cs index dfd56d1..45e78af 100644 --- a/tests/LageBuch.Acceptance.Tests/AboutRenderTests.cs +++ b/tests/LageBuch.Acceptance.Tests/AboutRenderTests.cs @@ -43,8 +43,8 @@ public void About_dialog_shows_brand_publisher_and_license() var texts = window.GetVisualDescendants().OfType().Select(t => t.Text).ToList(); Assert.Contains("Lagebuch", texts); Assert.Contains(vm.RepositoryUrl, texts); - Assert.Contains(texts, t => t!.Contains("MIT")); - Assert.Contains(texts, t => t!.Contains("Thomas Müller")); + Assert.Contains(texts, t => t!.Contains("MIT", StringComparison.Ordinal)); + Assert.Contains(texts, t => t!.Contains("Thomas Müller", StringComparison.Ordinal)); Capture(window, "about-dialog.png"); } diff --git a/tests/LageBuch.Acceptance.Tests/ForcesTabRenderTests.cs b/tests/LageBuch.Acceptance.Tests/ForcesTabRenderTests.cs index 7aa2ec2..da52e5c 100644 --- a/tests/LageBuch.Acceptance.Tests/ForcesTabRenderTests.cs +++ b/tests/LageBuch.Acceptance.Tests/ForcesTabRenderTests.cs @@ -100,7 +100,7 @@ public void A_strength_correction_is_committed_as_one_edit_and_exposes_the_verla var edit = Assert.Single(edited.Edits); Assert.Equal((0, 6, 0), (edit.PreviousOfficerCount, edit.PreviousPersonnelCount, edit.PreviousScbaCount)); Assert.True(edited.HasHistory); - Assert.Contains("Stärke 0/6/6 → 1/7/8", Assert.Single(edited.EditLines)); + Assert.Contains("Stärke 0/6/6 → 1/7/8", Assert.Single(edited.EditLines), StringComparison.Ordinal); Capture(window, "forces-strength-verlauf.png"); } diff --git a/tests/LageBuch.Acceptance.Tests/LayoutAlignmentTests.cs b/tests/LageBuch.Acceptance.Tests/LayoutAlignmentTests.cs index 8c00412..615c9af 100644 --- a/tests/LageBuch.Acceptance.Tests/LayoutAlignmentTests.cs +++ b/tests/LageBuch.Acceptance.Tests/LayoutAlignmentTests.cs @@ -141,7 +141,7 @@ public void Atemschutz_crew_is_rendered_one_member_per_line() // Each name is its own text run, not one joined string that the cell then clips. foreach (var name in new[] { "Hintersberger, Hans", "Kreutzkamp, Bastian", "Schormaier, Florian" }) Assert.Contains(name, rendered); - Assert.DoesNotContain(rendered, s => s!.Contains("Hintersberger, Hans / ")); + Assert.DoesNotContain(rendered, s => s!.Contains("Hintersberger, Hans / ", StringComparison.Ordinal)); // Existing in the visual tree is not the same as being visible. DataGrid rows are styled // to a fixed 40px, which laid the third name out at y=40 in a 41px row — present, and diff --git a/tests/LageBuch.Acceptance.Tests/SharePanelRenderTests.cs b/tests/LageBuch.Acceptance.Tests/SharePanelRenderTests.cs index aee32b8..48c3620 100644 --- a/tests/LageBuch.Acceptance.Tests/SharePanelRenderTests.cs +++ b/tests/LageBuch.Acceptance.Tests/SharePanelRenderTests.cs @@ -45,7 +45,7 @@ private static void Capture(Window window, string name) } private static TextBlock ShareStatus(Window window) => - window.GetVisualDescendants().OfType().First(t => t.Text != null && t.Text.StartsWith("Erreichbar unter")); + window.GetVisualDescendants().OfType().First(t => t.Text != null && t.Text.StartsWith("Erreichbar unter", StringComparison.Ordinal)); [AvaloniaFact] public void Before_sharing_the_button_invites_sharing_and_no_status_is_shown() @@ -55,7 +55,7 @@ public void Before_sharing_the_button_invites_sharing_and_no_status_is_shown() Assert.Equal("IM NETZWERK FREIGEBEN", vm.ShareButtonText); Assert.Null(vm.ShareStatus); Assert.DoesNotContain(window.GetVisualDescendants().OfType(), - t => t.Text != null && t.Text.StartsWith("Erreichbar unter")); + t => t.Text != null && t.Text.StartsWith("Erreichbar unter", StringComparison.Ordinal)); Capture(window, "share-before.png"); } @@ -68,9 +68,9 @@ public async Task Toggling_on_flips_the_label_and_shows_the_reachable_at_hint() Dispatcher.UIThread.RunJobs(); Assert.Equal("FREIGABE BEENDEN", vm.ShareButtonText); - Assert.Contains("localhost:5859", ShareStatus(window).Text!); + Assert.Contains("localhost:5859", ShareStatus(window).Text!, StringComparison.Ordinal); Assert.Equal("1234", vm.SharePin); - Assert.Contains(window.GetVisualDescendants().OfType(), t => t.Text != null && t.Text.Contains("1234")); + Assert.Contains(window.GetVisualDescendants().OfType(), t => t.Text != null && t.Text.Contains("1234", StringComparison.Ordinal)); Capture(window, "share-after.png"); } diff --git a/tests/LageBuch.Acceptance.Tests/WorkspaceAcceptanceTests.cs b/tests/LageBuch.Acceptance.Tests/WorkspaceAcceptanceTests.cs index e8e4c6e..654bda6 100644 --- a/tests/LageBuch.Acceptance.Tests/WorkspaceAcceptanceTests.cs +++ b/tests/LageBuch.Acceptance.Tests/WorkspaceAcceptanceTests.cs @@ -262,7 +262,7 @@ public void Adding_file_via_ui_updates_the_list_and_logs_to_the_etb() Dispatcher.UIThread.RunJobs(); // let the async command's continuation reach the UI thread Assert.Single(session.Incident.Files); - Assert.Contains(session.Incident.Journal, e => e.Text.StartsWith("Datei hinzugefügt:")); + Assert.Contains(session.Incident.Journal, e => e.Text.StartsWith("Datei hinzugefügt:", StringComparison.Ordinal)); } finally { diff --git a/tests/LageBuch.App.Tests/AppPathsTests.cs b/tests/LageBuch.App.Tests/AppPathsTests.cs index f0aabf5..c4934b9 100644 --- a/tests/LageBuch.App.Tests/AppPathsTests.cs +++ b/tests/LageBuch.App.Tests/AppPathsTests.cs @@ -14,7 +14,7 @@ public void GetAppDataDir_creates_lagebuch_subdir() { var dir = AppPaths.GetAppDataDir(_base); Assert.True(Directory.Exists(dir)); - Assert.EndsWith("Lagebuch", dir.TrimEnd(Path.DirectorySeparatorChar)); + Assert.EndsWith("Lagebuch", dir.TrimEnd(Path.DirectorySeparatorChar), StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.AppLogic.Tests/AboutViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/AboutViewModelTests.cs index cff1ab1..2d44c5c 100644 --- a/tests/LageBuch.AppLogic.Tests/AboutViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/AboutViewModelTests.cs @@ -36,9 +36,9 @@ public void Names_the_MIT_license_and_the_copyright_holder() // Must stay in sync with the LICENSE file in the repo root. var vm = new AboutViewModel(new FakeDialogs(), "0.1.0"); - Assert.Contains("MIT", vm.LicenseLine); - Assert.Contains("Thomas Müller", vm.CopyrightLine); - Assert.Contains("2026", vm.CopyrightLine); + Assert.Contains("MIT", vm.LicenseLine, StringComparison.Ordinal); + Assert.Contains("Thomas Müller", vm.CopyrightLine, StringComparison.Ordinal); + Assert.Contains("2026", vm.CopyrightLine, StringComparison.Ordinal); } [Fact] @@ -75,7 +75,7 @@ public async Task A_failed_repository_open_is_reported_instead_of_crashing() await vm.OpenRepositoryCommand.ExecuteAsync(null); Assert.NotNull(vm.ErrorMessage); - Assert.Contains("github.com/CodeForFire/lagebuch", vm.ErrorMessage); + Assert.Contains("github.com/CodeForFire/lagebuch", vm.ErrorMessage, StringComparison.Ordinal); } private sealed class ThrowingUrlDialogs : IFileDialogService diff --git a/tests/LageBuch.AppLogic.Tests/ForcesViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/ForcesViewModelTests.cs index e214dc6..68e376f 100644 --- a/tests/LageBuch.AppLogic.Tests/ForcesViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/ForcesViewModelTests.cs @@ -279,7 +279,7 @@ public void Gf_and_mann_are_stored_as_total_with_officer_count() var unit = Assert.Single(session.Incident.Forces); Assert.Equal((1, 9, 8), (unit.OfficerCount, unit.PersonnelCount, unit.MannschaftCount)); Assert.Equal("1/8/9", unit.StrengthText); - Assert.Contains("Stärke 1/8/9", session.Incident.Journal[^1].Text); + Assert.Contains("Stärke 1/8/9", session.Incident.Journal[^1].Text, StringComparison.Ordinal); } // --- Issue #76: editable Stärke ----------------------------------------------------------- @@ -309,8 +309,8 @@ public void Editing_a_rows_strength_reaches_the_domain_with_an_etb_entry() Assert.Equal((1, 9, 3), (unit.OfficerCount, unit.PersonnelCount, unit.ScbaCount)); Assert.Single(unit.Edits); Assert.Equal(before + 1, session.Incident.Journal.Count); - Assert.Contains("Stärke 0/6/6 → 1/8/9", session.Incident.Journal[^1].Text); - Assert.Contains("davon AGT 0 → 3", session.Incident.Journal[^1].Text); + Assert.Contains("Stärke 0/6/6 → 1/8/9", session.Incident.Journal[^1].Text, StringComparison.Ordinal); + Assert.Contains("davon AGT 0 → 3", session.Incident.Journal[^1].Text, StringComparison.Ordinal); } [Fact] @@ -340,7 +340,7 @@ public void Removing_a_row_takes_the_unit_out_and_logs_the_removal() Assert.Equal("Aich", remaining.Brigade); Assert.Equal(9, vm.TotalPersonnel); Assert.Equal(3, changes); // two adds + the removal - Assert.Contains("Einheit entfernt: FFB Wache 1 (FFB 1/40/1)", session.Incident.Journal[^1].Text); + Assert.Contains("Einheit entfernt: FFB Wache 1 (FFB 1/40/1)", session.Incident.Journal[^1].Text, StringComparison.Ordinal); } [Fact] @@ -516,7 +516,7 @@ public void Adding_and_restatusing_a_unit_writes_the_etb_entries_as_the_session_ vm.Forces[0].Status = "Im Einsatz"; Assert.Equal(before + 2, session.Incident.Journal.Count); - Assert.Contains("Status Alarmiert → Im Einsatz", session.Incident.Journal[^1].Text); + Assert.Contains("Status Alarmiert → Im Einsatz", session.Incident.Journal[^1].Text, StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.AppLogic.Tests/HomeViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/HomeViewModelTests.cs index 0e296a4..dde61b7 100644 --- a/tests/LageBuch.AppLogic.Tests/HomeViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/HomeViewModelTests.cs @@ -245,8 +245,8 @@ public void OpenRecent_of_an_unreadable_file_reports_instead_of_crashing() Assert.Null(opened); Assert.NotNull(vm.OpenError); - Assert.Contains("gone.fwincident", vm.OpenError!); - Assert.Contains("Datei kaputt.", vm.OpenError!); + Assert.Contains("gone.fwincident", vm.OpenError!, StringComparison.Ordinal); + Assert.Contains("Datei kaputt.", vm.OpenError!, StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.AppLogic.Tests/IncidentWorkspaceViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/IncidentWorkspaceViewModelTests.cs index 3c7950f..3d79aa5 100644 --- a/tests/LageBuch.AppLogic.Tests/IncidentWorkspaceViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/IncidentWorkspaceViewModelTests.cs @@ -97,7 +97,7 @@ public async Task A_failed_bind_surfaces_in_the_status_line_and_leaves_sharing_o await vm.ToggleSharingCommand.ExecuteAsync(null); Assert.False(vm.IsSharing); - Assert.Contains("Port 5859 belegt", vm.ShareStatus); + Assert.Contains("Port 5859 belegt", vm.ShareStatus, StringComparison.Ordinal); } private static IncidentWorkspaceViewModel NewWorkspace(out FakeStore store, out FixedClock clock, FakeDialogs? dialogs = null) @@ -139,7 +139,7 @@ public void An_entry_logged_from_the_kraefte_tab_appears_in_the_etb_immediately( Assert.Equal(before + 1, vm.Etb.Entries.Count); // Newest first, matching how the tab renders. - Assert.Contains("Einheit aufgenommen: FFB Wache 1", vm.Etb.Entries[0].Text); + Assert.Contains("Einheit aufgenommen: FFB Wache 1", vm.Etb.Entries[0].Text, StringComparison.Ordinal); } [Fact] @@ -154,7 +154,7 @@ public void An_entry_logged_from_the_atemschutz_tab_appears_in_the_etb_immediate vm.Scba.AddTruppCommand.Execute(null); Assert.Equal(before + 1, vm.Etb.Entries.Count); - Assert.Contains("Angriffstrupp", vm.Etb.Entries[0].Text); + Assert.Contains("Angriffstrupp", vm.Etb.Entries[0].Text, StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.AppLogic.Tests/LinksViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/LinksViewModelTests.cs index 8f423ac..19e9162 100644 --- a/tests/LageBuch.AppLogic.Tests/LinksViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/LinksViewModelTests.cs @@ -71,7 +71,7 @@ public async Task OpenAsync_surfaces_a_friendly_error_when_the_platform_launcher await vm.OpenCommand.ExecuteAsync(vm.Links[0]); Assert.NotNull(vm.ErrorMessage); - Assert.Contains("Wetterdienst", vm.ErrorMessage); + Assert.Contains("Wetterdienst", vm.ErrorMessage, StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.AppLogic.Tests/MasterDataEditorViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/MasterDataEditorViewModelTests.cs index 81c6d9b..b207078 100644 --- a/tests/LageBuch.AppLogic.Tests/MasterDataEditorViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/MasterDataEditorViewModelTests.cs @@ -469,7 +469,7 @@ public void A_duplicate_call_sign_blocks_saving_and_names_the_conflict() Assert.False(vm.SaveCommand.CanExecute(null)); Assert.True(vm.HasVehicleConflicts); - Assert.Contains("FFB 1/40/1", vm.VehicleConflicts); + Assert.Contains("FFB 1/40/1", vm.VehicleConflicts, StringComparison.Ordinal); } [Fact] @@ -510,7 +510,7 @@ public void Fixing_the_duplicate_re_enables_saving() var vm = Vm(new InMemoryProvider(set)); Assert.False(vm.SaveCommand.CanExecute(null)); - Assert.Contains("FFB 1/40/1", vm.VehicleConflicts); + Assert.Contains("FFB 1/40/1", vm.VehicleConflicts, StringComparison.Ordinal); Vehicles(vm).Rows[1].CallSign = "Aich 42/1"; diff --git a/tests/LageBuch.AppLogic.Tests/ScbaViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/ScbaViewModelTests.cs index af0ea0f..a5722f3 100644 --- a/tests/LageBuch.AppLogic.Tests/ScbaViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/ScbaViewModelTests.cs @@ -48,7 +48,7 @@ public void AddTrupp_registers_a_waiting_trupp_and_does_not_start_the_clock() Assert.True(row.IsWaiting); Assert.False(row.IsActive); Assert.Equal("Bereitgestellt", row.StatusDisplay); - Assert.Contains(session.Incident.Journal, e => e.Text.Contains("bereitgestellt")); + Assert.Contains(session.Incident.Journal, e => e.Text.Contains("bereitgestellt", StringComparison.Ordinal)); Assert.Equal(1, changes); } @@ -95,7 +95,7 @@ public void Start_sends_trupp_under_air_and_logs_etb() Assert.False(row.IsWaiting); Assert.False(row.StartCommand.CanExecute(null)); Assert.True(row.RecordPressureCommand.CanExecute(null)); - Assert.Contains(session.Incident.Journal, e => e.Text.Contains("im Einsatz")); + Assert.Contains(session.Incident.Journal, e => e.Text.Contains("im Einsatz", StringComparison.Ordinal)); } [Fact] @@ -111,8 +111,8 @@ public void Recording_pressure_logs_entry_and_low_reading_trips_alarm() row.RecordPressureCommand.Execute(null); Assert.True(row.IsAlarm); - Assert.Contains(session.Incident.Journal, e => e.Text.Contains("Druckkontrolle") && e.Text.Contains("45 bar")); - Assert.Contains(session.Incident.Journal, e => e.Text.Contains("Rückzugsalarm")); + Assert.Contains(session.Incident.Journal, e => e.Text.Contains("Druckkontrolle", StringComparison.Ordinal) && e.Text.Contains("45 bar", StringComparison.Ordinal)); + Assert.Contains(session.Incident.Journal, e => e.Text.Contains("Rückzugsalarm", StringComparison.Ordinal)); } [Fact] @@ -130,7 +130,7 @@ public void Header_reminder_tracks_the_soonest_due_active_trupp() Assert.True(vm.HasControlReminder); Assert.False(vm.IsAnyControlDue); - Assert.Contains("Nächste Druckabfrage", vm.NextControlDisplay); + Assert.Contains("Nächste Druckabfrage", vm.NextControlDisplay, StringComparison.Ordinal); } [Fact] @@ -149,7 +149,7 @@ public void Tick_when_control_is_due_marks_due_in_header() Assert.True(row.IsControlDue); Assert.True(vm.IsAnyControlDue); - Assert.Contains("fällig", vm.NextControlDisplay); + Assert.Contains("fällig", vm.NextControlDisplay, StringComparison.Ordinal); } [Fact] @@ -169,7 +169,7 @@ public void Tick_past_max_duration_logs_exactly_one_alarm_entry() ticker.Fire(); ticker.Fire(); // must not log a second alarm for the same trupp - var alarms = session.Incident.Journal.Where(e => e.Text.Contains("Rückzugsalarm")).ToList(); + var alarms = session.Incident.Journal.Where(e => e.Text.Contains("Rückzugsalarm", StringComparison.Ordinal)).ToList(); Assert.Single(alarms); Assert.Equal(baseline + 1, changes); } @@ -194,7 +194,7 @@ public void Withdraw_then_MarkRemoved_logs_entries_and_stops_the_clock() Assert.Equal("Rückzug", row.StatusDisplay); Assert.False(row.WithdrawCommand.CanExecute(null)); Assert.True(row.MarkRemovedCommand.CanExecute(null)); - Assert.Contains(session.Incident.Journal, e => e.Text.Contains("Rückzug")); + Assert.Contains(session.Incident.Journal, e => e.Text.Contains("Rückzug", StringComparison.Ordinal)); clock.Now = T0.AddMinutes(12); row.MarkRemovedCommand.Execute(null); @@ -202,7 +202,7 @@ public void Withdraw_then_MarkRemoved_logs_entries_and_stops_the_clock() Assert.True(row.IsReturned); Assert.Equal("—", row.RemainingDisplay); Assert.False(vm.HasControlReminder); - Assert.Contains(session.Incident.Journal, e => e.Text.Contains("abgenommen")); + Assert.Contains(session.Incident.Journal, e => e.Text.Contains("abgenommen", StringComparison.Ordinal)); } [Fact] @@ -256,8 +256,8 @@ public void Tick_past_max_duration_sounds_the_audible_alarm_and_sets_banner() Assert.True(vm.IsAnyAlarm); Assert.Contains(AlarmSound.RetreatAlarm, alarm.Played); - Assert.Contains("RÜCKZUGSALARM", vm.AlarmDisplay); - Assert.Contains("Trupp 1 (Angriffstrupp)", vm.AlarmDisplay); + Assert.Contains("RÜCKZUGSALARM", vm.AlarmDisplay, StringComparison.Ordinal); + Assert.Contains("Trupp 1 (Angriffstrupp)", vm.AlarmDisplay, StringComparison.Ordinal); Assert.True(vm.AcknowledgeAlarmCommand.CanExecute(null)); } diff --git a/tests/LageBuch.AppLogic.Tests/TasksViewModelTests.cs b/tests/LageBuch.AppLogic.Tests/TasksViewModelTests.cs index 9b9969b..b2117bc 100644 --- a/tests/LageBuch.AppLogic.Tests/TasksViewModelTests.cs +++ b/tests/LageBuch.AppLogic.Tests/TasksViewModelTests.cs @@ -171,7 +171,7 @@ public void Ticker_refreshes_countdown_and_plays_due_alarm_exactly_once() clock.Now = T0.AddMinutes(4); ticker.Fire(); Assert.False(row.IsOverdue); - Assert.StartsWith("noch", row.RemainingDisplay); + Assert.StartsWith("noch", row.RemainingDisplay, StringComparison.Ordinal); clock.Now = T0.AddMinutes(5).AddSeconds(1); ticker.Fire(); @@ -249,7 +249,7 @@ public void Completed_rows_carry_an_erledigt_stamp_open_rows_none() var done = vm.Rows.Single(); // recreated by the write-back's Sync Assert.True(done.IsDone); - Assert.StartsWith("ERLEDIGT ·", done.CompletedDisplay); + Assert.StartsWith("ERLEDIGT ·", done.CompletedDisplay, StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.Domain.Tests/CoMeasurementTests.cs b/tests/LageBuch.Domain.Tests/CoMeasurementTests.cs index 9e282de..b8f53a0 100644 --- a/tests/LageBuch.Domain.Tests/CoMeasurementTests.cs +++ b/tests/LageBuch.Domain.Tests/CoMeasurementTests.cs @@ -146,8 +146,8 @@ public void Incident_AddCoBuilding_LogsToETB() incident.AddCoBuilding(clock, op, "Haus A", 8, 10); var entry = incident.Journal.Last(); - Assert.Contains("CO-Messprotokoll eröffnet", entry.Text); - Assert.Contains("Haus A", entry.Text); + Assert.Contains("CO-Messprotokoll eröffnet", entry.Text, StringComparison.Ordinal); + Assert.Contains("Haus A", entry.Text, StringComparison.Ordinal); } [Fact] diff --git a/tests/LageBuch.Domain.Tests/IncidentOperationsTests.cs b/tests/LageBuch.Domain.Tests/IncidentOperationsTests.cs index f48c237..31e5498 100644 --- a/tests/LageBuch.Domain.Tests/IncidentOperationsTests.cs +++ b/tests/LageBuch.Domain.Tests/IncidentOperationsTests.cs @@ -334,7 +334,7 @@ public void Edit_journal_entry_appends_a_system_trace_of_the_correction() incident.EditJournalEntry(clock, op, entry.Id, "Lagemeldung korrigiert"); - var trace = Assert.Single(incident.Journal, e => e.Text.Contains("bearbeitet")); + var trace = Assert.Single(incident.Journal, e => e.Text.Contains("bearbeitet", StringComparison.Ordinal)); Assert.Equal(EtbDirection.System, trace.Direction); Assert.Equal(T0.AddMinutes(5), trace.Timestamp); } diff --git a/tests/LageBuch.Persistence.Tests/IncidentRepositoryLoadTests.cs b/tests/LageBuch.Persistence.Tests/IncidentRepositoryLoadTests.cs index c098fbf..641ec26 100644 --- a/tests/LageBuch.Persistence.Tests/IncidentRepositoryLoadTests.cs +++ b/tests/LageBuch.Persistence.Tests/IncidentRepositoryLoadTests.cs @@ -25,7 +25,7 @@ public void Loading_a_missing_file_reports_it_and_creates_nothing() // The path rides on FileName, not in the message: the Home banner already prefixes the // filename, so repeating it there reads as a stutter. Assert.Equal(_path, ex.FileName); - Assert.DoesNotContain(Path.GetFileName(_path), ex.Message); + Assert.DoesNotContain(Path.GetFileName(_path), ex.Message, StringComparison.Ordinal); Assert.False(File.Exists(_path)); } diff --git a/tests/LageBuch.Sync.Hosting.Tests/HomeViewModelJoinTests.cs b/tests/LageBuch.Sync.Hosting.Tests/HomeViewModelJoinTests.cs index 6be95fb..f075046 100644 --- a/tests/LageBuch.Sync.Hosting.Tests/HomeViewModelJoinTests.cs +++ b/tests/LageBuch.Sync.Hosting.Tests/HomeViewModelJoinTests.cs @@ -57,7 +57,7 @@ await vm.JoinDeviceCommand.ExecuteAsync( Assert.False(opened); Assert.NotNull(vm.JoinError); - Assert.Contains("2.0.0", vm.JoinError); // names the host version it refused + Assert.Contains("2.0.0", vm.JoinError, StringComparison.Ordinal); // names the host version it refused } [Fact] @@ -91,6 +91,6 @@ await vm.JoinDeviceCommand.ExecuteAsync( Assert.False(opened); Assert.NotNull(vm.JoinError); - Assert.Contains($"127.0.0.1:{port}", vm.JoinError); // names the device it couldn't reach + Assert.Contains($"127.0.0.1:{port}", vm.JoinError, StringComparison.Ordinal); // names the device it couldn't reach } } diff --git a/tests/LageBuch.Sync.Tests/CommandApplierTests.cs b/tests/LageBuch.Sync.Tests/CommandApplierTests.cs index b2b460c..a8bf35e 100644 --- a/tests/LageBuch.Sync.Tests/CommandApplierTests.cs +++ b/tests/LageBuch.Sync.Tests/CommandApplierTests.cs @@ -72,7 +72,7 @@ public void Applying_a_sequence_of_commands_converges_the_incident() // The strength correction arrived over the wire with officer count and edit trail intact. var corrected = incident.Forces[0]; Assert.Equal((2, 12, 6, 1), (corrected.OfficerCount, corrected.PersonnelCount, corrected.ScbaCount, - incident.Journal.Count(e => e.Text.Contains('→')))); + incident.Journal.Count(e => e.Text.Contains('→', StringComparison.Ordinal)))); var trupp = Assert.Single(incident.ScbaTrupps); Assert.Equal(300, trupp.EntryPressure); } diff --git a/tests/LageBuch.Sync.Tests/CommandSerializationTests.cs b/tests/LageBuch.Sync.Tests/CommandSerializationTests.cs index df7016d..40b33a6 100644 --- a/tests/LageBuch.Sync.Tests/CommandSerializationTests.cs +++ b/tests/LageBuch.Sync.Tests/CommandSerializationTests.cs @@ -63,7 +63,7 @@ public void Command_round_trips_through_the_polymorphic_base(SyncCommand command public void Discriminator_is_the_dollar_type_property() { var json = SyncJson.Serialize(new ToggleChecklistItemCommand(Op, Guid.NewGuid())); - Assert.Contains("\"$type\":\"toggleChecklistItem\"", json); + Assert.Contains("\"$type\":\"toggleChecklistItem\"", json, StringComparison.Ordinal); } [Fact] @@ -116,7 +116,7 @@ public void AddScbaTrupp_without_truppNumber_deserializes_as_null() public void UpdateForceStrength_uses_the_updateForceStrength_discriminator() { var json = SyncJson.Serialize(new UpdateForceStrengthCommand(Op, Guid.NewGuid(), 1, 9, 4)); - Assert.Contains("\"$type\":\"updateForceStrength\"", json); + Assert.Contains("\"$type\":\"updateForceStrength\"", json, StringComparison.Ordinal); } [Fact] @@ -124,7 +124,7 @@ public void RemoveForceUnit_uses_the_removeForceUnit_discriminator_and_roundtrip { var unitId = Guid.NewGuid(); var json = SyncJson.Serialize(new RemoveForceUnitCommand(Op, unitId)); - Assert.Contains("\"$type\":\"removeForceUnit\"", json); + Assert.Contains("\"$type\":\"removeForceUnit\"", json, StringComparison.Ordinal); var command = Assert.IsType(SyncJson.Deserialize(json)); Assert.Equal(unitId, command.UnitId); diff --git a/tests/LageBuch.Sync.Tests/SnapshotRoundTripTests.cs b/tests/LageBuch.Sync.Tests/SnapshotRoundTripTests.cs index 8011e51..c965cc2 100644 --- a/tests/LageBuch.Sync.Tests/SnapshotRoundTripTests.cs +++ b/tests/LageBuch.Sync.Tests/SnapshotRoundTripTests.cs @@ -136,7 +136,7 @@ public void Snapshot_carries_file_metadata_but_never_bytes() var json = SyncJson.Serialize(SnapshotMapper.ToSnapshot(incident)); - Assert.Contains("\"fileName\":\"brand.jpg\"", json); + Assert.Contains("\"fileName\":\"brand.jpg\"", json, StringComparison.Ordinal); // Not `Contains("bytes")` -- that's a false positive on "sizeBytes". The DTO simply has no // "bytes" property to serialize (unlike AddFileCommand, which does). Assert.DoesNotContain("\"bytes\":", json, StringComparison.OrdinalIgnoreCase);