public void BeUpdated_WhenClearingBasketWithItems() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.HasBeenUpdated = false; basketAggregate.Apply(new ClearItemsCommand()); basketAggregate.HasBeenUpdated.Should().BeTrue(); basketAggregate.Items.Should().BeEmpty(); }
public void BeUpdated_WhenUpdatingExistingItem() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.HasBeenUpdated = false; basketAggregate.Apply(_updateItemCommand); basketAggregate.HasBeenUpdated.Should().BeTrue(); basketAggregate.Items.Should().ContainSingle( item => item.Sku == _addItemCommand.Sku && item.Quantity == _updateItemCommand.Quantity); }
public void BeIdempotent_WhenAddingExistingItem() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.HasBeenUpdated = false; basketAggregate.Apply(_addItemCommand); basketAggregate.Items.Should() .ContainSingle(item => item.Quantity == 1); basketAggregate.HasBeenUpdated.Should().BeFalse(); }
public void BeIdempotent_WhenUpdatingToTheSameQuantity() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.Apply(_updateItemCommand); basketAggregate.HasBeenUpdated = false; basketAggregate.Apply(_updateItemCommand); basketAggregate.HasBeenUpdated.Should().BeFalse(); basketAggregate.Items.Should().ContainSingle( item => item.Sku == _addItemCommand.Sku && item.Quantity == _updateItemCommand.Quantity); }
public void ThrowException_WhenUpdatingNonExistingItem() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.HasBeenUpdated = false; Action action = () => basketAggregate.Apply(new UpdateItemCommand { Sku = "54321", Quantity = 2 }); action.Should().Throw <BasketDoesNotContainProductException>(); }
public void BeUpdated_WhenRemovingAnExistingItem() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.HasBeenUpdated = false; basketAggregate.Apply(new RemoveItemCommand { Sku = _addItemCommand.Sku }); basketAggregate.HasBeenUpdated.Should().BeTrue(); basketAggregate.Items.Should().NotContain(item => item.Sku == _addItemCommand.Sku); }
public async Task DispatchUpdateItemCommandToAggregate() { _basketAggregate.Apply(new AddItemCommand { Sku = "sku", Description = "desc" }); var result = await _controller.UpdateItem(Id, new UpdateItemCommand() { Sku = "sku", Quantity = 3 }, CancellationToken.None); result.Should().BeOfType <OkResult>(); _repositoryMock.Verify(r => r.Save(It.Is <BasketAggregate>(a => a.Id == Id && a.Items.FirstOrDefault().Quantity == 3), It.IsAny <CancellationToken>())); }
public void BeIdempotent_WhenClearingEmptyBasket() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(new ClearItemsCommand()); basketAggregate.HasBeenUpdated.Should().BeFalse(); basketAggregate.Items.Should().BeEmpty(); }
public void BeUpdated_WhenAddingNewItem() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(_addItemCommand); basketAggregate.HasBeenUpdated.Should().BeTrue(); basketAggregate.Items.Should() .ContainSingle(item => item.Quantity == 1) .And.AllBeEquivalentTo(_addItemCommand); }
public void BeIdempotent_WhenRemovingNonExistingProduct() { var basketAggregate = new BasketAggregate(AggregateId); basketAggregate.Apply(new RemoveItemCommand { Sku = _addItemCommand.Sku }); basketAggregate.HasBeenUpdated.Should().BeFalse(); basketAggregate.Items.Should().NotContain(item => item.Sku == _addItemCommand.Sku); }