From 36c7187df6a13f9e3ec3c5d67f6d00f4f514d965 Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Sun, 15 Mar 2026 13:51:08 +0100 Subject: [PATCH] Refresh editor after quick reparse --- .../Shared/CriticalCellEditorDialog.razor | 2 +- .../CriticalCellReparseIntegrationTests.cs | 60 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor b/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor index cf0c929..b21ad64 100644 --- a/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor +++ b/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor @@ -56,7 +56,7 @@ } else if (Model is not null) { - +
@if (!string.IsNullOrWhiteSpace(ReparseErrorMessage)) { diff --git a/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs b/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs index 082179f..def81b9 100644 --- a/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs +++ b/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs @@ -370,6 +370,66 @@ public sealed class CriticalCellReparseIntegrationTests Assert.Contains(reparsed.GeneratedState!.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.PowerPointModifier && effect.ValueExpression == "-2d10-16"); } + [Fact] + public async Task Lookup_service_reparse_updates_mana_c36_after_quick_input_was_saved_without_generation() + { + var databasePath = CreateTemporaryDatabaseCopy(); + var lookupService = new LookupService(CreateDbContextFactory(databasePath)); + var resultId = await GetResultIdAsync(databasePath, "mana", "C", "36-45"); + + var initialResponse = await lookupService.GetCriticalCellEditorAsync("mana", resultId); + Assert.NotNull(initialResponse); + + var editedQuickParseInput = initialResponse!.QuickParseInput.Replace("+2d10-16pp", "-2d10-16pp", StringComparison.Ordinal); + + var saveResponse = await lookupService.UpdateCriticalCellAsync( + "mana", + resultId, + new CriticalCellUpdateRequest( + initialResponse.RawCellText, + editedQuickParseInput, + initialResponse.DescriptionText, + initialResponse.RawAffixText, + initialResponse.ParseStatus, + initialResponse.ParsedJson, + initialResponse.IsDescriptionOverridden, + initialResponse.IsRawAffixTextOverridden, + initialResponse.AreEffectsOverridden, + initialResponse.AreBranchesOverridden, + initialResponse.Effects, + initialResponse.Branches)); + + Assert.NotNull(saveResponse); + Assert.Contains(saveResponse!.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.PowerPointModifier && effect.ValueExpression == "2d10-16"); + + var reopenedResponse = await lookupService.GetCriticalCellEditorAsync("mana", resultId); + Assert.NotNull(reopenedResponse); + Assert.Contains("-2d10-16pp", reopenedResponse!.QuickParseInput, StringComparison.Ordinal); + Assert.Contains(reopenedResponse.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.PowerPointModifier && effect.ValueExpression == "2d10-16"); + + var reparsed = await lookupService.ReparseCriticalCellAsync( + "mana", + resultId, + new CriticalCellUpdateRequest( + reopenedResponse.RawCellText, + reopenedResponse.QuickParseInput, + reopenedResponse.DescriptionText, + reopenedResponse.RawAffixText, + reopenedResponse.ParseStatus, + reopenedResponse.ParsedJson, + reopenedResponse.IsDescriptionOverridden, + reopenedResponse.IsRawAffixTextOverridden, + reopenedResponse.AreEffectsOverridden, + reopenedResponse.AreBranchesOverridden, + reopenedResponse.Effects, + reopenedResponse.Branches)); + + Assert.NotNull(reparsed); + Assert.Contains(reparsed!.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.PowerPointModifier && effect.ValueExpression == "-2d10-16"); + Assert.NotNull(reparsed.GeneratedState); + Assert.Contains(reparsed.GeneratedState!.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.PowerPointModifier && effect.ValueExpression == "-2d10-16"); + } + private static CriticalCellUpdateRequest CreateEditorRequest( string rawCellText, string descriptionText,