From f84b1e690c8e5d2bf96e2d49e29f3f7ebeb2f289 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 15:30:33 +0000 Subject: [PATCH 1/5] Migrate core bunit v2 APIs Agent-Logs-Url: https://github.com/danielchalmers/JournalApp/sessions/16eea263-70d0-438d-98e4-aad1d78cfede Co-authored-by: danielchalmers <7112040+danielchalmers@users.noreply.github.com> --- JournalApp.Tests/CalendarTests.razor | 6 +++--- JournalApp.Tests/DataPointViewTests.razor | 12 ++++++------ JournalApp.Tests/JaTestContext.cs | 6 ++++-- JournalApp.Tests/JournalApp.Tests.csproj | 2 +- JournalApp.Tests/ManageCategoriesTests.razor | 2 +- JournalApp.Tests/SafetyPlanTests.razor | 8 ++++---- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/JournalApp.Tests/CalendarTests.razor b/JournalApp.Tests/CalendarTests.razor index 9a73d392..fb4dc711 100644 --- a/JournalApp.Tests/CalendarTests.razor +++ b/JournalApp.Tests/CalendarTests.razor @@ -20,7 +20,7 @@ [Fact] public void SwitchYear() { - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.OpenToDateString, "20000101") ); @@ -51,7 +51,7 @@ [Fact] public async Task CalendarViewMoodBlockCount() { - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.OpenToDateString, "20230101") ); cut.Instance.SelectedYear.Should().Be(2023); @@ -81,7 +81,7 @@ _culture.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Wednesday; Thread.CurrentThread.CurrentCulture = _culture; - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.OpenToDateString, "20230101") ); cut.Instance.SelectedYear.Should().Be(2023); diff --git a/JournalApp.Tests/DataPointViewTests.razor b/JournalApp.Tests/DataPointViewTests.razor index 40b63182..800c117e 100644 --- a/JournalApp.Tests/DataPointViewTests.razor +++ b/JournalApp.Tests/DataPointViewTests.razor @@ -87,7 +87,7 @@ var point = DataPoint.Create(day, category); point.SleepHours = 8.5m; - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.Point, point) ); @@ -122,7 +122,7 @@ var day = Day.Create(new(2024, 01, 01)); var point = DataPoint.Create(day, category); - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.Point, point) ); @@ -150,7 +150,7 @@ var day = Day.Create(new(2024, 01, 01)); var point = DataPoint.Create(day, category); - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.Point, point) ); @@ -187,7 +187,7 @@ var day = Day.Create(new(2024, 01, 01)); var point = DataPoint.Create(day, category); - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.Point, point) ); @@ -208,7 +208,7 @@ var day = Day.Create(new(2024, 01, 01)); var point = DataPoint.Create(day, category); - var cut = RenderComponent(p => + var cut = Render(p => p.Add(x => x.Point, point) ); @@ -446,7 +446,7 @@ var point = DataPoint.Create(day, category); var stateChangedCalls = 0; - var cut = RenderComponent(p => p + var cut = Render(p => p .Add(x => x.Point, point) .Add(x => x.StateChanged, () => stateChangedCalls++)); diff --git a/JournalApp.Tests/JaTestContext.cs b/JournalApp.Tests/JaTestContext.cs index ceb4ad74..6b8dab4d 100644 --- a/JournalApp.Tests/JaTestContext.cs +++ b/JournalApp.Tests/JaTestContext.cs @@ -4,7 +4,7 @@ namespace JournalApp.Tests; -public abstract class JaTestContext : TestContext, IAsyncLifetime +public abstract class JaTestContext : BunitContext, IAsyncLifetime { private SqliteConnection _dbConnection; @@ -21,13 +21,15 @@ public virtual Task InitializeAsync() return Task.CompletedTask; } - public virtual async Task DisposeAsync() + public new virtual async Task DisposeAsync() { if (_dbConnection != null) { await _dbConnection.CloseAsync(); await _dbConnection.DisposeAsync(); } + + await base.DisposeAsync(); } public void AddDbContext() diff --git a/JournalApp.Tests/JournalApp.Tests.csproj b/JournalApp.Tests/JournalApp.Tests.csproj index 6dcb27e5..7515a6ca 100644 --- a/JournalApp.Tests/JournalApp.Tests.csproj +++ b/JournalApp.Tests/JournalApp.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/JournalApp.Tests/ManageCategoriesTests.razor b/JournalApp.Tests/ManageCategoriesTests.razor index a6ff3345..d190f19f 100644 --- a/JournalApp.Tests/ManageCategoriesTests.razor +++ b/JournalApp.Tests/ManageCategoriesTests.razor @@ -246,7 +246,7 @@ return db.Categories.Single(c => c.Guid == new Guid(guid)); } - var cut = RenderComponent(); + var cut = Render(); for (int i = 6; i > 1; i--) { diff --git a/JournalApp.Tests/SafetyPlanTests.razor b/JournalApp.Tests/SafetyPlanTests.razor index 410edae7..b8186ab9 100644 --- a/JournalApp.Tests/SafetyPlanTests.razor +++ b/JournalApp.Tests/SafetyPlanTests.razor @@ -13,7 +13,7 @@ Purpose = "My purpose is to finish these tests", }; - var cut = RenderComponent(); + var cut = Render(); // Assert state. cut.Instance.Plan.Purpose.Should().Be("My purpose is to finish these tests"); @@ -31,7 +31,7 @@ Purpose = "My purpose is to finish these tests", }; - var cut = RenderComponent(); + var cut = Render(); // Assert initial state. cut.Instance.Plan.Purpose.Should().Be("My purpose is to finish these tests"); @@ -42,8 +42,8 @@ cut.Instance.Plan.ProfessionalContacts = "988 (USA)"; // Leave and come back. - DisposeComponents(); - cut = RenderComponent(); + cut.Dispose(); + cut = Render(); // Assert that all changes persisted. preferenceService.SafetyPlan.Purpose.Should().Be("Actually it's puppies"); From 469b8de143ca3ecd818eb87c29b42772564e906b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 15:34:11 +0000 Subject: [PATCH 2/5] Finish bunit v2 migration and test fixes Agent-Logs-Url: https://github.com/danielchalmers/JournalApp/sessions/16eea263-70d0-438d-98e4-aad1d78cfede Co-authored-by: danielchalmers <7112040+danielchalmers@users.noreply.github.com> --- JournalApp.Tests/Data/AppDataUIServiceTests.cs | 4 ++-- JournalApp.Tests/SafetyPlanTests.razor | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/JournalApp.Tests/Data/AppDataUIServiceTests.cs b/JournalApp.Tests/Data/AppDataUIServiceTests.cs index 931209e6..5b406e3b 100644 --- a/JournalApp.Tests/Data/AppDataUIServiceTests.cs +++ b/JournalApp.Tests/Data/AppDataUIServiceTests.cs @@ -21,7 +21,7 @@ public async Task StartImportWizard_DoesNotModifyDataOrPreferences_WhenUserCance var appDataService = Services.GetService(); var preferenceService = Services.GetService(); - var originalExportDate = new DateTimeOffset(2026, 3, 15, 12, 0, 0, TimeSpan.FromHours(-5)); + var originalExportDate = DateTimeOffset.Now.AddDays(-1); preferenceService.LastExportDate = originalExportDate; preferenceService.HideNotes = true; preferenceService.SelectedAppTheme = AppTheme.Dark; @@ -88,7 +88,7 @@ public async Task StartImportWizard_DoesNotRestorePreferencesOrUpdateLastExport_ var appDataService = Services.GetService(); var preferenceService = Services.GetService(); - var originalExportDate = new DateTimeOffset(2026, 3, 15, 12, 0, 0, TimeSpan.FromHours(-5)); + var originalExportDate = DateTimeOffset.Now.AddDays(-1); preferenceService.LastExportDate = originalExportDate; preferenceService.SafetyPlan = new SafetyPlan { WarningSigns = "original warning" }; diff --git a/JournalApp.Tests/SafetyPlanTests.razor b/JournalApp.Tests/SafetyPlanTests.razor index b8186ab9..a18cfca0 100644 --- a/JournalApp.Tests/SafetyPlanTests.razor +++ b/JournalApp.Tests/SafetyPlanTests.razor @@ -22,7 +22,7 @@ [Fact] [Description("The safety plan must save changes and load them back next time")] - public void PlanPersists() + public async Task PlanPersists() { var preferenceService = Services.GetService(); @@ -42,7 +42,7 @@ cut.Instance.Plan.ProfessionalContacts = "988 (USA)"; // Leave and come back. - cut.Dispose(); + await DisposeComponentsAsync(); cut = Render(); // Assert that all changes persisted. From 363c7e7c7352dd8de8ca50281e1dd4a52ef14034 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 15:36:19 +0000 Subject: [PATCH 3/5] Make import wizard tests deterministic Agent-Logs-Url: https://github.com/danielchalmers/JournalApp/sessions/16eea263-70d0-438d-98e4-aad1d78cfede Co-authored-by: danielchalmers <7112040+danielchalmers@users.noreply.github.com> --- JournalApp.Tests/Data/AppDataUIServiceTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JournalApp.Tests/Data/AppDataUIServiceTests.cs b/JournalApp.Tests/Data/AppDataUIServiceTests.cs index 5b406e3b..7c42c5f0 100644 --- a/JournalApp.Tests/Data/AppDataUIServiceTests.cs +++ b/JournalApp.Tests/Data/AppDataUIServiceTests.cs @@ -21,7 +21,7 @@ public async Task StartImportWizard_DoesNotModifyDataOrPreferences_WhenUserCance var appDataService = Services.GetService(); var preferenceService = Services.GetService(); - var originalExportDate = DateTimeOffset.Now.AddDays(-1); + var originalExportDate = new DateTimeOffset(2099, 1, 1, 0, 0, 0, TimeSpan.Zero); preferenceService.LastExportDate = originalExportDate; preferenceService.HideNotes = true; preferenceService.SelectedAppTheme = AppTheme.Dark; @@ -88,7 +88,7 @@ public async Task StartImportWizard_DoesNotRestorePreferencesOrUpdateLastExport_ var appDataService = Services.GetService(); var preferenceService = Services.GetService(); - var originalExportDate = DateTimeOffset.Now.AddDays(-1); + var originalExportDate = new DateTimeOffset(2099, 1, 1, 0, 0, 0, TimeSpan.Zero); preferenceService.LastExportDate = originalExportDate; preferenceService.SafetyPlan = new SafetyPlan { WarningSigns = "original warning" }; From 60774526e8dadebc976fb841baa54c5d8a1e20e2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 15:38:02 +0000 Subject: [PATCH 4/5] Clarify import wizard test fixtures Agent-Logs-Url: https://github.com/danielchalmers/JournalApp/sessions/16eea263-70d0-438d-98e4-aad1d78cfede Co-authored-by: danielchalmers <7112040+danielchalmers@users.noreply.github.com> --- JournalApp.Tests/Data/AppDataUIServiceTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JournalApp.Tests/Data/AppDataUIServiceTests.cs b/JournalApp.Tests/Data/AppDataUIServiceTests.cs index 7c42c5f0..1e3bfa8d 100644 --- a/JournalApp.Tests/Data/AppDataUIServiceTests.cs +++ b/JournalApp.Tests/Data/AppDataUIServiceTests.cs @@ -21,7 +21,7 @@ public async Task StartImportWizard_DoesNotModifyDataOrPreferences_WhenUserCance var appDataService = Services.GetService(); var preferenceService = Services.GetService(); - var originalExportDate = new DateTimeOffset(2099, 1, 1, 0, 0, 0, TimeSpan.Zero); + var originalExportDate = new DateTimeOffset(2099, 1, 1, 0, 0, 0, TimeSpan.Zero); // Skips the backup warning so this test exercises the confirmation dialog path. preferenceService.LastExportDate = originalExportDate; preferenceService.HideNotes = true; preferenceService.SelectedAppTheme = AppTheme.Dark; @@ -88,7 +88,7 @@ public async Task StartImportWizard_DoesNotRestorePreferencesOrUpdateLastExport_ var appDataService = Services.GetService(); var preferenceService = Services.GetService(); - var originalExportDate = new DateTimeOffset(2099, 1, 1, 0, 0, 0, TimeSpan.Zero); + var originalExportDate = new DateTimeOffset(2099, 1, 1, 0, 0, 0, TimeSpan.Zero); // Skips the backup warning so this test reaches the replace failure path. preferenceService.LastExportDate = originalExportDate; preferenceService.SafetyPlan = new SafetyPlan { WarningSigns = "original warning" }; From d7d15fce295ad945cf4fb6795ab908e60da315c9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 15:55:40 +0000 Subject: [PATCH 5/5] Refactor test context disposal pattern Agent-Logs-Url: https://github.com/danielchalmers/JournalApp/sessions/ca8ad4e2-04e0-4113-811f-10663a20656e Co-authored-by: danielchalmers <7112040+danielchalmers@users.noreply.github.com> --- JournalApp.Tests/JaTestContext.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/JournalApp.Tests/JaTestContext.cs b/JournalApp.Tests/JaTestContext.cs index 6b8dab4d..b69b3918 100644 --- a/JournalApp.Tests/JaTestContext.cs +++ b/JournalApp.Tests/JaTestContext.cs @@ -21,12 +21,15 @@ public virtual Task InitializeAsync() return Task.CompletedTask; } - public new virtual async Task DisposeAsync() + Task IAsyncLifetime.DisposeAsync() => DisposeTestContextAsync(); + + protected virtual async Task DisposeTestContextAsync() { if (_dbConnection != null) { await _dbConnection.CloseAsync(); await _dbConnection.DisposeAsync(); + _dbConnection = null; } await base.DisposeAsync();