Support character unlinking and global campaign options

This commit is contained in:
2026-02-26 17:50:08 +01:00
parent 6f94b1ba95
commit ac5acd77f0
12 changed files with 176 additions and 31 deletions

View File

@@ -71,6 +71,30 @@ public sealed class ServiceCampaignTests
Assert.Equal(gmCampaign.Id, campaigns[0].Id);
}
[Fact]
public void GetCharacterCampaignOptions_ReturnsAllCampaignsForCharacterAssignment()
{
using var harness = ServiceTestSupport.CreateHarness();
var service = harness.Service;
service.Register("gm1", "Password123", "GM One");
service.Register("gm2", "Password123", "GM Two");
service.Register("player", "Password123", "Player");
var gmSession = ServiceTestSupport.GetValue(service.Login("gm1", "Password123")).SessionToken;
var gmTwoSession = ServiceTestSupport.GetValue(service.Login("gm2", "Password123")).SessionToken;
var playerSession = ServiceTestSupport.GetValue(service.Login("player", "Password123")).SessionToken;
var firstCampaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, "Alpha", "d6"));
var secondCampaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmTwoSession, "Beta", "d6"));
var visibleCampaigns = ServiceTestSupport.GetValue(service.GetCampaigns(playerSession));
Assert.Empty(visibleCampaigns);
var options = ServiceTestSupport.GetValue(service.GetCharacterCampaignOptions(playerSession));
Assert.Equal(2, options.Count);
Assert.Contains(options, option => option.Id == firstCampaign.Id);
Assert.Contains(options, option => option.Id == secondCampaign.Id);
}
[Fact]
public void GetCampaign_ForNonGmParticipant_ReturnsCampaignCharactersAndSkills()
{