public static void Run() { Console.WriteLine($"{Environment.NewLine}*** CHAIN OF RESPONSIBILITY PATTERN ***{Environment.NewLine}"); // Create the links in the chain BikeShop mountainBikes = new MountainBikeShop("Tom's Mountain Bikes"); BikeShop roadBikes = new RoadBikeShop("Dick's road bikes"); BikeShop hybridBikes = new HybridBikeShop("Harry's hybrid bikes"); // set up the chain mountainBikes.Successor = roadBikes; roadBikes.Successor = hybridBikes; List <BikeType> orders = new List <BikeType> { BikeType.Hybrid, BikeType.Mountain, BikeType.Road, BikeType.Hybrid, BikeType.Road, BikeType.Mountain }; // Process the order requests foreach (BikeType order in orders) { mountainBikes.FillOrder(order); } }
public void BikeShop_FillOrder_PassesRequestAlongChain() { // Arrange BikeShop mountainBikes = new MountainBikeShop("Tom's Mountain Bikes"); BikeShop roadBikes = new RoadBikeShop("Dick's road bikes"); Mock <BikeShop> mockShop = new Mock <BikeShop>("Mock Shop"); mountainBikes.Successor = roadBikes; roadBikes.Successor = mockShop.Object; // Act mountainBikes.FillOrder(Common.BikeType.Hybrid); // Assert mockShop.Verify(m => m.FillOrder(It.IsAny <Common.BikeType>()), Times.Once); }