コード例 #1
0
        public void UpdateNews_WithCorrectData_ShouldUpdateTheNewsAndReturn200Ok()
        {
            // Arrange
            var initialNew = new News()
            {
                Id = 1, Title = "Test news #1", Content = "Test content #1",
            };

            var controller = new NewsController(this.dataLayerMocked);

            this.SetupController(controller, "news");

            // Act
            this.dataLayerMocked.News.Add(initialNew);

            var httpGetResponse = controller.GetAllNews().ExecuteAsync(new CancellationToken()).Result;
            var newsFromService = httpGetResponse.Content.ReadAsAsync <List <News> >().Result;
            var updatedNew      = new UpdateNewInputModel()
            {
                Title = "Updated", Content = "Tralala"
            };
            var newsId          = newsFromService[0].Id;
            var httpPutResponse =
                controller.UpdateNewById(newsId, updatedNew).ExecuteAsync(new CancellationToken()).Result;

            var result = httpPutResponse.Content.ReadAsAsync <News>().Result;

            // Assert
            Assert.AreEqual(updatedNew.Title, result.Title);
            Assert.AreEqual(updatedNew.Content, result.Content);
        }
コード例 #2
0
        public IHttpActionResult UpdateNewById(int id, UpdateNewInputModel inputModel)
        {
            if (inputModel == null)
            {
                return(this.BadRequest());
            }

            var news = this.Data.News.All().FirstOrDefault(n => n.Id == id);

            if (news == null)
            {
                return(this.NotFound());
            }

            if (inputModel.Title != null)
            {
                news.Title = inputModel.Title;
            }

            if (inputModel.Content != null)
            {
                news.Content = inputModel.Content;
            }

            if (inputModel.PublishedAt != null)
            {
                news.PublishedAt = Convert.ToDateTime(inputModel.PublishedAt);
            }

            this.Data.News.Update(news);

            this.Data.SaveChanges();

            var newOutputModel = new GetAllNewsViewModel()
            {
                Id = news.Id, Content = news.Content, Title = news.Title, PublishedDate = news.PublishedAt
            };

            return(this.Ok(newOutputModel));
        }