Example #1
0
        public void Constructor_WithNegativeQuantity_ShouldThrowContractException()
        {
            // Arrange
            Func <BasketItem> createBasketItem = () => new BasketItem(1, -1, Pounds.Of(1));

            // Assert
            Assert.Throws <ContractException>(createBasketItem);
        }
Example #2
0
        public void Constructor_WithPriceZero_ShouldThrowContractException()
        {
            // Arrange
            Func <BasketItem> createBasketItem = () => new BasketItem(1, 1, Pounds.Of(0));

            // Assert
            Assert.Throws <ContractException>(createBasketItem);
        }
Example #3
0
        public void ChangeQuantity_WithNegativeQuantity_ShouldThrowContractException()
        {
            // Arrange
            var    basketItem     = new BasketItem(1, 2, Pounds.Of(3));
            Action changeQuantity = () => basketItem.ChangeQuantity(-1);

            // Assert
            Assert.Throws <ContractException>(changeQuantity);
        }
Example #4
0
        public void Constructor_WithValidArguments_ShouldInitializeFields()
        {
            // Arrange
            var basketItem = new BasketItem(1, 2, Pounds.Of(3));

            // Assert
            Assert.Equal(1, basketItem.ProductId);
            Assert.Equal(2, basketItem.Quantity);
            Assert.Equal(Pounds.Of(3), basketItem.PriceInPounds);
        }
        public void AddItemToBasketAsync_WithNonExistentBasket_ShouldReturnFailure()
        {
            // Arrange
            _basketRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny<int>())).Returns(Task.FromResult<Basket>(null));

            // Act
            var result = _basketService.AddItemToBasketAsync(1, 1, 1, Pounds.Of(1)).Result;

            // Assert
            Assert.True(result.IsFailure);
        }
Example #6
0
        public void ChangeQuantity_WithValidQuantity_ShouldChangeQuantity()
        {
            // Arrange
            var basketItem = new BasketItem(1, 2, Pounds.Of(3));

            // Act
            basketItem.ChangeQuantity(4);

            // Assert
            Assert.Equal(4, basketItem.Quantity);
        }
Example #7
0
        public void OperatorConvertToDecimal_ShouldConvertPoundsToDecimal()
        {
            // Arrange
            var pounds = Pounds.Of(5);

            // Act
            decimal value = pounds;

            // Assert
            Assert.Equal(5, value);
        }
Example #8
0
        public void OperatorMultiplication_ShouldMultiplyAmounts()
        {
            // Arrange
            var pounds = Pounds.Of(2);

            // Act
            var result = pounds * 5;

            // Assert
            Assert.Equal(Pounds.Of(10), result);
        }
Example #9
0
        public void AddItem_WithNonExistentBasketItem_ShouldReturnNewlyCreatedItem()
        {
            // Arrange
            var basket = new Basket();

            // Act
            var item = basket.AddItem(1, 1, Pounds.Of(1));

            // Assert
            Assert.NotNull(item);
        }
Example #10
0
        public void AddItem_WithNonExistentBasketItem_ShouldAddItemToList()
        {
            // Arrange
            var basket = new Basket();

            // Act
            basket.AddItem(1, 1, Pounds.Of(1));

            // Assert
            Assert.Equal(1, basket.Items.Count);
        }
Example #11
0
        public void OperatorAdd_ShouldAddAmounts()
        {
            // Arrange
            var pounds1 = Pounds.Of(2);
            var pounds2 = Pounds.Of(3);

            // Act
            var result = pounds1 + pounds2;

            // Assert
            Assert.Equal(Pounds.Of(5), result);
        }
        public void AddItemToBasketAsync_WithExistentBasket_ShouldReturnSuccess()
        {
            // Arrange
            var basket = new Basket();
            _basketRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny<int>())).Returns(Task.FromResult(basket));

            // Act
            var result = _basketService.AddItemToBasketAsync(1, 1, 1, Pounds.Of(1)).Result;

            // Assert
            Assert.True(result.IsSuccess);
        }
        public void AddItemToBasketAsync_WithExistentBasket_ShouldCallUpdateInRepository()
        {
            // Arrange
            var basket = new Basket();
            _basketRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny<int>())).Returns(Task.FromResult(basket));
            _basketRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny<Basket>())).Returns(Task.CompletedTask);

            // Act
            var result = _basketService.AddItemToBasketAsync(1, 1, 1, Pounds.Of(1)).Result;

            // Assert
            _basketRepositoryMock.Verify(x => x.UpdateAsync(basket), Times.Once);
        }
        public void ChangeItemQuantityAsync_WithExistentBasketItem_ShouldCallUpdateInRepository()
        {
            // Arrange
            var basket = new Basket();
            basket.AddItem(1, 1, Pounds.Of(1));
            var basketItem = basket.Items.First();
            basketItem.Id = 1;
            _basketRepositoryMock.Setup(x => x.GetByUserIdAsync(It.IsAny<string>())).Returns(Task.FromResult(basket));

            // Act
            var result = _basketService.ChangeItemQuantityAsync("user", 1, 2).Result;

            // Asert
            _basketRepositoryMock.Verify(x => x.UpdateAsync(basket), Times.Once);
        }
Example #15
0
        public void AddItem_WithExistentBasketItem_ShouldUpdateBasketItemQuantity()
        {
            // Arrange
            var basket = new Basket();

            basket.AddItem(1, 1, Pounds.Of(1));

            // Act
            basket.AddItem(1, 1, Pounds.Of(1));

            // Assert
            var item = basket.Items.First();

            Assert.Equal(2, item.Quantity);
        }
        public void ChangeItemQuantityAsync_WithExistentBasketItem_ShouldReturnSuccess()
        {
            // Arrange
            var basket = new Basket();
            basket.AddItem(1, 1, Pounds.Of(1));
            var basketItem = basket.Items.First();
            basketItem.Id = 1;
            _basketRepositoryMock.Setup(x => x.GetByUserIdAsync(It.IsAny<string>())).Returns(Task.FromResult(basket));

            // Act
            var result = _basketService.ChangeItemQuantityAsync("user", 1, 2).Result;

            // Asert
            Assert.True(result.IsSuccess);
        }
Example #17
0
        public void RemoveItem_WithExistentBasketItem_ShouldReturnSucces()
        {
            // Arrange
            var basket = new Basket();

            basket.AddItem(1, 1, Pounds.Of(1));
            var basketItem = basket.Items.First();

            basketItem.Id = 1;

            // Act
            var result = basket.RemoveItem(1);

            // Assert
            Assert.True(result.IsSuccess);
        }
Example #18
0
        public void RemoveItem_WithExistentBasketItem_ShouldReturnRemoveItem()
        {
            // Arrange
            var basket = new Basket();

            basket.AddItem(1, 1, Pounds.Of(1));
            var basketItem = basket.Items.First();

            basketItem.Id = 1;

            // Act
            basket.RemoveItem(1);

            // Assert
            Assert.Equal(0, basket.Items.Count);
        }
Example #19
0
        public void Clear_ShouldClearBasketItemsList()
        {
            // Arrange
            var basket = new Basket();

            basket.AddItem(1, 1, Pounds.Of(1));
            var basketItem = basket.Items.First();

            basketItem.Id = 1;

            // Act
            basket.Clear();

            // Assert
            Assert.Equal(0, basket.Items.Count);
        }