public async Task UpdateInventorySuccess() { using var mocker = AutoMock.GetStrict(); const int sourceInventory = 666; const int diff = -66; var stateData = new SkuState { Inventory = sourceInventory }; mocker.Mock <IClaptrapGrainCommonService>() .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data) .Returns(stateData); mocker.MockerEventCode <InventoryUpdateEvent>(ClaptrapCodes.SkuInventoryUpdate); mocker.Mock <IClaptrapGrainCommonService>() .Setup(x => x.ClaptrapAccessor.Claptrap.HandleEventAsync(It.IsAny <IEvent>())) .Callback <IEvent>(evt => { stateData.Inventory += diff; }) .Returns <IEvent>(evt => Task.CompletedTask); var handler = mocker.Create <SkuGrain>(); var inventory = await handler.UpdateInventoryAsync(diff); inventory.Should().Be(sourceInventory + diff); }
public async Task <IStateData> Create(IClaptrapIdentity identity) { var skuId = identity.Id; var inventory = await _skuRepository.GetInitInventoryAsync(skuId); var re = new SkuState { Inventory = inventory }; return(re); }
public async Task GetItemsAsync() { using var mocker = AutoMock.GetStrict(); var stateData = new SkuState { Inventory = 666 }; mocker.Mock <IClaptrapGrainCommonService>() .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data) .Returns(stateData); var handler = mocker.Create <SkuGrain>(); var items = await handler.GetInventoryAsync(); items.Should().Be(stateData.Inventory); }
public Task UpdateInventoryFailed_Diff0() { using var mocker = AutoMock.GetStrict(); const int sourceInventory = 666; const int diff = 0; var stateData = new SkuState { Inventory = sourceInventory }; mocker.Mock <IClaptrapGrainCommonService>() .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data) .Returns(stateData); var handler = mocker.Create <SkuGrain>(); Assert.ThrowsAsync <BizException>(() => handler.UpdateInventoryAsync(diff)); return(Task.CompletedTask); }
public async Task RemoveSuccess() { using var mocker = AutoMock.GetStrict(); await using var handler = mocker.Create <InventoryUpdateEventHandler>(); var stateData = new SkuState { Inventory = 789 }; var inventoryUpdateEvent = new InventoryUpdateEvent { NewInventory = 666, Diff = -66 }; await handler.HandleEvent(stateData, inventoryUpdateEvent, default); stateData.Inventory.Should().Be(inventoryUpdateEvent.NewInventory); }
public Task UpdateInventoryFailed() { using var mocker = AutoMock.GetStrict(); const int sourceInventory = 666; const int diff = -667; var stateData = new SkuState { Inventory = sourceInventory }; mocker.Mock <IClaptrapGrainCommonService>() .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data) .Returns(stateData); mocker.Mock <IClaptrapGrainCommonService>() .Setup(x => x.ClaptrapAccessor.Claptrap.HandleEventAsync(It.IsAny <IEvent>())) .Callback <IEvent>(evt => { stateData.Inventory += diff; }) .Returns <IEvent>(evt => Task.CompletedTask); var handler = mocker.Create <SkuGrain>(); Assert.ThrowsAsync <BizException>(() => handler.UpdateInventoryAsync(diff)); return(Task.CompletedTask); }