Reorganize tests by API and service concerns
This commit is contained in:
74
RpgRoller.Tests/Services/ServiceSkillRollTests.cs
Normal file
74
RpgRoller.Tests/Services/ServiceSkillRollTests.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
namespace RpgRoller.Tests;
|
||||
|
||||
public sealed class ServiceSkillRollTests
|
||||
{
|
||||
[Fact]
|
||||
public void CharacterSkillAndRollOperations_CheckAuthorizationAndValidationBranches()
|
||||
{
|
||||
using var harness = ServiceTestSupport.CreateHarness(3, 4, 5, 6);
|
||||
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", "dnd5e")));
|
||||
var character = ServiceTestSupport.GetValue(service.CreateCharacter(ownerSession, new CreateCharacterCommand("Owner Char", campaign.Id)));
|
||||
|
||||
var noPermissionUpdate = service.UpdateCharacter(otherSession, character.Id, new UpdateCharacterCommand("Renamed", campaign.Id));
|
||||
Assert.False(noPermissionUpdate.Succeeded);
|
||||
|
||||
var invalidCharacterName = service.UpdateCharacter(ownerSession, character.Id, new UpdateCharacterCommand("", campaign.Id));
|
||||
Assert.False(invalidCharacterName.Succeeded);
|
||||
|
||||
var missingTargetCampaign = service.UpdateCharacter(ownerSession, character.Id, new UpdateCharacterCommand("Renamed", Guid.NewGuid()));
|
||||
Assert.False(missingTargetCampaign.Succeeded);
|
||||
|
||||
var noSkillName = service.CreateSkill(ownerSession, character.Id, new CreateSkillCommand("", "1d20"));
|
||||
Assert.False(noSkillName.Succeeded);
|
||||
|
||||
var invalidExpression = service.CreateSkill(ownerSession, character.Id, new CreateSkillCommand("Skill", "5D+4"));
|
||||
Assert.False(invalidExpression.Succeeded);
|
||||
|
||||
var skill = ServiceTestSupport.GetValue(service.CreateSkill(ownerSession, character.Id, new CreateSkillCommand("Skill", "1d20+2")));
|
||||
|
||||
var missingSkillUpdate = service.UpdateSkill(ownerSession, Guid.NewGuid(), new UpdateSkillCommand("X", "1d20"));
|
||||
Assert.False(missingSkillUpdate.Succeeded);
|
||||
|
||||
var forbiddenSkillUpdate = service.UpdateSkill(otherSession, skill.Id, new UpdateSkillCommand("X", "1d20"));
|
||||
Assert.False(forbiddenSkillUpdate.Succeeded);
|
||||
|
||||
var gmSkillUpdate = service.UpdateSkill(gmSession, skill.Id, new UpdateSkillCommand("GM Edit", "2d6+1"));
|
||||
Assert.True(gmSkillUpdate.Succeeded);
|
||||
|
||||
var missingRoll = service.RollSkill(ownerSession, Guid.NewGuid(), new RollSkillCommand("public"));
|
||||
Assert.False(missingRoll.Succeeded);
|
||||
|
||||
var invalidVisibility = service.RollSkill(ownerSession, skill.Id, new RollSkillCommand("hidden"));
|
||||
Assert.False(invalidVisibility.Succeeded);
|
||||
|
||||
var forbiddenRoll = service.RollSkill(otherSession, skill.Id, new RollSkillCommand("public"));
|
||||
Assert.False(forbiddenRoll.Succeeded);
|
||||
|
||||
var privateRoll = service.RollSkill(ownerSession, skill.Id, new RollSkillCommand("private"));
|
||||
var publicRoll = service.RollSkill(ownerSession, skill.Id, new RollSkillCommand("public"));
|
||||
Assert.True(privateRoll.Succeeded);
|
||||
Assert.True(publicRoll.Succeeded);
|
||||
|
||||
var ownerLog = service.GetCampaignLog(ownerSession, campaign.Id);
|
||||
var gmLog = service.GetCampaignLog(gmSession, campaign.Id);
|
||||
var outsiderLog = service.GetCampaignLog(otherSession, campaign.Id);
|
||||
|
||||
Assert.Equal(2, ServiceTestSupport.GetValue(ownerLog).Count);
|
||||
Assert.Equal(2, ServiceTestSupport.GetValue(gmLog).Count);
|
||||
Assert.False(outsiderLog.Succeeded);
|
||||
|
||||
var version = service.GetCampaignVersion(ownerSession, campaign.Id);
|
||||
var missingVersion = service.GetCampaignVersion(ownerSession, Guid.NewGuid());
|
||||
Assert.True(version.Succeeded);
|
||||
Assert.False(missingVersion.Succeeded);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user