public IHttpActionResult CreateNew(CreateNewInputModel inputModel)
        {
            if (inputModel == null)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var news = new News {
                Content = inputModel.Content, Title = inputModel.Title, PublishedAt = DateTime.Now
            };

            this.Data.News.Add(news);
            this.Data.SaveChanges();
            var newOutputModel = new GetAllNewsViewModel()
            {
                Id = news.Id, Content = news.Content, Title = news.Title, PublishedDate = news.PublishedAt
            };

            return(this.CreatedAtRoute("DefaultApi", new { controller = "news", id = newOutputModel.Id }, newOutputModel));
        }
Example #2
0
        public void CreateNews_WithCorrectData_ShouldCreateNewsAndReturn201Created()
        {
            // Arrange
            var news = new CreateNewInputModel()
            {
                Title   = "Test news #1",
                Content = "Test content #1",
            };

            this.dataLayerMocked.IsChangeSaved = false;

            var controller = new NewsController(this.dataLayerMocked);

            this.SetupController(controller, "news");

            // Act
            var httpResponse    = controller.CreateNew(news).ExecuteAsync(new CancellationToken()).Result;
            var newsFromService = httpResponse.Content.ReadAsAsync <News>().Result;

            // Arrange
            Assert.IsTrue(this.dataLayerMocked.IsChangeSaved);
            Assert.AreEqual(HttpStatusCode.Created, httpResponse.StatusCode);
            Assert.AreEqual(news.Title, newsFromService.Title);
            Assert.AreEqual(news.Content, newsFromService.Content);
        }