public void Delete_Handles_Item_Not_Found() { // Arrange var mockLogger = new Mock<ILog>(); var mockMessageCache = new Mock<IInventoryTakeMessageCache>(); var mockMessageQueue = new Mock<IMessageQueueService>(); var mockNotificationService = new Mock<INotificationService>(); var mockRepository = new Mock<IInventoryRepository>(); var settings = new ApplicationSettings(false); var item = new InventoryItem { Label = "test", Expires = DateTime.Now.AddDays(30) }; InventoryItem output = null; mockRepository.Setup(r => r.Remove(item)).Returns(output); var controller = GetAccountControllerWithContext(mockLogger, mockMessageCache, mockMessageQueue, mockNotificationService, mockRepository, settings); // Act HttpResponseMessage response = null; Assert.DoesNotThrow(() => response = controller.Delete(item)); // Assert Assert.NotNull(response); Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); mockMessageQueue.Verify(n => n.QueueInventoryItem(item), Times.Never); }
public void Delete_Handles_DataSource_Failure_Gracefully() { // Arrange var mockLogger = new Mock<ILog>(); var mockMessageCache = new Mock<IInventoryTakeMessageCache>(); var mockMessageQueue = new Mock<IMessageQueueService>(); var mockNotificationService = new Mock<INotificationService>(); var mockRepository = new Mock<IInventoryRepository>(); var settings = new ApplicationSettings(false); var item = new InventoryItem { Label = "test", Expires = DateTime.Now.AddDays(30) }; mockRepository.Setup(r => r.Remove(item)).Throws(new InventoryFatalException(new Exception())); var controller = GetAccountControllerWithContext(mockLogger, mockMessageCache, mockMessageQueue, mockNotificationService, mockRepository, settings); // Act HttpResponseMessage response = null; Assert.DoesNotThrow(() => response = controller.Delete(item)); // Assert Assert.NotNull(response); Assert.AreEqual(HttpStatusCode.ServiceUnavailable, response.StatusCode); mockMessageQueue.Verify(n => n.QueueInventoryItem(item), Times.Never); mockMessageQueue.Verify(n => n.FlushLocalCache(mockMessageCache.Object), Times.Never); mockNotificationService .Verify(n => n.SendEmail(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once); }
public MessageQueueService(ApplicationSettings settings) { _settings = settings; }
public void Post_Succeeds() { // Arrange var mockLogger = new Mock<ILog>(); var mockMessageCache = new Mock<IInventoryTakeMessageCache>(); var mockMessageQueue = new Mock<IMessageQueueService>(); var mockNotificationService = new Mock<INotificationService>(); var mockRepository = new Mock<IInventoryRepository>(); var settings = new ApplicationSettings(false); var item = new InventoryItem { Label = "test", Expires = DateTime.Now.AddDays(30) }; mockRepository.Setup(r => r.Create(item)).Returns(item); var controller = GetAccountControllerWithContext(mockLogger, mockMessageCache, mockMessageQueue, mockNotificationService, mockRepository, settings); // Act HttpResponseMessage response = null; Assert.DoesNotThrow(() => response = controller.Post(item)); // Assert Assert.NotNull(response); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); }
public InventoryItemsController GetAccountControllerWithContext(Mock<ILog> mockLogger, Mock<IInventoryTakeMessageCache> mockMessageCache, Mock<IMessageQueueService> mockQueueService, Mock<INotificationService> mockNotificationService, Mock<IInventoryRepository> mockRepository, ApplicationSettings settings) { // Set up Mocks var mockConfig = new Mock<HttpConfiguration>(); var mockRequest = new HttpRequestMessage(HttpMethod.Post, "http://www.test.com"); var mockRouteData = new Mock<IHttpRouteData>(); //mockContext.SetupGet(c => c.Request).Returns(new HttpRequestWrapper(new HttpRequest("test", "http://www.test.com", null))); var mockUrlHelper = new Mock<UrlHelper>(); var controller = new InventoryItemsController(mockRepository.Object, mockQueueService.Object, mockMessageCache.Object, mockNotificationService.Object, mockLogger.Object) {Settings = settings}; controller.ControllerContext = new HttpControllerContext(mockConfig.Object, mockRouteData.Object, mockRequest); controller.Url = mockUrlHelper.Object; return controller; }