89 lines
4.6 KiB
C#
89 lines
4.6 KiB
C#
namespace RpgRoller.Tests;
|
|
|
|
public sealed class RolemasterApiTests : ApiTestBase
|
|
{
|
|
public RolemasterApiTests(WebApplicationFactory<Program> factory) : base(factory)
|
|
{
|
|
}
|
|
|
|
[Fact]
|
|
public async Task RolemasterRollEndpoints_ExecuteGenericRolemasterExpressions()
|
|
{
|
|
using var factory = CreateFactory(8, 6, 74);
|
|
using var client = factory.CreateClient(new() { AllowAutoRedirect = false });
|
|
|
|
await RegisterAsync(client, "rolemaster-api", "Password123", "Rolemaster Api");
|
|
await LoginAsync(client, "rolemaster-api", "Password123");
|
|
|
|
var campaign = await PostAsync<CreateCampaignRequest, CampaignSummary>(client, "/api/campaigns", new("Rolemaster", "rolemaster"));
|
|
var character = await PostAsync<CreateCharacterRequest, CharacterSummary>(client, "/api/characters", new("Hero", campaign.Id));
|
|
var initiative = await PostAsync<CreateSkillRequest, SkillSummary>(client, $"/api/characters/{character.Id}/skills", new("Healing", "2d10+48", 0, false));
|
|
var perception = await PostAsync<CreateSkillRequest, SkillSummary>(client, $"/api/characters/{character.Id}/skills", new("Perception", "d100-15", 0, false));
|
|
|
|
var initiativeRoll = await PostAsync<RollSkillRequest, RollResult>(client, $"/api/skills/{initiative.Id}/roll", new("public"));
|
|
var percentileRoll = await PostAsync<RollSkillRequest, RollResult>(client, $"/api/skills/{perception.Id}/roll", new("public"));
|
|
var logPage = await GetAsync<CampaignLogPage>(client, $"/api/campaigns/{campaign.Id}/log/page?limit=10");
|
|
|
|
Assert.Equal(62, initiativeRoll.Result);
|
|
Assert.Equal("8+6+48=62", initiativeRoll.Breakdown);
|
|
Assert.All(initiativeRoll.Dice, die => Assert.Equal(RollDieKinds.RolemasterStandard, die.Kind));
|
|
|
|
Assert.Equal(59, percentileRoll.Result);
|
|
Assert.Equal("74-15=59", percentileRoll.Breakdown);
|
|
Assert.Equal(RollDieKinds.RolemasterStandard, Assert.Single(percentileRoll.Dice).Kind);
|
|
|
|
Assert.Equal(2, logPage.Entries.Length);
|
|
Assert.Equal("8 + 6 | rolemaster", logPage.Entries[0].SummaryText);
|
|
Assert.Equal("74 | rolemaster", logPage.Entries[1].SummaryText);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task RolemasterOpenEndedRolls_AppearInLogPageAndDetail()
|
|
{
|
|
using var factory = CreateFactory(5, 97, 100, 12);
|
|
using var client = factory.CreateClient(new() { AllowAutoRedirect = false });
|
|
|
|
await RegisterAsync(client, "rolemaster-open-api", "Password123", "Rolemaster Open Api");
|
|
await LoginAsync(client, "rolemaster-open-api", "Password123");
|
|
|
|
var campaign = await PostAsync<CreateCampaignRequest, CampaignSummary>(client, "/api/campaigns", new("Rolemaster Open", "rolemaster"));
|
|
var character = await PostAsync<CreateCharacterRequest, CharacterSummary>(client, "/api/characters", new("Hero", campaign.Id));
|
|
var skill = await PostAsync<CreateSkillRequest, SkillSummary>(client, $"/api/characters/{character.Id}/skills", new("Awareness", "d100!+85", 0, false, null, 5));
|
|
|
|
var roll = await PostAsync<RollSkillRequest, RollResult>(client, $"/api/skills/{skill.Id}/roll", new("public"));
|
|
var logPage = await GetAsync<CampaignLogPage>(client, $"/api/campaigns/{campaign.Id}/log/page?limit=5");
|
|
var detail = await GetAsync<CampaignRollDetail>(client, $"/api/rolls/{roll.RollId}");
|
|
|
|
Assert.Equal(-124, roll.Result);
|
|
Assert.Equal("(05) -97 -100 -12 +85 = -124", roll.Breakdown);
|
|
Assert.Equal("(05) -97 -100 -12 | open-ended low", Assert.Single(logPage.Entries).SummaryText);
|
|
Assert.Equal(roll.Breakdown, detail.Breakdown);
|
|
Assert.Collection(
|
|
detail.Dice,
|
|
die =>
|
|
{
|
|
Assert.Equal(RollDieKinds.RolemasterOpenEndedInitial, die.Kind);
|
|
Assert.Equal(1, die.Sequence);
|
|
Assert.Null(die.SignedContribution);
|
|
},
|
|
die =>
|
|
{
|
|
Assert.Equal(RollDieKinds.RolemasterOpenEndedLowSubtract, die.Kind);
|
|
Assert.Equal(2, die.Sequence);
|
|
Assert.Equal(-97, die.SignedContribution);
|
|
},
|
|
die =>
|
|
{
|
|
Assert.Equal(RollDieKinds.RolemasterOpenEndedLowSubtract, die.Kind);
|
|
Assert.Equal(3, die.Sequence);
|
|
Assert.Equal(-100, die.SignedContribution);
|
|
},
|
|
die =>
|
|
{
|
|
Assert.Equal(RollDieKinds.RolemasterOpenEndedLowSubtract, die.Kind);
|
|
Assert.Equal(4, die.Sequence);
|
|
Assert.Equal(-12, die.SignedContribution);
|
|
});
|
|
}
|
|
}
|