public void Put_TryingToModifyNonExistantItemShouldReturn400BadRequest() { var fakeNews = this.mocks.NewsRepositoryMock.Object.All(); int nonExistingNewsId = 5; this.mocks.NewsRepositoryMock .Setup(r => r.Update(It.IsAny<NewsModel>())) .Callback((NewsModel newsModel) => { var news = fakeNews.FirstOrDefault(fn => fn.Id == nonExistingNewsId); news.Title = newsModel.Title; news.Content = newsModel.Content; news.PublishDate = newsModel.PublishDate; }); var mockContext = new Mock<INewsData>(); mockContext .Setup(c => c.News) .Returns(this.mocks.NewsRepositoryMock.Object); var newsController = new NewsController(mockContext.Object); this.SetupController(newsController); var updateNews = new PutNewsBindingModel() { Title = "Updated news", Content = "Updated content", PublishDate = new DateTime(2015, 9, 5) }; var response = newsController.Put(nonExistingNewsId, updateNews) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void Put_ShouldModifyExistingItemAndReturn200OKOnCorrectData() { var fakeNews = this.mocks.NewsRepositoryMock.Object.All(); int existingNewsId = 1; this.mocks.NewsRepositoryMock .Setup(r => r.Update(It.IsAny<NewsModel>())) .Callback((NewsModel newsModel) => { var news = fakeNews.FirstOrDefault(fn => fn.Id == existingNewsId); news.Title = newsModel.Title; news.Content = newsModel.Content; news.PublishDate = newsModel.PublishDate; }); var mockContext = new Mock<INewsData>(); mockContext .Setup(c => c.News) .Returns(this.mocks.NewsRepositoryMock.Object); var newsController = new NewsController(mockContext.Object); this.SetupController(newsController); var updateNews = new PutNewsBindingModel() { Title = "Updated news", Content = "Updated content", PublishDate = new DateTime(2015, 9, 5) }; var response = newsController.Put(existingNewsId, updateNews) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var updatedNews = response.Content .ReadAsAsync<NewsModel>() .Result; Assert.AreEqual(updateNews.Title, updatedNews.Title); Assert.AreEqual(updateNews.Content, updatedNews.Content); Assert.AreEqual(updateNews.PublishDate, updatedNews.PublishDate); }