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);
        }
        public void PutNewsItemWithValidDataShouldSucceed()
        {
            var news = new List<NewsItem>
            {
                new NewsItem
                {
                    Id = 9,
                    Title = "FirstNews",
                    Content = "FirstNewsContent",
                    PublishDate = DateTime.Now,
                    UserId = "2",
                    User = new ApplicationUser() {UserName = "******" }
                },
                new NewsItem
                {
                    Id = 3,
                    Title = "SecondNews",
                    Content = "SecondNewsContent",
                    PublishDate = DateTime.Now.AddDays(-3),
                    UserId = "2",
                    User = new ApplicationUser() { UserName = "******" }
                },
                new NewsItem
                {
                    Id = 2,
                    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 existingNewsItem = news.Where(n => n.Title == "FirstNews").Select(NewsItemOutputModel.Project).First();
            existingNewsItem.Title = "FirstNewsUpdatet";
            var id = existingNewsItem.Id;

            var result = controller.Put(id, existingNewsItem).ExecuteAsync(new CancellationToken()).Result;
            var itemAfterUpdate = news.First(n => n.Id == id);

            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
            Assert.AreEqual(itemAfterUpdate.Title, "FirstNewsUpdatet");
        }
        public void TestingGetAllmethodShouldSucceed()
        {
            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 result = controller.Get().ExecuteAsync(new CancellationToken()).Result;

            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
            var content = result.Content.ReadAsStringAsync().Result;
            var resultNews = JsonConvert.DeserializeObject<List<NewsItemOutputModel>>(content);
            var exprectedNewsItems = news.Select(NewsItemOutputModel.Project);

            for (int i = 0; i < resultNews.Count; i++)
            {
                Assert.AreEqual(news[i].Id, resultNews[i].Id);
                Assert.AreEqual(news[i].Title, resultNews[i].Title);
                Assert.AreEqual(news[i].Content, resultNews[i].Content);
                Assert.AreEqual(news[i].PublishDate, resultNews[i].PublishDate);
            }
        }