When_a_list_of_shopping_items_are_passed_in_with_a_non_existant_item__Then_they_are_converted_to_checkout_items_and_an_error_raised(
            int amountOfNonExistantItems)
        {
            // Arrange
            var testSetWithNonExistantItem = _basicTestSetAsStringArray;

            for (var i = 0; i < amountOfNonExistantItems; i++)
            {
                testSetWithNonExistantItem = testSetWithNonExistantItem.Add(_nonExistantItem + " - " + i);
            }

            var mockDb = new Mock <IDatabase>();

            mockDb.Setup(o => o.CheckoutItems).Returns(_dbItems);

            var mockDateRepo = new Mock <IDateRepository>();

            mockDateRepo.Setup(o => o.UtcNow()).Returns(_nowTimestamp);

            var sut = new TillRepository(mockDb.Object, mockDateRepo.Object);

            // Act
            var result = sut.ProcessCheckoutItems(testSetWithNonExistantItem);

            // Assert
            Assert.Equal(_basicTestSetAsCheckoutItems, result.CheckoutItems);
            Assert.Equal(result.Errors.Count, actual: amountOfNonExistantItems);

            for (var i = 0; i < result.Errors.Count(); i++)
            {
                var errorMessage = result.Errors.First(o => o.Value == _nonExistantItem + " - " + i);
                Assert.Equal("Item not found in DB", errorMessage.Key);
                Assert.Equal(_nonExistantItem + " - " + i, errorMessage.Value);
            }
        }
Example #2
0
        public void When_a_basket_is_submitted__Then_the_total_is_correct_when_single_offer_applied()
        {
            // Arrange
            var mockDb = new Mock <IDatabase>();

            mockDb.Setup(o => o.CheckoutItems).Returns(_dbItems);

            var mockDateRepo = new Mock <IDateRepository>();

            mockDateRepo.Setup(o => o.UtcNow()).Returns(_nowTimestamp);

            var sut = new TillRepository(mockDb.Object, mockDateRepo.Object);

            // Act
            var result = sut.ProcessCheckoutItems(_basicTestSetAsStringArray);

            // Assert
            Assert.Equal(_basicTestSetBasketValueBeforeOffers, result.Total);
        }
        When_a_list_of_shopping_items_that_are_all_good_are_passed_in__Then_they_are_converted_to_checkout_items()
        {
            // Arrange
            var mockDb = new Mock <IDatabase>();

            mockDb.Setup(o => o.CheckoutItems).Returns(_dbItems);

            var mockDateRepo = new Mock <IDateRepository>();

            mockDateRepo.Setup(o => o.UtcNow()).Returns(_nowTimestamp);

            var sut = new TillRepository(mockDb.Object, mockDateRepo.Object);

            // Act
            var result = sut.ProcessCheckoutItems(_basicTestSetAsStringArray);

            // Assert
            Assert.Equal(_basicTestSetAsCheckoutItems, result.CheckoutItems);
        }
        public void When_an_empty_list_of_shopping_items_are_passed_in__Then_the_converted_list_is_empty()
        {
            // Arrange
            var mockDb = new Mock <IDatabase>();

            mockDb.Setup(o => o.CheckoutItems).Returns(_dbItems);

            var mockDateRepo = new Mock <IDateRepository>();

            mockDateRepo.Setup(o => o.UtcNow()).Returns(_nowTimestamp);

            var sut = new TillRepository(mockDb.Object, mockDateRepo.Object);

            // Act
            var result = sut.ProcessCheckoutItems(_emptyArray);

            // Assert
            Assert.Equal(result.CheckoutItems.Count, actual: 0);
            Assert.Equal(result.Errors.Count, actual: 0);
        }