Files
RpgRoller/RpgRoller.Tests/Services/ServiceStateInfrastructureTests.cs

63 lines
2.7 KiB
C#

namespace RpgRoller.Tests;
public sealed class ServiceStateInfrastructureTests
{
[Fact]
public void GameStateStore_StartsWithEmptyMutableCollections()
{
var store = new GameStateStore();
Assert.NotNull(store.Gate);
Assert.Empty(store.UsersById);
Assert.Empty(store.UserIdsByUsername);
Assert.Empty(store.SessionsByToken);
Assert.Empty(store.CampaignsById);
Assert.Empty(store.CampaignStateById);
Assert.Empty(store.CharactersById);
Assert.Empty(store.SkillGroupsById);
Assert.Empty(store.SkillsById);
Assert.Empty(store.RollLog);
}
[Fact]
public void GameStateCloneFactory_ProducesDetachedCopies()
{
var user = new UserAccount
{
Id = Guid.NewGuid(),
Username = "user",
UsernameNormalized = "USER",
PasswordHash = "hash",
DisplayName = "User",
Roles = "admin",
ActiveCharacterId = Guid.NewGuid()
};
var session = new UserSession { Token = "token", UserId = user.Id, CreatedAtUtc = DateTimeOffset.UtcNow };
var campaign = new Campaign { Id = Guid.NewGuid(), GmUserId = user.Id, Name = "Main", Ruleset = RulesetKind.D6, Version = 3 };
var character = new Character { Id = Guid.NewGuid(), OwnerUserId = user.Id, CampaignId = campaign.Id, Name = "Hero" };
var skillGroup = new SkillGroup { Id = Guid.NewGuid(), CharacterId = character.Id, Name = "Group", DiceRollDefinition = "2D+1", WildDice = 1, AllowFumble = true, FumbleRange = null };
var skill = new Skill { Id = Guid.NewGuid(), CharacterId = character.Id, SkillGroupId = skillGroup.Id, Name = "Skill", DiceRollDefinition = "2D+2", WildDice = 1, AllowFumble = true, FumbleRange = null };
var logEntry = new RollLogEntry
{
Id = Guid.NewGuid(),
CampaignId = campaign.Id,
CharacterId = character.Id,
SkillId = skill.Id,
RollerUserId = user.Id,
Visibility = RollVisibility.Public,
Result = 12,
Breakdown = "6 + 6 = 12",
Dice = "[]",
TimestampUtc = DateTimeOffset.UtcNow
};
Assert.NotSame(user, GameStateCloneFactory.CloneUser(user));
Assert.NotSame(session, GameStateCloneFactory.CloneSession(session));
Assert.NotSame(campaign, GameStateCloneFactory.CloneCampaign(campaign));
Assert.NotSame(character, GameStateCloneFactory.CloneCharacter(character));
Assert.NotSame(skillGroup, GameStateCloneFactory.CloneSkillGroup(skillGroup));
Assert.NotSame(skill, GameStateCloneFactory.CloneSkill(skill));
Assert.NotSame(logEntry, GameStateCloneFactory.CloneRollLogEntry(logEntry));
}
}