Reorganize tests by API and service concerns
This commit is contained in:
100
RpgRoller.Tests/Services/ServiceCampaignTests.cs
Normal file
100
RpgRoller.Tests/Services/ServiceCampaignTests.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
namespace RpgRoller.Tests;
|
||||
|
||||
public sealed class ServiceCampaignTests
|
||||
{
|
||||
[Fact]
|
||||
public void CampaignAndCharacterOperations_CheckUnauthorizedAndNotFoundCases()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness();
|
||||
var service = harness.Service;
|
||||
|
||||
var unauthorizedCampaign = service.CreateCampaign("missing", new CreateCampaignCommand("Name", "d6"));
|
||||
Assert.False(unauthorizedCampaign.Succeeded);
|
||||
|
||||
service.Register(new RegisterCommand("gm", "Password123", "GM"));
|
||||
var gmSession = ServiceTestSupport.GetValue(service.Login(new LoginCommand("gm", "Password123"))).SessionToken;
|
||||
var campaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, new CreateCampaignCommand("Name", "d6")));
|
||||
|
||||
var invalidRuleset = service.CreateCampaign(gmSession, new CreateCampaignCommand("Name 2", "unknown"));
|
||||
Assert.False(invalidRuleset.Succeeded);
|
||||
|
||||
var noCampaignCharacter = service.CreateCharacter(gmSession, new CreateCharacterCommand("Hero", Guid.NewGuid()));
|
||||
Assert.False(noCampaignCharacter.Succeeded);
|
||||
|
||||
var character = ServiceTestSupport.GetValue(service.CreateCharacter(gmSession, new CreateCharacterCommand("Hero", campaign.Id)));
|
||||
|
||||
var missingCharacterActivate = service.ActivateCharacter(gmSession, Guid.NewGuid());
|
||||
Assert.False(missingCharacterActivate.Succeeded);
|
||||
|
||||
var activateSuccess = service.ActivateCharacter(gmSession, character.Id);
|
||||
Assert.True(activateSuccess.Succeeded);
|
||||
|
||||
var currentCharacters = service.GetCurrentCampaignCharacters(gmSession);
|
||||
Assert.True(currentCharacters.Succeeded);
|
||||
Assert.Single(ServiceTestSupport.GetValue(currentCharacters));
|
||||
|
||||
var missingCampaignGet = service.GetCampaign(gmSession, Guid.NewGuid());
|
||||
Assert.False(missingCampaignGet.Succeeded);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CurrentCampaignCharacters_ReturnsNoActiveCharacterWhenUnset()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness();
|
||||
var service = harness.Service;
|
||||
service.Register(new RegisterCommand("user", "Password123", "User"));
|
||||
var sessionToken = ServiceTestSupport.GetValue(service.Login(new LoginCommand("user", "Password123"))).SessionToken;
|
||||
|
||||
var result = service.GetCurrentCampaignCharacters(sessionToken);
|
||||
Assert.False(result.Succeeded);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetCampaigns_ReturnsOwnedAndParticipatingCampaigns()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness();
|
||||
var service = harness.Service;
|
||||
service.Register(new RegisterCommand("gm", "Password123", "GM"));
|
||||
service.Register(new RegisterCommand("player", "Password123", "Player"));
|
||||
var gmSession = ServiceTestSupport.GetValue(service.Login(new LoginCommand("gm", "Password123"))).SessionToken;
|
||||
var playerSession = ServiceTestSupport.GetValue(service.Login(new LoginCommand("player", "Password123"))).SessionToken;
|
||||
|
||||
var gmCampaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, new CreateCampaignCommand("Owned", "d6")));
|
||||
_ = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, new CreateCampaignCommand("Owned 2", "d6")));
|
||||
_ = service.CreateCharacter(playerSession, new CreateCharacterCommand("Joiner", gmCampaign.Id));
|
||||
|
||||
var playerCampaigns = service.GetCampaigns(playerSession);
|
||||
Assert.True(playerCampaigns.Succeeded);
|
||||
var campaigns = ServiceTestSupport.GetValue(playerCampaigns);
|
||||
Assert.Single(campaigns);
|
||||
Assert.Equal(gmCampaign.Id, campaigns[0].Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetCampaign_ForNonGm_ReturnsOnlyOwnedCharactersAndSkills()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness();
|
||||
var service = harness.Service;
|
||||
|
||||
service.Register(new RegisterCommand("gm", "Password123", "GM"));
|
||||
service.Register(new RegisterCommand("owner", "Password123", "Owner"));
|
||||
service.Register(new RegisterCommand("other", "Password123", "Other"));
|
||||
|
||||
var gmSession = ServiceTestSupport.GetValue(service.Login(new LoginCommand("gm", "Password123"))).SessionToken;
|
||||
var ownerSession = ServiceTestSupport.GetValue(service.Login(new LoginCommand("owner", "Password123"))).SessionToken;
|
||||
var otherSession = ServiceTestSupport.GetValue(service.Login(new LoginCommand("other", "Password123"))).SessionToken;
|
||||
|
||||
var campaign = ServiceTestSupport.GetValue(service.CreateCampaign(gmSession, new CreateCampaignCommand("Main", "d6")));
|
||||
var ownerCharacter = ServiceTestSupport.GetValue(service.CreateCharacter(ownerSession, new CreateCharacterCommand("Owner Character", campaign.Id)));
|
||||
var otherCharacter = ServiceTestSupport.GetValue(service.CreateCharacter(otherSession, new CreateCharacterCommand("Other Character", campaign.Id)));
|
||||
|
||||
var ownerSkill = ServiceTestSupport.GetValue(service.CreateSkill(ownerSession, ownerCharacter.Id, new CreateSkillCommand("Stealth", "2D+1")));
|
||||
_ = ServiceTestSupport.GetValue(service.CreateSkill(otherSession, otherCharacter.Id, new CreateSkillCommand("Perception", "1D+2")));
|
||||
|
||||
var ownerView = ServiceTestSupport.GetValue(service.GetCampaign(ownerSession, campaign.Id));
|
||||
Assert.Single(ownerView.Characters);
|
||||
Assert.Equal(ownerCharacter.Id, ownerView.Characters[0].Id);
|
||||
Assert.Single(ownerView.Skills);
|
||||
Assert.Equal(ownerSkill.Id, ownerView.Skills[0].Id);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user