public void TestAddValidNews() { ClearNews(); var news = new News { Title = "Zaglavie", Content = "tralala123" }; var postContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("title", news.Title), new KeyValuePair<string, string>("content", news.Content) }); var httpResponse = this.httpClient.PostAsync("/api/news", postContent).Result; Assert.AreEqual(HttpStatusCode.Created, httpResponse.StatusCode); Assert.IsNotNull(httpResponse.Headers.Location); var returnedNews = httpResponse.Content.ReadAsAsync<News>().Result; Assert.IsTrue(returnedNews.Id != 0); Assert.AreEqual(news.Title, returnedNews.Title); Assert.AreEqual(news.Content, returnedNews.Content); Assert.AreEqual(news.PublishDate.ToString(), returnedNews.PublishDate.ToString()); using (var dbContext = new NewsDbContext()) { var newsFromDb = dbContext.News.FirstOrDefault(); Assert.IsNotNull(newsFromDb); Assert.AreEqual(returnedNews.Id, newsFromDb.Id); Assert.AreEqual(returnedNews.Title, newsFromDb.Title); Assert.AreEqual(returnedNews.PublishDate.ToString(), newsFromDb.PublishDate.ToString()); Assert.AreEqual(returnedNews.Content, newsFromDb.Content); } }
public IHttpActionResult AddNews(NewsBindingModel newsModel) { if (newsModel == null || !this.ModelState.IsValid) { return this.BadRequest("The news title and content are required."); } var newsToAdd = new News { Title = newsModel.Title, Content = newsModel.Content, PublishDate = newsModel.PublishDate ?? DateTime.Now, UserId = this.UserIdProvider.GetUserId() }; this.NewsData.Add(newsToAdd); this.NewsData.SaveChanges(); return this.CreatedAtRoute("DefaultApi", new { id = newsToAdd.Id }, newsToAdd); }
public void TestDeleteNews() { ClearNews(); var news = new News { Title = "Zaglavie", Content = "tralala123" }; using (var dbContext = new NewsDbContext()) { dbContext.News.Add(news); dbContext.SaveChanges(); } var httpResponse = this.httpClient.DeleteAsync("/api/news/" + news.Id).Result; Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode); using (var dbContext = new NewsDbContext()) { var newsFromDb = dbContext.News.FirstOrDefault(); Assert.IsNull(newsFromDb); } }
public void TestModifyInvalidNews() { ClearNews(); var news = new News { Title = "Zaglavie", Content = "tralala123" }; using (var dbContext = new NewsDbContext()) { dbContext.News.Add(news); dbContext.SaveChanges(); } var postContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("content", "No Title") }); var httpResponse = this.httpClient.PutAsync("/api/news/" + news.Id, postContent).Result; Assert.AreEqual(HttpStatusCode.BadRequest, httpResponse.StatusCode); using (var dbContext = new NewsDbContext()) { var newsFromDb = dbContext.News.FirstOrDefault(); Assert.IsNotNull(newsFromDb); Assert.AreEqual(news.Title, newsFromDb.Title); Assert.AreEqual(news.Content, newsFromDb.Content); } }
public void TestModifyValidNews() { ClearNews(); var news = new News { Title = "Zaglavie", Content = "tralala123" }; using (var dbContext = new NewsDbContext()) { dbContext.News.Add(news); dbContext.SaveChanges(); } var postContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("title", "Changed Title"), new KeyValuePair<string, string>("content", "Changed Content") }); var httpResponse = this.httpClient.PutAsync("/api/news/" + news.Id, postContent).Result; Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode); var returnedNews = httpResponse.Content.ReadAsAsync<News>().Result; Assert.AreEqual(news.Id, returnedNews.Id); Assert.AreEqual("Changed Title", returnedNews.Title); Assert.AreEqual("Changed Content", returnedNews.Content); Assert.AreEqual(news.PublishDate.ToString(), returnedNews.PublishDate.ToString()); using (var dbContext = new NewsDbContext()) { var newsFromDb = dbContext.News.FirstOrDefault(); Assert.IsNotNull(newsFromDb); Assert.AreEqual(returnedNews.Id, newsFromDb.Id); Assert.AreEqual(returnedNews.Title, newsFromDb.Title); Assert.AreEqual(returnedNews.PublishDate.ToString(), newsFromDb.PublishDate.ToString()); Assert.AreEqual(returnedNews.Content, newsFromDb.Content); } }
public void TestModifyValidNews() { var controller = new NewsController(repoMock.Object); SetupController(controller, "News"); var news = new News { Id = 18, Title = "Zaglavie", Content = "dadadada" }; repoMock.Setup(repo => repo.Find(It.IsAny<object>())).Returns(news); var updatedNews = new NewsBindingModel { Title = "Zaglavie", Content = "Changed content" }; var result = controller.UpdateNews(18, updatedNews).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var returnedNews = result.Content.ReadAsAsync<News>().Result; Assert.AreEqual(updatedNews.Title, returnedNews.Title); Assert.AreEqual(updatedNews.Content, returnedNews.Content); Assert.AreEqual(news.Title, returnedNews.Title); }
public void TestDeleteValidNews() { var controller = new NewsController(repoMock.Object); SetupController(controller, "News"); var news = new News { Title = "Zaglavie", Content = "dadadada" }; repoMock.Setup(repo => repo.Find(It.IsAny<object>())).Returns(news); var result = controller.DeleteNews(22).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); }
public void TestModifyInvalidNews() { var controller = new NewsController(repoMock.Object); SetupController(controller, "News"); var news = new News { Id = 18, Title = "Zaglavie", Content = "dadadada" }; repoMock.Setup(repo => repo.Find(It.IsAny<object>())).Returns(news); var invalidNews = new NewsBindingModel { Content = "No title" }; // it's not the controller's job to validate - there is a validator controller.ModelState.AddModelError("Title", "Required"); var result = controller.UpdateNews(18, invalidNews).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode); }