Add targeted workspace live refresh
This commit is contained in:
@@ -127,4 +127,38 @@ public sealed class ServiceCampaignTests
|
||||
Assert.Contains(ownerSheet.Skills, skill => skill.Id == ownerSkill.Id);
|
||||
Assert.Single(otherSheet.Skills);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CampaignStateSnapshot_TracksRosterCharacterAndLogSlicesIndependently()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness(4, 5, 6, 3);
|
||||
var service = harness.Service;
|
||||
|
||||
service.Register("gm-state", "Password123", "GM");
|
||||
service.Register("owner-state", "Password123", "Owner");
|
||||
|
||||
var gmSession = ServiceTestSupport.GetValue(service.Login("gm-state", "Password123")).SessionToken;
|
||||
var ownerSession = ServiceTestSupport.GetValue(service.Login("owner-state", "Password123")).SessionToken;
|
||||
|
||||
var campaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, "State Campaign", "d6"));
|
||||
var character = ServiceTestSupport.GetValue(service.CreateCharacter(ownerSession, "State Hero", campaign.Id));
|
||||
var afterCharacterCreate = ServiceTestSupport.GetValue(service.GetCampaignStateSnapshot(ownerSession, campaign.Id));
|
||||
|
||||
var initialCharacterVersion = Assert.Single(afterCharacterCreate.CharacterVersions, version => version.CharacterId == character.Id).Version;
|
||||
Assert.True(afterCharacterCreate.RosterVersion > 1);
|
||||
|
||||
var skill = ServiceTestSupport.GetValue(service.CreateSkill(ownerSession, character.Id, "Stealth", "2D+1", 1, true));
|
||||
var afterSkillCreate = ServiceTestSupport.GetValue(service.GetCampaignStateSnapshot(ownerSession, campaign.Id));
|
||||
var updatedCharacterVersion = Assert.Single(afterSkillCreate.CharacterVersions, version => version.CharacterId == character.Id).Version;
|
||||
|
||||
Assert.Equal(afterCharacterCreate.RosterVersion, afterSkillCreate.RosterVersion);
|
||||
Assert.True(updatedCharacterVersion > initialCharacterVersion);
|
||||
|
||||
_ = ServiceTestSupport.GetValue(service.RollSkill(ownerSession, skill.Id, "public"));
|
||||
var afterRoll = ServiceTestSupport.GetValue(service.GetCampaignStateSnapshot(ownerSession, campaign.Id));
|
||||
|
||||
Assert.Equal(afterSkillCreate.RosterVersion, afterRoll.RosterVersion);
|
||||
Assert.Equal(updatedCharacterVersion, Assert.Single(afterRoll.CharacterVersions, version => version.CharacterId == character.Id).Version);
|
||||
Assert.True(afterRoll.LogVersion > afterSkillCreate.LogVersion);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user