0.3.0: UGC removed, battlepass context-carrying API, scenario behavior aligned with web SDK, CI publish
This commit is contained in:
@@ -265,7 +265,7 @@ public sealed class ScenarioServiceTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Quest_Progress_Response_Can_Start_Continuation_Plan()
|
||||
public async Task Quest_Progress_Completed_Response_Completes_The_Node()
|
||||
{
|
||||
var transport = new FakeTransport();
|
||||
transport.Enqueue(new TriggerScenarioResponse
|
||||
@@ -275,16 +275,12 @@ public sealed class ScenarioServiceTests
|
||||
Plan("plan", Node("quest", "quest"))
|
||||
}
|
||||
});
|
||||
transport.Enqueue(new UpdateScenarioCounterResponse
|
||||
{
|
||||
Completed = true,
|
||||
Plan = Plan("continuation", Node("done", "notification"))
|
||||
});
|
||||
transport.Enqueue(new UpdateScenarioCounterResponse { Completed = true });
|
||||
var client = CreateClient(transport);
|
||||
QuestSession? quest = null;
|
||||
var notifications = 0;
|
||||
var completed = 0;
|
||||
client.Scenario.OnQuest += session => quest = session;
|
||||
client.Scenario.OnNotification += _ => notifications++;
|
||||
client.Scenario.OnScenarioCompleted += _ => completed++;
|
||||
|
||||
await client.Scenario.TriggerAsync("login");
|
||||
await quest!.AddProgressAsync("wins", 1);
|
||||
@@ -293,11 +289,40 @@ public sealed class ScenarioServiceTests
|
||||
transport.Calls.Single(call => call.Path == "/sdk/v1/scenarios/counter").Request);
|
||||
Assert.Equal("quest", counter.NodeId);
|
||||
Assert.Equal("wins", counter.CounterKey);
|
||||
Assert.Equal(1, notifications);
|
||||
Assert.Equal(1, completed);
|
||||
Assert.Empty(client.Scenario.ActiveRuns);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Unknown_Nodes_Are_Logged_And_Ignored()
|
||||
public async Task Quest_Progress_Failure_Does_Not_Fail_The_Run()
|
||||
{
|
||||
var transport = new FakeTransport();
|
||||
transport.Enqueue(new TriggerScenarioResponse
|
||||
{
|
||||
Plans = new List<ExecutionPlan>
|
||||
{
|
||||
Plan("plan", Node("quest", "quest"))
|
||||
}
|
||||
});
|
||||
transport.Enqueue(new InvalidOperationException("boom"));
|
||||
var logger = new FakeLogger();
|
||||
var client = CreateClient(transport, logger: logger);
|
||||
QuestSession? quest = null;
|
||||
var failed = 0;
|
||||
client.Scenario.OnQuest += session => quest = session;
|
||||
client.Scenario.OnScenarioFailed += _ => failed++;
|
||||
|
||||
await client.Scenario.TriggerAsync("login");
|
||||
await quest!.AddProgressAsync("wins", 1);
|
||||
|
||||
Assert.Equal(0, failed);
|
||||
Assert.Single(client.Scenario.ActiveRuns);
|
||||
Assert.Contains(logger.Messages, m =>
|
||||
m.Level == RudderLogLevel.Warning && m.Message.Contains("counter update failed"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Unknown_Nodes_Fail_The_Run()
|
||||
{
|
||||
var transport = new FakeTransport();
|
||||
transport.Enqueue(new TriggerScenarioResponse
|
||||
@@ -309,12 +334,16 @@ public sealed class ScenarioServiceTests
|
||||
});
|
||||
var logger = new FakeLogger();
|
||||
var client = CreateClient(transport, logger: logger);
|
||||
ScenarioFailedEvent? failure = null;
|
||||
client.Scenario.OnScenarioFailed += e => failure = e;
|
||||
|
||||
await client.Scenario.TriggerAsync("login");
|
||||
|
||||
var (level, message) = Assert.Single(logger.Messages);
|
||||
Assert.Equal(RudderLogLevel.Warning, level);
|
||||
Assert.Contains("Unsupported scenario node type 'future_node'", message);
|
||||
Assert.NotNull(failure);
|
||||
Assert.Equal("future", failure!.NodeId);
|
||||
Assert.Empty(client.Scenario.ActiveRuns);
|
||||
Assert.Contains(logger.Messages, m =>
|
||||
m.Level == RudderLogLevel.Warning && m.Message.Contains("Unsupported scenario node type 'future_node'"));
|
||||
}
|
||||
|
||||
private static RudderClient CreateClient(
|
||||
|
||||
Reference in New Issue
Block a user