Refresh editor after quick reparse

This commit is contained in:
2026-03-15 13:51:08 +01:00
parent 0c64ddb98b
commit 36c7187df6
2 changed files with 61 additions and 1 deletions

View File

@@ -56,7 +56,7 @@
} }
else if (Model is not null) else if (Model is not null)
{ {
<EditForm Model="Model" OnSubmit="HandleSubmitAsync" class="critical-editor-form"> <EditForm @key="Model" Model="Model" OnSubmit="HandleSubmitAsync" class="critical-editor-form">
<div class="critical-editor-body"> <div class="critical-editor-body">
@if (!string.IsNullOrWhiteSpace(ReparseErrorMessage)) @if (!string.IsNullOrWhiteSpace(ReparseErrorMessage))
{ {

View File

@@ -370,6 +370,66 @@ public sealed class CriticalCellReparseIntegrationTests
Assert.Contains(reparsed.GeneratedState!.Effects, effect => effect.EffectCode == AppCriticalEffectCodes.PowerPointModifier && effect.ValueExpression == "-2d10-16"); 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( private static CriticalCellUpdateRequest CreateEditorRequest(
string rawCellText, string rawCellText,
string descriptionText, string descriptionText,