From e0877fea7fdebfcbe285d685c0e42afb7e80bedf Mon Sep 17 00:00:00 2001 From: VinPropane Date: Wed, 24 Jun 2026 20:41:40 -0400 Subject: [PATCH] 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. --- .../encounter-progress/Get encounter progress inactive.bru | 1 + .../Game/Encounters/EncounterProgressApiTests.cs | 2 ++ .../NeonSprawl.Server/Game/Encounters/EncounterProgressApi.cs | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bruno/neon-sprawl-server/encounter-progress/Get encounter progress inactive.bru b/bruno/neon-sprawl-server/encounter-progress/Get encounter progress inactive.bru index ccd29e6..cb72d06 100644 --- a/bruno/neon-sprawl-server/encounter-progress/Get encounter progress inactive.bru +++ b/bruno/neon-sprawl-server/encounter-progress/Get encounter progress inactive.bru @@ -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 { diff --git a/server/NeonSprawl.Server.Tests/Game/Encounters/EncounterProgressApiTests.cs b/server/NeonSprawl.Server.Tests/Game/Encounters/EncounterProgressApiTests.cs index d7dd7a4..c13ab43 100644 --- a/server/NeonSprawl.Server.Tests/Game/Encounters/EncounterProgressApiTests.cs +++ b/server/NeonSprawl.Server.Tests/Game/Encounters/EncounterProgressApiTests.cs @@ -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(); diff --git a/server/NeonSprawl.Server/Game/Encounters/EncounterProgressApi.cs b/server/NeonSprawl.Server/Game/Encounters/EncounterProgressApi.cs index 099a05c..97e25ea 100644 --- a/server/NeonSprawl.Server/Game/Encounters/EncounterProgressApi.cs +++ b/server/NeonSprawl.Server/Game/Encounters/EncounterProgressApi.cs @@ -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(); if (completionStore.IsCompleted(playerId, encounterId))