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)); }
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)); }
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)); }
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); }