NEO-146: use collection spread in EncounterProgressApi

Apply IDE0305 to defeated-target ordering, assert stable sort in API
tests, and document sorted defeatedTargetIds in Bruno.
pull/187/head
VinPropane 2026-06-24 20:41:40 -04:00
parent b455ff5ad5
commit e0877fea7f
3 changed files with 4 additions and 1 deletions

View File

@ -7,6 +7,7 @@ meta {
docs { docs {
NEO-108: fresh player row before engagement — inactive with empty defeatedTargetIds. NEO-108: fresh player row before engagement — inactive with empty defeatedTargetIds.
Pre-request uses combat-targets dev fixture (also clears encounter progress for dev-local-1). Pre-request uses combat-targets dev fixture (also clears encounter progress for dev-local-1).
Non-empty defeatedTargetIds are returned in stable sorted order.
} }
script:pre-request { script:pre-request {

View File

@ -124,6 +124,8 @@ public sealed class EncounterProgressApiTests
PrototypeNpcRegistry.PrototypeNpcRangedId, PrototypeNpcRegistry.PrototypeNpcRangedId,
], ],
row.DefeatedTargetIds); row.DefeatedTargetIds);
Assert.True(row.DefeatedTargetIds.SequenceEqual(
row.DefeatedTargetIds.OrderBy(static id => id, StringComparer.Ordinal)));
Assert.Null(row.CompletedAt); Assert.Null(row.CompletedAt);
Assert.Null(row.RewardGrantSummary); Assert.Null(row.RewardGrantSummary);
var completionStore = factory.Services.GetRequiredService<IEncounterCompletionStore>(); var completionStore = factory.Services.GetRequiredService<IEncounterCompletionStore>();

View File

@ -72,7 +72,7 @@ public static class EncounterProgressApi
{ {
var hasProgress = progressStore.TryGetProgress(playerId, encounterId, out var progress); var hasProgress = progressStore.TryGetProgress(playerId, encounterId, out var progress);
var defeatedTargetIds = hasProgress var defeatedTargetIds = hasProgress
? progress.DefeatedNpcInstanceIds.OrderBy(static id => id, StringComparer.Ordinal).ToArray() ? [.. progress.DefeatedNpcInstanceIds.OrderBy(static id => id, StringComparer.Ordinal)]
: Array.Empty<string>(); : Array.Empty<string>();
if (completionStore.IsCompleted(playerId, encounterId)) if (completionStore.IsCompleted(playerId, encounterId))