99 lines
3.1 KiB
C#
99 lines
3.1 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));
|
|
}
|
|
} |