Ejemplo n.º 1
0
        // PUT api/news/5
        public IHttpActionResult Put(int id, [FromBody] NewsItemOutputModel newsItemOutput)
        {
            if (newsItemOutput == null)
            {
                this.ModelState.AddModelError("newsItem", "There is no news to change");
            }

            var newsItemForChange = this.NewsData.News.All().FirstOrDefault(n => n.Id == id);

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

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

            newsItemForChange.Content     = newsItemOutput.Content;
            newsItemForChange.PublishDate = newsItemOutput.PublishDate;
            newsItemForChange.Title       = newsItemOutput.Title;
            this.NewsData.SaveChanges();

            return(this.Ok());
        }
Ejemplo n.º 2
0
        public void PostNewsItemWithValidDataShouldSucceed()
        {
            var news = new List <NewsItem>
            {
                new NewsItem
                {
                    Title       = "FirstNews",
                    Content     = "FirstNewsContent",
                    PublishDate = DateTime.Now,
                    UserId      = "2",
                    User        = new ApplicationUser()
                    {
                        UserName = "******"
                    }
                },
                new NewsItem
                {
                    Title       = "SecondNews",
                    Content     = "SecondNewsContent",
                    PublishDate = DateTime.Now.AddDays(-3),
                    UserId      = "2",
                    User        = new ApplicationUser()
                    {
                        UserName = "******"
                    }
                },
                new NewsItem
                {
                    Title       = "ThirdNews",
                    Content     = "ThirdNewsContent",
                    PublishDate = DateTime.Now.AddDays(-10),
                    UserId      = "2",
                    User        = new ApplicationUser()
                    {
                        UserName = "******"
                    }
                }
            };

            var dataMock = new Mock <INewsData>();

            dataMock.Setup(r => r.News).Returns(this.GetMockedNewsItem(news));

            var controller = new NewsController(dataMock.Object);

            this.SetupController(controller, "NewsController");

            var newNewsItem = new NewsItemOutputModel()
            {
                Title       = "ThirdNews",
                Content     = "ThirdNewsContent",
                PublishDate = DateTime.Now.AddDays(8)
            };
            var result = controller.Post(newNewsItem).ExecuteAsync(new CancellationToken()).Result;

            Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);
            Assert.AreEqual(newNewsItem.Title, news.Last().Title);
            Assert.AreEqual(newNewsItem.Content, news.Last().Content);
            Assert.IsNotNull(news.Last().PublishDate);
        }
Ejemplo n.º 3
0
        // POST api/news
        public IHttpActionResult Post([FromBody] NewsItemOutputModel newsItemOutput)
        {
            if (newsItemOutput == null)
            {
                this.ModelState.AddModelError("newsItem", "There is no news to add");
            }

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

            var userId      = this.User.Identity.GetUserId();
            var newNewsItem = new NewsItem
            {
                Content     = newsItemOutput.Content,
                PublishDate = newsItemOutput.PublishDate,
                Title       = newsItemOutput.Title,
                UserId      = userId,
            };

            this.NewsData.News.Add(newNewsItem);
            this.NewsData.SaveChanges();

            newsItemOutput.Id = newNewsItem.Id;
            return(this.Created("DefaultApi", newsItemOutput));
        }