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 {
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).
Non-empty defeatedTargetIds are returned in stable sorted order.
}
script:pre-request {

View File

@ -124,6 +124,8 @@ public sealed class EncounterProgressApiTests
PrototypeNpcRegistry.PrototypeNpcRangedId,
],
row.DefeatedTargetIds);
Assert.True(row.DefeatedTargetIds.SequenceEqual(
row.DefeatedTargetIds.OrderBy(static id => id, StringComparer.Ordinal)));
Assert.Null(row.CompletedAt);
Assert.Null(row.RewardGrantSummary);
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 defeatedTargetIds = hasProgress
? progress.DefeatedNpcInstanceIds.OrderBy(static id => id, StringComparer.Ordinal).ToArray()
? [.. progress.DefeatedNpcInstanceIds.OrderBy(static id => id, StringComparer.Ordinal)]
: Array.Empty<string>();
if (completionStore.IsCompleted(playerId, encounterId))