Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }