public void GetServiceByShipper_ResultNotExistsInCahce_FetchesTheResultFromDatabase() { // arrange Shipper ups = new Shipper() { ID = 10, Name = "UPS" }; Mock <IShipperRepository> mockShipperRepo = new Mock <IShipperRepository>(); mockShipperRepo.Setup(r => r.GetShipper(It.Is <string>(s => s.Equals("UPS")))).Returns(ups); List <DeliveryService> expected = new List <DeliveryService>(); expected.Add(new DeliveryService() { ID = 1, ServiceName = "Regular", ShipperID = 10 }); expected.Add(new DeliveryService() { ID = 2, ServiceName = "Express", ShipperID = 10 }); Mock <IDeliveryServiceRepository> mockServiceRepo = new Mock <IDeliveryServiceRepository>(); mockServiceRepo.Setup(r => r.GetServicesByShipper(It.Is <int>(i => i == 10))).Returns(expected); Mock <ObjectCache> mockCache = new Mock <ObjectCache>(); ShippingService sut = new ShippingService(mockShipperRepo.Object, null, mockServiceRepo.Object, mockCache.Object); // act var actual = sut.GetServicesByShipper("UPS"); // assert Assert.IsTrue(Equality.AreEqual(expected, actual)); mockShipperRepo.Verify(r => r.GetShipper(It.Is <string>(s => s.Equals("UPS"))), Times.Once()); mockServiceRepo.Verify(r => r.GetServicesByShipper(It.Is <int>(i => i == 10)), Times.Once()); mockCache.Verify( c => c.Set( It.Is <string>(s => s.Equals("servicesByUPS")), It.Is <IEnumerable <DeliveryService> >(l => l.Count() == 2), It.IsAny <CacheItemPolicy>(), null), Times.Once()); }
public void GetServicesByShipper_ResultExistsInCache_ReturnsTheResult() { List <DeliveryService> expected = new List <DeliveryService>(); expected.Add(new DeliveryService() { ID = 1, ServiceName = "Regular" }); expected.Add(new DeliveryService() { ID = 2, ServiceName = "Express" }); Mock <ObjectCache> mockCache = new Mock <ObjectCache>(); mockCache.Setup(c => c["servicesByUPS"]).Returns(expected); ShippingService sut = new ShippingService(null, null, null, mockCache.Object); // act var actual = sut.GetServicesByShipper("UPS"); // assert Assert.IsTrue(Equality.AreEqual(expected, actual)); mockCache.Verify(c => c["servicesByUPS"], Times.Once()); }