public void CreateOrder_DefaultsToOneForEachesItems()
        {
            IGroceryItemOrderFactory orderFactory = new AggregateGroceryItemOrderFactory(
                new EachesGroceryItemOrderFactory(),
                new WeighedGroceryItemOrderFactory()
                );

            string itemName = "soup";

            GroceryItemScanner scanner = new GroceryItemScanner(orderFactory);

            scanner.Items.Add(new EachesGroceryItem(itemName, 1.89M));

            EachesGroceryItemOrder soupOrder = (EachesGroceryItemOrder)scanner.CreateOrder(itemName);

            Assert.AreEqual(1, soupOrder.Count);
        }
        public void CreateOrder_ThrowsException_WhenUnknownItemType()
        {
            IGroceryItemOrderFactory orderFactory = new AggregateGroceryItemOrderFactory(
                new EachesGroceryItemOrderFactory(),
                new WeighedGroceryItemOrderFactory()
                );

            string itemName = "soup";

            Mock <IGroceryItem> groceryItemMock = new Mock <IGroceryItem>();

            groceryItemMock.Setup((item) => item.Name).Returns(itemName);
            GroceryItemScanner scanner = new GroceryItemScanner(orderFactory);

            scanner.Items.Add(groceryItemMock.Object);

            Assert.ThrowsException <InvalidGroceryItemTypeException>(() => scanner.CreateOrder(itemName));
        }
Ejemplo n.º 3
0
        public void CreateOrder_ThrowsException_WhenAllFactoriesThrowException()
        {
            Mock <IGroceryItemOrderFactory> firstFactory = new Mock <IGroceryItemOrderFactory>();

            firstFactory.Setup(f => f.CreateOrder(It.IsAny <IGroceryItem>()))
            .Throws <InvalidGroceryItemTypeException>();

            Mock <IGroceryItemOrderFactory> secondFactory = new Mock <IGroceryItemOrderFactory>();

            secondFactory.Setup(f => f.CreateOrder(It.IsAny <IGroceryItem>()))
            .Throws <InvalidGroceryItemTypeException>();

            AggregateGroceryItemOrderFactory factory =
                new AggregateGroceryItemOrderFactory(firstFactory.Object,
                                                     secondFactory.Object);

            Assert.ThrowsException <InvalidGroceryItemTypeException>(
                () => factory.CreateOrder(null));
        }
Ejemplo n.º 4
0
        public void CreateOrder_UsesSecondFactory_WhenFirstFactoryThrowsException()
        {
            IGroceryItemOrder expectedOrder = new Mock <IGroceryItemOrder>().Object;

            Mock <IGroceryItemOrderFactory> firstFactory = new Mock <IGroceryItemOrderFactory>();

            firstFactory.Setup(f => f.CreateOrder(It.IsAny <IGroceryItem>()))
            .Throws <InvalidGroceryItemTypeException>();

            Mock <IGroceryItemOrderFactory> secondFactory = new Mock <IGroceryItemOrderFactory>();

            secondFactory.Setup(f => f.CreateOrder(It.IsAny <IGroceryItem>()))
            .Returns(expectedOrder);

            AggregateGroceryItemOrderFactory factory =
                new AggregateGroceryItemOrderFactory(firstFactory.Object,
                                                     secondFactory.Object);

            Assert.AreEqual(expectedOrder, factory.CreateOrder(null));
        }
Ejemplo n.º 5
0
        public void CreateOrder_UsesFirstFactory_WhenFirstFactoryReturnsResult()
        {
            IGroceryItemOrder expectedOrder   = new Mock <IGroceryItemOrder>().Object;
            IGroceryItemOrder unexpectedOrder = new Mock <IGroceryItemOrder>().Object;

            Mock <IGroceryItemOrderFactory> firstFactory = new Mock <IGroceryItemOrderFactory>();

            firstFactory.Setup(f => f.CreateOrder(It.IsAny <IGroceryItem>()))
            .Returns(expectedOrder);

            Mock <IGroceryItemOrderFactory> secondFactory = new Mock <IGroceryItemOrderFactory>();

            secondFactory.Setup(f => f.CreateOrder(It.IsAny <IGroceryItem>()))
            .Returns(unexpectedOrder);

            AggregateGroceryItemOrderFactory factory =
                new AggregateGroceryItemOrderFactory(firstFactory.Object,
                                                     secondFactory.Object);

            Assert.AreEqual(expectedOrder, factory.CreateOrder(null));
            Assert.AreNotEqual(unexpectedOrder, factory.CreateOrder(null));
        }
        public void CreateOrder_GetsWeightFromWeightSelector()
        {
            decimal expectedWeight = 1.56M;

            string             itemName = "bananas";
            WeighedGroceryItem bananas  = new WeighedGroceryItem(itemName, 2.38M);

            Mock <IWeightSelector> weightSelectorMock = new Mock <IWeightSelector>();

            weightSelectorMock.Setup((ws) => ws.SelectWeight(bananas)).Returns(expectedWeight);

            IGroceryItemOrderFactory orderFactory = new AggregateGroceryItemOrderFactory(
                new EachesGroceryItemOrderFactory(),
                new WeighedGroceryItemOrderFactory(weightSelectorMock.Object)
                );

            GroceryItemScanner scanner = new GroceryItemScanner(orderFactory);

            scanner.Items.Add(bananas);

            WeighedGroceryItemOrder bananaOrder = (WeighedGroceryItemOrder)scanner.CreateOrder(itemName);

            Assert.AreEqual(expectedWeight, bananaOrder.Weight);
        }