Track critical curation summaries and edit resets

This commit is contained in:
2026-03-18 00:45:20 +01:00
parent 8cbcf66695
commit 45873cd60c
4 changed files with 188 additions and 2 deletions

View File

@@ -56,6 +56,56 @@ public sealed class LookupServiceCurationIntegrationTests
Assert.Equal(initialResponse.SourceImageUrl, reopenedResponse.SourceImageUrl);
}
[Fact]
public async Task Lookup_service_clears_curated_state_when_any_content_is_edited()
{
var databasePath = CreateEmptyDatabasePath();
var repositoryRoot = CreateTemporaryRepositoryRoot();
var locator = new CriticalImportArtifactLocator(new TestHostEnvironment(Path.Combine(repositoryRoot, "src", "RolemasterDb.App")));
await SeedCriticalResultAsync(databasePath, "slash/cells/source-cell.png", 2);
WriteSourceImage(repositoryRoot, "slash/cells/source-cell.png");
var lookupService = new LookupService(CreateDbContextFactory(databasePath), locator);
var resultId = await GetResultIdAsync(databasePath);
var initialResponse = await lookupService.GetCriticalCellEditorAsync("slash", resultId);
Assert.NotNull(initialResponse);
var markCuratedRequest = new CriticalCellUpdateRequest(
initialResponse!.RawCellText,
initialResponse.QuickParseInput,
initialResponse.DescriptionText,
initialResponse.RawAffixText,
initialResponse.ParseStatus,
initialResponse.ParsedJson,
true,
initialResponse.IsDescriptionOverridden,
initialResponse.IsRawAffixTextOverridden,
initialResponse.AreEffectsOverridden,
initialResponse.AreBranchesOverridden,
initialResponse.Effects,
initialResponse.Branches);
var curatedResponse = await lookupService.UpdateCriticalCellAsync("slash", resultId, markCuratedRequest);
Assert.NotNull(curatedResponse);
Assert.True(curatedResponse!.IsCurated);
var editedRequest = markCuratedRequest with
{
DescriptionText = "Edited description after curation."
};
var editedResponse = await lookupService.UpdateCriticalCellAsync("slash", resultId, editedRequest);
Assert.NotNull(editedResponse);
Assert.False(editedResponse!.IsCurated);
var reopenedResponse = await lookupService.GetCriticalCellEditorAsync("slash", resultId);
Assert.NotNull(reopenedResponse);
Assert.False(reopenedResponse!.IsCurated);
Assert.Equal("Edited description after curation.", reopenedResponse.DescriptionText);
}
[Fact]
public async Task Lookup_service_resolves_source_image_paths_only_when_artifacts_exist()
{