From b5449616bab8f2ddca2d2ba30df05f3bb44dd322 Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Sun, 15 Mar 2026 13:39:29 +0100 Subject: [PATCH] Fix quick reparse input refresh --- .../Shared/CriticalCellEditorDialog.razor | 2 +- .../CriticalCellReparseIntegrationTests.cs | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor b/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor index d86af8e..40cc374 100644 --- a/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor +++ b/src/RolemasterDb.App/Components/Shared/CriticalCellEditorDialog.razor @@ -80,7 +80,7 @@
- +

Example: Foe brings his guard up, frightened by your display. then +5, 1mp or w/o shield: glancing blow, +15, 3s, 3np.

diff --git a/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs b/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs index 679f1ee..082179f 100644 --- a/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs +++ b/src/RolemasterDb.ImportTool.Tests/CriticalCellReparseIntegrationTests.cs @@ -333,6 +333,43 @@ public sealed class CriticalCellReparseIntegrationTests Assert.Contains(reparsed.GeneratedState!.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.MustParryRounds && effect.DurationRounds == 1); } + [Fact] + public async Task Lookup_service_reparse_updates_mana_c36_power_point_sign_when_quick_input_changes() + { + 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); + Assert.Contains("+2d10-16pp", initialResponse!.QuickParseInput, StringComparison.Ordinal); + + var changedQuickParseInput = initialResponse.QuickParseInput.Replace("+2d10-16pp", "-2d10-16pp", StringComparison.Ordinal); + var reparsed = await lookupService.ReparseCriticalCellAsync( + "mana", + resultId, + new CriticalCellUpdateRequest( + initialResponse.RawCellText, + changedQuickParseInput, + initialResponse.DescriptionText, + initialResponse.RawAffixText, + initialResponse.ParseStatus, + initialResponse.ParsedJson, + initialResponse.IsDescriptionOverridden, + initialResponse.IsRawAffixTextOverridden, + initialResponse.AreEffectsOverridden, + initialResponse.AreBranchesOverridden, + initialResponse.Effects, + initialResponse.Branches)); + + Assert.NotNull(reparsed); + Assert.Equal(changedQuickParseInput, reparsed!.QuickParseInput); + 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,