diff --git a/server/NeonSprawl.Server.Tests/Game/Skills/InMemoryPlayerSkillProgressionStoreTests.cs b/server/NeonSprawl.Server.Tests/Game/Skills/InMemoryPlayerSkillProgressionStoreTests.cs new file mode 100644 index 0000000..8b4fe69 --- /dev/null +++ b/server/NeonSprawl.Server.Tests/Game/Skills/InMemoryPlayerSkillProgressionStoreTests.cs @@ -0,0 +1,23 @@ +using Microsoft.Extensions.DependencyInjection; +using NeonSprawl.Server.Game.Skills; +using Xunit; + +namespace NeonSprawl.Server.Tests.Game.Skills; + +public sealed class InMemoryPlayerSkillProgressionStoreTests +{ + [Fact] + public void TrySetSkillXpTotal_WhenXpZeroAndSkillAbsent_ShouldReturnTrue() + { + // Arrange + using var factory = new InMemoryWebApplicationFactory(); + var store = factory.Services.GetRequiredService(); + + // Act + var applied = store.TrySetSkillXpTotal("dev-local-1", "intrusion", xp: 0); + + // Assert + Assert.True(applied); + Assert.False(store.GetXpTotals("dev-local-1").ContainsKey("intrusion")); + } +} diff --git a/server/NeonSprawl.Server/Game/Skills/InMemoryPlayerSkillProgressionStore.cs b/server/NeonSprawl.Server/Game/Skills/InMemoryPlayerSkillProgressionStore.cs index fa1a1bd..acab145 100644 --- a/server/NeonSprawl.Server/Game/Skills/InMemoryPlayerSkillProgressionStore.cs +++ b/server/NeonSprawl.Server/Game/Skills/InMemoryPlayerSkillProgressionStore.cs @@ -82,7 +82,8 @@ public sealed class InMemoryPlayerSkillProgressionStore(IOptions