public async Task Given_PlaceOrderCommandWithDiscountCode_When_HandleAsync_Then_DiscountedOrderIsCreatedAndAddedToRepository() { //Arrange var discountCodeGenerator = new DiscountCodeGenerator(); var sampleDiscount = discountCodeGenerator.GenerateCodeForSubscriber(_identityProviderMock.Object.Next(), Guid.NewGuid()); var command = new PlaceOrder { Id = Guid.NewGuid(), Value = 100, DiscountCode = sampleDiscount.GetCode() }; Order placedOrder = null; _discountRepositoryMock.Setup(x => x.FindByCode(It.Is <string>(discountCode => discountCode == sampleDiscount.GetCode()), It.IsAny <CancellationToken>())) .ReturnsAsync(sampleDiscount); _orderRepositoryMock.Setup(x => x.Add(It.IsAny <Order>(), It.IsAny <CancellationToken>())) .Callback <Order, CancellationToken>((order, cancellationToken) => { placedOrder = order; }); //Act await _sut.HandleAsync(command, CancellationToken.None); //Assert Assert.That(placedOrder.Summary.Value, Is.EqualTo(command.Value)); Assert.That(placedOrder.Summary.DiscountValue, Is.EqualTo(CalculateDiscount(command.Value, sampleDiscount))); Assert.That(placedOrder.Summary.TotalValue, Is.EqualTo(command.Value - CalculateDiscount(command.Value, sampleDiscount))); }
public void When_Make_Then_ReturnsNotEmptyCode() { //Arrange var codeGenerator = new DiscountCodeGenerator(); //Act var discount = codeGenerator.GenerateCodeForSubscriber(Guid.NewGuid(), Guid.NewGuid()); //Assert Assert.That(string.IsNullOrWhiteSpace(discount.Code), Is.False); }
public void When_Make_Then_ReturnsUniqueDiscountCode() { //Arrange var codeGenerator = new DiscountCodeGenerator(); //Act var discount1 = codeGenerator.GenerateCodeForSubscriber(Guid.NewGuid(), Guid.NewGuid()); var discount2 = codeGenerator.GenerateCodeForSubscriber(Guid.NewGuid(), Guid.NewGuid()); //Assert Assert.That(discount1.Code, Is.Not.EquivalentTo(discount2.Code)); }