예제 #1
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);
        }
        public void CreateNewsItemWithCorrectDataShouldCreatesAndReturnsAnItem()
        {
            var newsItem = new NewsItem
                {
                    Title = "New News", 
                    Content = "New News Content", 
                    PublishDate = new DateTime(2015, 09, 09)
                };

            this.data.News.Add(newsItem);
            this.data.SaveChanges();

            var createdItem = this.data.News.GetAll()
                .FirstOrDefault(n =>
                                n.Title == newsItem.Title &&
                                n.Content == newsItem.Content &&
                                n.PublishDate == newsItem.PublishDate);

            if (createdItem == null)
            {
                Assert.Fail("Items is not created");
            }

            Assert.AreEqual(createdItem.Title, newsItem.Title);
            Assert.AreEqual(createdItem.Content, newsItem.Content);
            Assert.AreEqual(createdItem.PublishDate, newsItem.PublishDate);
        }
        public IHttpActionResult PostNewsItem(NewsBindingModel newsBindingModel)
        {
            if (newsBindingModel == null)
            {
                return this.BadRequest("News data is missing");
            }

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

            var newNews = new NewsItem
                {
                    Title = newsBindingModel.Title, 
                    Content = newsBindingModel.Content, 
                    PublishDate = newsBindingModel.PublishDate
                };

            this.Data.News.Add(newNews);
            this.Data.SaveChanges();

            var newsView = this.Data.News.GetAll()
                .Where(n => n.Id == newNews.Id)
                .Select(NewsViewModel.Create())
                .FirstOrDefault();

            var uriLocation = new
                {
                    controller = "news",
                    id = newNews.Id
                };

            return this.CreatedAtRoute("DefaultApi", uriLocation, newsView);
        }
        public IHttpActionResult PostNewsItem(NewsItem newsItem)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            this.Data.NewsRepository.Add(newsItem);
            this.Data.NewsRepository.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = newsItem.Id }, newsItem);
        }
        public IHttpActionResult PutNewsItem(int id, NewsItem newsItem)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var item = this.Data.NewsRepository.GetById(id);
            if (id != newsItem.Id || item == null)
            {
                return BadRequest();
            }

            this.Data.NewsRepository.Update(newsItem);
            this.Data.NewsRepository.SaveChanges();
            return StatusCode(HttpStatusCode.OK);
        }
        public void AddNewsItemThenGetTheNewItemSouldBeTheSame()
        {
            DbContext = new NewsDbContext();
            this.data = new NewsData(DbContext);

            var news = new NewsItem
            {
                Title = "Test",
                Content = "Test",
                PublishDate = DateTime.Now
            };

            this.data.News.Add(news);
            this.data.SaveChanges();

            Assert.AreEqual(news, this.data.News.All().OrderBy(n => n.Id).FirstOrDefault());
        }
        public void CreateNewsItemWithIncorrectDataShouldReturnBadRequest()
        {
            NewsItem invalidNewsItem = new NewsItem
                {
                    Content = "Content",
                    PublishDate = DateTime.Now
                };

            this.data.News.Add(invalidNewsItem);
            this.data.SaveChanges();
        }
        private void PopulateDatabase()
        {
            var newsBodyOne = this.GenerateBodyData(this.newsItemOne);
            var newsBodyTwo = this.GenerateBodyData(this.newsItemTwo);

            var newsOneResponse = this.client.PostAsync("api/news", newsBodyOne).Result;
            var newsTwoResponse = this.client.PostAsync("api/news", newsBodyTwo).Result;

            this.newsOne = newsOneResponse.Content.ReadAsAsync<NewsItem>().Result;
        }
        public void ModifyExistingNewsItemWithValidData()
        {
            DbContext = new NewsDbContext();
            this.data = new NewsData(DbContext);

            var news = new NewsItem
            {
                Title = "Tesaat",
                Content = "Testaa",
                PublishDate = DateTime.Now
            };

            this.data.News.Add(news);
            this.data.SaveChanges();

            news.Title = "New title";
            this.data.SaveChanges();

            var itemAfterChange = this.data.News.All().FirstOrDefault();

            Assert.AreEqual("New title", itemAfterChange.Title);
        }