63 lines
2.7 KiB
C#
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));
|
|
}
|
|
}
|