refactor(story): route FinishAsync rewards through InventoryService
Replace RewardGrantService with IInventoryService tx. Per-reward GrantAsync calls inside try/catch preserve the NotSupportedException skip; CommitAsync returns result.RewardList (post-state totals) and accumulated delta list feeds story_reward_list. Update StoryServiceTests to inject IInventoryService. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ using SVSim.Database.Entities.Story;
|
||||
using SVSim.Database.Models;
|
||||
using SVSim.Database.Repositories.Story;
|
||||
using SVSim.Database.Services;
|
||||
using SVSim.Database.Services.Inventory;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
using SVSim.EmulatedEntrypoint.Services;
|
||||
using SVSim.UnitTests.Infrastructure;
|
||||
@@ -26,12 +27,12 @@ public class StoryServiceTests
|
||||
{
|
||||
_master = new Mock<IStoryMasterRepository>();
|
||||
_viewer = new Mock<IViewerStoryProgressRepository>();
|
||||
// Non-reward tests never exercise the DB/reward path; use a stub InMemory context.
|
||||
// Non-reward tests never exercise the DB/reward path; use a stub InMemory context + null inv.
|
||||
var db = StoryServiceTestHelpers.NewInMemoryDb(nameof(SetUp));
|
||||
var rewards = new RewardGrantService(db, NullLogger<RewardGrantService>.Instance);
|
||||
var inv = new Mock<IInventoryService>().Object;
|
||||
_service = new StoryService(
|
||||
_master.Object, _viewer.Object,
|
||||
rewards: rewards,
|
||||
inv: inv,
|
||||
db: db,
|
||||
configService: StoryServiceTestHelpers.NewConfigService(),
|
||||
deckRepository: new Mock<SVSim.Database.Repositories.Deck.IDeckRepository>().Object,
|
||||
@@ -64,12 +65,12 @@ public class StoryServiceTests
|
||||
|
||||
scope = factory.Services.CreateScope();
|
||||
var db = scope.ServiceProvider.GetRequiredService<SVSimDbContext>();
|
||||
var rewards = scope.ServiceProvider.GetRequiredService<RewardGrantService>();
|
||||
var inv = scope.ServiceProvider.GetRequiredService<IInventoryService>();
|
||||
|
||||
return new StoryService(
|
||||
_master.Object,
|
||||
_viewer.Object,
|
||||
rewards: rewards,
|
||||
inv: inv,
|
||||
db: db,
|
||||
configService: StoryServiceTestHelpers.NewConfigService(),
|
||||
deckRepository: new Mock<SVSim.Database.Repositories.Deck.IDeckRepository>().Object,
|
||||
@@ -402,7 +403,7 @@ public class StoryServiceTests
|
||||
db.SaveChanges();
|
||||
return new StoryService(
|
||||
_master.Object, _viewer.Object,
|
||||
rewards: new RewardGrantService(db, NullLogger<RewardGrantService>.Instance),
|
||||
inv: new Mock<IInventoryService>().Object,
|
||||
db: db,
|
||||
configService: StoryServiceTestHelpers.NewConfigService(),
|
||||
deckRepository: new Mock<SVSim.Database.Repositories.Deck.IDeckRepository>().Object,
|
||||
|
||||
Reference in New Issue
Block a user