public void Create_News_With_Correct_Data_Should_Return_201Created_Add_News_In_Repo_And_Return_News() { // Arrange var newNews = new NewsBindingModel { Title = "Title 10", Content = "Content 1010101010", PublishDate = new DateTime(2015, 9, 1) }; var mockContext = new Mock<INewsData>(); mockContext.Setup(c => c.News) .Returns(this.mock.NewsRepositoryMock.Object); var newsController = new NewsController(mockContext.Object); this.SetupController(newsController); // Act var response = newsController.PostNews(newNews) .ExecuteAsync(CancellationToken.None).Result; // Assert var fakeNews = this.mock.NewsRepositoryMock.Object.All().ToList(); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(6, fakeNews.Count); Assert.AreEqual(newNews.Title, fakeNews[5].Title); Assert.AreEqual(newNews.Content, fakeNews[5].Content); Assert.AreEqual(newNews.PublishDate, fakeNews[5].PublishDate); }
public void Creating_News_Should_Create_And_Return_The_News() { var news = new List<Models.News>(); _mocks.NewsRepoMock .Setup(r => r.Add(It.IsAny<Models.News>())) .Callback((Models.News n) => { news.Add(n); }); var fakeNews = new NewsBindingModel { Title = "Sample title", Content = "Sample content", PublishedOn = DateTime.Now }; var mockContext = new Mock<INewsData>(); mockContext.Setup(c => c.News) .Returns(_mocks.NewsRepoMock.Object); var newsController = new NewsController(mockContext.Object); SetupController(newsController); var response = newsController.PostNews(fakeNews).ExecuteAsync(CancellationToken.None).Result; var newsResponse = response.Content.ReadAsAsync<NewsBindingModel>().Result; Assert.AreEqual(response.StatusCode, HttpStatusCode.Created); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(news.Count, 1); //It's something Assert.AreEqual(fakeNews.Title, newsResponse.Title); }
public void Creating_News_With_Incorrect_Data_Should_Return_BadRequest() { var news = new List<Models.News>(); _mocks.NewsRepoMock .Setup(r => r.Add(It.IsAny<Models.News>())) .Callback((Models.News n) => { news.Add(n); }); var fakeNews = new NewsBindingModel { Title = null, Content = null, PublishedOn = DateTime.Now }; var mockContext = new Mock<INewsData>(); mockContext.Setup(c => c.News) .Returns(_mocks.NewsRepoMock.Object); var newsController = new NewsController(mockContext.Object); SetupController(newsController); var response = newsController.PostNews(fakeNews).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(response.StatusCode, HttpStatusCode.BadRequest); mockContext.Verify(c => c.SaveChanges(), Times.Never); }
public void Add_Correct_NewsRecord_Should_Add_NewsRecord_to_DB() { var mockRepo = new Mock<IRepository<NewsRecord>>(); var news = new List<NewsRecord>() { new NewsRecord() { Title = "HopHop1", Content = "The hoppy hop", PublishDate = DateTime.Now }, new NewsRecord() { Title = "HopHop2", Content = "The hoppy hop2", PublishDate = DateTime.Now.AddDays(+5) }, new NewsRecord() { Title = "HopHop3", Content = "The hoppy hop3", PublishDate = DateTime.Now.AddDays(+10) } }; mockRepo.Setup(r => r.Add(It.IsNotNull<NewsRecord>())) .Callback((NewsRecord n) => news.Add(n)); var controller = new NewsController(mockRepo.Object); this.SetupController(controller, "NewsController"); var newsToPost = new NewsRecordBindingModel() { Title = "Lets see", Content = "Messy shit", }; var response = controller.PostNews(newsToPost).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); Assert.IsTrue(news.Count == 4); Assert.AreEqual("Messy shit", news.Last().Content); Assert.AreEqual(newsToPost.Title, news.Last().Title); Assert.IsNotNull(news.Last().PublishDate); }
public void Add_InCorrect_NewsRecord_Should_Throw_Exception() { var mockRepo = new Mock<IRepository<NewsRecord>>(); var news = new List<NewsRecord>() { new NewsRecord() { Title = "HopHop1", Content = "The hoppy hop", PublishDate = DateTime.Now }, new NewsRecord() { Title = "HopHop2", Content = "The hoppy hop2", PublishDate = DateTime.Now.AddDays(+5) }, new NewsRecord() { Title = "HopHop3", Content = "The hoppy hop3", PublishDate = DateTime.Now.AddDays(+10) } }; mockRepo.Setup(r => r.Add(It.IsNotNull<NewsRecord>())) .Callback((NewsRecord n) => news.Add(n)); var controller = new NewsController(mockRepo.Object); this.SetupController(controller, "NewsController"); controller.ModelState.AddModelError("key", "error message"); var newsToPost = new NewsRecordBindingModel() { Title = "", Content = "Messy shit", }; var response = controller.PostNews(newsToPost).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void Create_News_With_InCorrect_Data_Should_Return_400BadRequest() { // Arrange var newNews = new NewsBindingModel { Title = "T", // invalid MinLength Content = "Content 1010101010", PublishDate = new DateTime(2015, 9, 1) }; var mockContext = new Mock<INewsData>(); mockContext.Setup(c => c.News) .Returns(this.mock.NewsRepositoryMock.Object); var newsController = new NewsController(mockContext.Object); this.SetupController(newsController); newsController.ModelState.AddModelError("Title", "Title MinLength is 5."); // Act var response = newsController.PostNews(newNews) .ExecuteAsync(CancellationToken.None).Result; // Assert var fakeNews = this.mock.NewsRepositoryMock.Object.All().ToList(); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Never); Assert.AreEqual(5, fakeNews.Count); }