From 0a3c28ae5ce4e41d6ccb782fa20aab295f6769c2 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Sun, 17 May 2026 21:58:53 -0400 Subject: [PATCH] NEO-51: Primary constructor on ItemDefinitionCatalog; test tidy. Restore explicit Content:ItemsDirectory in test factory; use const for schema-violation fixture JSON. --- .../Items/ItemDefinitionCatalogLoaderTests.cs | 2 +- .../InMemoryWebApplicationFactory.cs | 2 +- .../Game/Items/ItemDefinitionCatalog.cs | 20 +++++++------------ 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/server/NeonSprawl.Server.Tests/Game/Items/ItemDefinitionCatalogLoaderTests.cs b/server/NeonSprawl.Server.Tests/Game/Items/ItemDefinitionCatalogLoaderTests.cs index 96c2137..3208b0e 100644 --- a/server/NeonSprawl.Server.Tests/Game/Items/ItemDefinitionCatalogLoaderTests.cs +++ b/server/NeonSprawl.Server.Tests/Game/Items/ItemDefinitionCatalogLoaderTests.cs @@ -129,7 +129,7 @@ public class ItemDefinitionCatalogLoaderTests { // Arrange var (_, itemsDir, schemaPath) = CreateTempContentLayout(); - var bad = """ + const string bad = """ { "schemaVersion": 1, "items": [ diff --git a/server/NeonSprawl.Server.Tests/InMemoryWebApplicationFactory.cs b/server/NeonSprawl.Server.Tests/InMemoryWebApplicationFactory.cs index d7ad919..bf7f11f 100644 --- a/server/NeonSprawl.Server.Tests/InMemoryWebApplicationFactory.cs +++ b/server/NeonSprawl.Server.Tests/InMemoryWebApplicationFactory.cs @@ -5,8 +5,8 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Time.Testing; using NeonSprawl.Server.Game.AbilityInput; -using NeonSprawl.Server.Game.PositionState; using NeonSprawl.Server.Game.Items; +using NeonSprawl.Server.Game.PositionState; using NeonSprawl.Server.Game.Mastery; using NeonSprawl.Server.Game.Skills; using Npgsql; diff --git a/server/NeonSprawl.Server/Game/Items/ItemDefinitionCatalog.cs b/server/NeonSprawl.Server/Game/Items/ItemDefinitionCatalog.cs index 12ac71d..1ee21ea 100644 --- a/server/NeonSprawl.Server/Game/Items/ItemDefinitionCatalog.cs +++ b/server/NeonSprawl.Server/Game/Items/ItemDefinitionCatalog.cs @@ -3,27 +3,21 @@ using System.Collections.ObjectModel; namespace NeonSprawl.Server.Game.Items; /// In-memory item catalog loaded at startup (NEO-51). Game code should prefer injectable item registry for lookups (NEO-52). -public sealed class ItemDefinitionCatalog +public sealed class ItemDefinitionCatalog( + string itemsDirectory, + IReadOnlyDictionary byId, + int catalogJsonFileCount) { - public ItemDefinitionCatalog( - string itemsDirectory, - IReadOnlyDictionary byId, - int catalogJsonFileCount) - { - ItemsDirectory = itemsDirectory; - ById = new ReadOnlyDictionary(new Dictionary(byId, StringComparer.Ordinal)); - CatalogJsonFileCount = catalogJsonFileCount; - } /// Absolute path to the directory that was enumerated for *_items.json catalogs. - public string ItemsDirectory { get; } + public string ItemsDirectory { get; } = itemsDirectory; - public IReadOnlyDictionary ById { get; } + public IReadOnlyDictionary ById { get; } = new ReadOnlyDictionary(new Dictionary(byId, StringComparer.Ordinal)); public int DistinctItemCount => ById.Count; /// Number of *_items.json files under . - public int CatalogJsonFileCount { get; } + public int CatalogJsonFileCount { get; } = catalogJsonFileCount; /// Resolves a catalog row by stable . public bool TryGetItem(string id, out ItemDefRow? row) =>