feat(battle-xp): wire colosseum /finish through IBattleXpService, extend response DTO
- ColosseumBattleFinishResponseDto gains get_class_experience, class_experience, class_level. Client-safe: same BattleFinishResponsProcessing handles all three keys as ints (decomp verified). - ArenaColosseumBattleController.FinishInternal grants win/loss XP via IBattleXpService with BattleXpMode.Colosseum for both /colosseum_battle/finish and /colosseum_rank_battle/finish URLs. - Existing win test extended: XP wire assertions + persistence check. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -118,6 +118,12 @@ public class ArenaColosseumBattleControllerTests
|
||||
var resp = await client.PostAsync("/colosseum_battle/finish", JsonContent.Create(req));
|
||||
Assert.That(resp.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||
|
||||
// XP wire assertions
|
||||
using var doc = JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
|
||||
Assert.That(doc.RootElement.GetProperty("get_class_experience").GetInt32(), Is.EqualTo(100));
|
||||
Assert.That(doc.RootElement.GetProperty("class_experience").GetInt32(), Is.EqualTo(50));
|
||||
Assert.That(doc.RootElement.GetProperty("class_level").GetInt32(), Is.EqualTo(2));
|
||||
|
||||
using var scope = factory.Services.CreateScope();
|
||||
var db = scope.ServiceProvider.GetRequiredService<SVSimDbContext>();
|
||||
var run = await db.ViewerArenaColosseumRuns.FirstAsync(r => r.ViewerId == vid);
|
||||
@@ -125,6 +131,13 @@ public class ArenaColosseumBattleControllerTests
|
||||
Assert.That(run.LossCount, Is.EqualTo(0));
|
||||
Assert.That(run.BattleCountThisRound, Is.EqualTo(1));
|
||||
Assert.That(run.ResultListJson, Is.EqualTo("[1]"));
|
||||
|
||||
// Persisted class XP on viewer
|
||||
var v = await db.Viewers.Include(x => x.Classes).ThenInclude(c => c.Class)
|
||||
.FirstAsync(x => x.Id == vid);
|
||||
var cls1 = v.Classes.Single(c => c.Class.Id == 1);
|
||||
Assert.That(cls1.Level, Is.EqualTo(2));
|
||||
Assert.That(cls1.Exp, Is.EqualTo(50));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
Reference in New Issue
Block a user