public void WhenGetItemsIsInvokedThenReturnsResultOfFridgeGetItems()
        {
            var expectedItemTypeState = new ItemTypeState {
                Name = "Soda", Type = 10, Capacity = 100, FillFactor = 40
            };

            _smartFridge.Setup(s => s.GetItems(0.5)).Returns(new List <ItemTypeState>()
            {
                expectedItemTypeState
            });
            var itemTypes = _smartFridgeManager.GetItems(0.5).ToList();

            Assert.Single(itemTypes);
            var itemTypeState = itemTypes.First();

            Assert.Equal(expectedItemTypeState, itemTypeState);
        }
        public void GetItemsForShoppingListReturnsCorrectItems_WhenFridgeHasNoAlmostEmptyItems()
        {
            // Arrange
            var    sfm             = new SmartFridgeManager();
            var    item1UUID       = "18976";
            var    itemType        = 123L;
            var    itemName        = "Orange Juice";
            double item1FillFactor = 0.75d;

            sfm.HandleItemAdded(itemType, item1UUID, itemName, item1FillFactor);
            double thresholdFillFactor = 0.5;

            // Act
            var items = sfm.GetItems(thresholdFillFactor);

            // Assert
            Assert.Empty(items);
        }
        public void GetItemsForShoppingListReturnsCorrectItems_WhenAnItemIsForgottenItShouldNotBeReturned()
        {
            // Arrange
            var    sfm             = new SmartFridgeManager();
            var    item1UUID       = "1897";
            var    itemType        = 123L;
            var    itemName        = "Orange Juice";
            double item1FillFactor = 1.0d;

            sfm.HandleItemAdded(itemType, item1UUID, itemName, item1FillFactor);
            double thresholdFillFactor = 0.5;

            // Act
            sfm.ForgetItem(itemType);
            var items = sfm.GetItems(thresholdFillFactor);

            // Assert
            Assert.Empty(items);
        }
        public void GetItems_NegativeThresholdNotAllowed()
        {
            // Arrange
            var    sfm          = new SmartFridgeManager();
            var    item1UUID    = "1897";
            var    ojItemType   = 123L;
            var    itemName     = "Orange Juice";
            double ojFillFactor = 0.25d;

            sfm.HandleItemAdded(ojItemType, item1UUID, itemName, ojFillFactor);
            var    item2UUID       = "2897";
            double item2FillFactor = 1.0d;
            var    otherItemType   = 333L;

            sfm.HandleItemAdded(otherItemType, item2UUID, itemName, item2FillFactor);
            var threshold = -1.0d;

            // Act & Assert
            Assert.Throws <ArgumentOutOfRangeException>(() => sfm.GetItems(threshold));
        }
        public void GetItemsForShoppingListReturnsCorrectItems_WhenFridgeHasOneItemAlmostEmpty()
        {
            // Arrange
            var    sfm             = new SmartFridgeManager();
            var    item1UUID       = "18976";
            var    itemType        = 123L;
            var    itemName        = "Orange Juice";
            double item1FillFactor = 0.25d;

            sfm.HandleItemAdded(itemType, item1UUID, itemName, item1FillFactor);
            double thresholdFillFactor = 0.5;

            object[] expectedResult = new object[] { itemType, item1FillFactor };

            // Act
            var items = sfm.GetItems(thresholdFillFactor);

            // Assert
            Assert.Single(items);
            Assert.Contains(expectedResult, items);
        }