public async void TestForGetLeagueArticleById()
        {
            var options = new DbContextOptionsBuilder <NewsContext>()
                          .UseInMemoryDatabase(databaseName: "p3NewsService")
                          .Options;

            using (var context = new NewsContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                Repo r             = new Repo(context, new NullLogger <Repo>());
                var  leagueArticle = new LeagueArticle
                {
                    ArticleID = Guid.NewGuid(),
                    Title     = "goodnews!",
                    Body      = "wewon!",
                    IsPinned  = true,
                    IsVisible = true
                };

                r.LeagueArticles.Add(leagueArticle);
                await r.CommitSave();

                var leagueArticle2 = await r.GetLeagueArticleById(leagueArticle.ArticleID);

                Assert.True(leagueArticle2.Equals(leagueArticle));
            }
        }
示例#2
0
 static CategoryRepository()
 {
     using (var db = new NewsContext())
     {
         _categories = db.Categories.ToList();
     }
 }
示例#3
0
        public async void TestForCreateLeagueArticle()
        {
            //for coverage
            var dbContext = new NewsContext();

            var options = new DbContextOptionsBuilder <NewsContext>()
                          .UseInMemoryDatabase(databaseName: "p3NewsService")
                          .Options;

            using (var context = new NewsContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                Repo           r                = new Repo(context, new NullLogger <Repo>());
                Logic          logic            = new Logic(r, new NullLogger <Repo>());
                NewsController newsController   = new NewsController(logic);
                var            leagueArticleDto = new LeagueArticleDto()
                {
                    ArticleID = Guid.NewGuid(),
                    Title     = "free hotdogs",
                    Content   = "come today to get your hotdogs!",
                    Date      = DateTime.Now,
                    IsPinned  = true,
                    IsVisible = true
                };

                await newsController.CreateLeagueArticle(leagueArticleDto);

                Assert.NotNull(context.LeagueArticles);
            }
        }
示例#4
0
        public async void TestForGetPinnedLeagueArticles()
        {
            var options = new DbContextOptionsBuilder <NewsContext>()
                          .UseInMemoryDatabase(databaseName: "p3NewsService")
                          .Options;

            using (var context = new NewsContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                Repo           r              = new Repo(context, new NullLogger <Repo>());
                Logic          logic          = new Logic(r, new NullLogger <Repo>());
                NewsController newsController = new NewsController(logic);
                var            leagueArticle  = new LeagueArticle()
                {
                    ArticleID = Guid.NewGuid(),
                    Title     = "free hotdogs",
                    Body      = "come today to get your hotdogs!",
                    Date      = DateTime.Now,
                    IsPinned  = true,
                    IsVisible = true
                };
                r.LeagueArticles.Add(leagueArticle);
                await r.CommitSave();

                var pinnedLeagueArticle = await newsController.GetPinnedLeagueArticles();

                var convertedArticle = (List <LeagueArticleDto>)pinnedLeagueArticle;
                Assert.True(convertedArticle[0].Content.Equals(leagueArticle.Body));
            }
        }
示例#5
0
        public async void TestForDeleteTeamArticle()
        {
            var options = new DbContextOptionsBuilder <NewsContext>()
                          .UseInMemoryDatabase(databaseName: "p3NewsService")
                          .Options;

            using (var context = new NewsContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                Repo           r              = new Repo(context, new NullLogger <Repo>());
                Logic          logic          = new Logic(r, new NullLogger <Repo>());
                NewsController newsController = new NewsController(logic);
                var            teamArticle    = new TeamArticle()
                {
                    ArticleID = Guid.NewGuid(),
                    Title     = "free hotdogs",
                    Body      = "come today to get your hotdogs!",
                    Date      = DateTime.Now,
                    IsPinned  = true,
                    IsVisible = true,
                    TeamID    = Guid.NewGuid()
                };
                r.TeamArticles.Add(teamArticle);
                await r.CommitSave();

                Assert.NotEmpty(context.TeamArticles);

                await newsController.DeleteTeamArticle(teamArticle.ArticleID);

                Assert.Null(context.TeamArticles.Find(teamArticle.ArticleID));
            }
        }
示例#6
0
 private async Task AutoUpdateFeed(System.Timers.Timer timernew)
 {
     await Task.Factory.StartNew(() =>
     {
         var currentDatetime = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
         var time            = currentDatetime.ToString("hh:mm tt");
         try
         {
             var feedMgr = IoC.Initialize().GetInstance <IFeedMgr>();
             using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new System.TimeSpan(0, 30, 0)))
             {
                 using (NewsContext _context = new NewsContext())
                 {
                     Transaction rootTr = Transaction.Current;
                     var itemFeeds      = _context.FeedNames;
                     var rssFeeds       = _context.NewsItems;
                     foreach (var itemUrl in itemFeeds)
                     {
                         DependentTransaction dt = rootTr.DependentClone(DependentCloneOption.RollbackIfNotComplete);
                         var rssData             = feedMgr.ParseFeedUrl(itemUrl.Url, false);
                         _newsFeedMgr.Save(rssData);
                         dt.Complete();
                     }
                     _context.Dispose();
                 }
                 scope.Complete();
             }
             timernew.Start();
         }
         catch (Exception ex)
         {
             throw ex;
         }
     });
 }
示例#7
0
        static void Main(string[] args)
        {
            var contextOne = new NewsContext();
            var contextTwo = new NewsContext();

            ConcurrencyTest(contextOne, contextTwo);
        }
示例#8
0
        public async Task GetAllNews_ShouldReturnAllNews()
        {
            // Arrange
            var options = new DbContextOptionsBuilder <NewsContext>()
                          .UseInMemoryDatabase(databaseName: "codeartists_test")
                          .Options;

            using (var context = new NewsContext(options))
            {
                var news = new News()
                {
                    Id      = 1,
                    Header  = "Code Artists",
                    Content = "Hello world!"
                };

                context.News.Add(news);
                context.SaveChanges();
            }

            // Act
            var response = await _client.GetAsync("/api/News?GetAll");

            response.EnsureSuccessStatusCode();

            var responseString = await response.Content.ReadAsStringAsync();

            var listOfNews = JsonConvert.DeserializeObject <JsonDataResponse>(responseString);

            // Assert
            Assert.True(((JArray)listOfNews.Data).Count > 0);
        }
 public Configuration()
 {
     this.AutomaticMigrationsEnabled        = true;
     this.AutomaticMigrationDataLossAllowed = true;
     this.context = new NewsContext();
     //this.Seed(this.context);
 }
示例#10
0
        private static void SeedDatabase()
        {
            var context = new NewsContext();

            context.News.Add(
                new News {
                Title = "Title 1", Content = "Content 11111", PublishDate = new DateTime(2015, 1, 1)
            });
            context.News.Add(
                new News {
                Title = "Title 2", Content = "Content 22222", PublishDate = new DateTime(2015, 2, 2)
            });
            context.News.Add(
                new News {
                Title = "Title 3", Content = "Content 33333", PublishDate = new DateTime(2015, 3, 3)
            });
            context.News.Add(
                new News {
                Title = "Title 4", Content = "Content 44444", PublishDate = new DateTime(2015, 4, 4)
            });
            context.News.Add(
                new News {
                Title = "Title 5", Content = "Content 55555", PublishDate = new DateTime(2015, 5, 5)
            });

            context.SaveChanges();
        }
示例#11
0
 private Task <int> GetCollectionSizeAsync(NewsContext db)
 {
     return(Task.Run(() =>
     {
         return db.NewsSet.Count();
     }));
 }
示例#12
0
        public void Delete_NonExisting_News_Should_Return_400BadRequest()
        {
            var context = new NewsContext();
            var newsInDbBeforeDeleting = context.News.ToList();
            var nonExistingNewsId      = -1;

            Random rnd = new Random();

            while (true)
            {
                int id       = rnd.Next(1, int.MaxValue);
                var newsInDb = newsInDbBeforeDeleting
                               .FirstOrDefault(n => n.Id == id);

                if (newsInDb == null)
                {
                    nonExistingNewsId = id;
                    break;
                }
            }

            var endpointWithId = Endpoint + "/" + nonExistingNewsId;

            var response = httpClient.DeleteAsync(endpointWithId).Result;
            var newsInDbAfterDeleting = context.News.ToList();

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.AreEqual(newsInDbBeforeDeleting.Count, newsInDbAfterDeleting.Count);
        }
示例#13
0
 public NewsController(/*INewsLangsRepository _newsLangsRepository,*/ IStringLocalizer <NewsController> localizer, INewsRepository _repository, NewsContext context)
 {
     //newsLangsRepository = _newsLangsRepository;
     _localizer   = localizer;
     repository   = _repository;
     this.context = context;
 }
示例#14
0
        private static void HandleConcurrentUpdates()
        {
            using (var context = new NewsContext())
            {
                var firstNews = context.News.FirstOrDefault();
                Console.WriteLine("Text from DB: {0}", firstNews.Content);

                Console.WriteLine("Enter the corrected text: ");
                var newContent = Console.ReadLine();

                firstNews.Content = newContent;

                try
                {
                    context.SaveChanges();
                    Console.WriteLine("Changes successfully saved in the DB.");
                }
                catch (DbUpdateConcurrencyException)
                {
                    Console.WriteLine("Conflict!");

                    HandleConcurrentUpdates();
                }
            }
        }
示例#15
0
 public ActionResult Create(UserNews login)
 {
     try
     {
         string fileName  = Path.GetFileNameWithoutExtension(login.ImageFile.FileName);
         string extension = Path.GetExtension(login.ImageFile.FileName);
         fileName   = fileName + DateTime.Now.ToString("yymmssfff") + extension;
         login.Foto = "~/Image/" + fileName;
         fileName   = Path.Combine(Server.MapPath("~/Image/"), fileName);
         login.ImageFile.SaveAs(fileName);
         using (NewsContext dbModel = new NewsContext())
         {
             News new_table = new News();
             new_table.Data    = login.Data;
             new_table.Noutati = login.Noutati;
             new_table.Foto    = login.Foto;
             dbModel.New.Add(new_table);
             dbModel.SaveChanges();
         }
         ModelState.Clear();
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
示例#16
0
        private static void CleanDatabase()
        {
            var context = new NewsContext();

            context.News.Delete();
            context.SaveChanges();
        }
示例#17
0
        public NewsController(NewsContext context, IMapper mapper, EventBusRabbitMQ eventBusRabbitMQ)
        {
            _context = context;
            _mapper  = mapper;

            _eventBus = eventBusRabbitMQ;
        }
        private static void PrintNewsContent(int id)
        {
            var db           = new NewsContext();
            var newsToChange = db.News.Find(id);

            Console.WriteLine(newsToChange.Content);
        }
        static void Main(string[] args)
        {
            var  db         = new NewsContext();
            bool hasChange  = false;
            var  firstUser  = new NewsContext();
            var  secondUser = new NewsContext();
            int  id         = 1;

            ChangeContentValue(firstUser, id, ref hasChange);
            Console.WriteLine(hasChange);
            ChangeContentValue(secondUser, id, ref hasChange);

            firstUser.SaveChanges();
            try
            {
                secondUser.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                Console.WriteLine("Conflict! Text from DB: ");
                PrintNewsContent(id);
                ChangeContentValue(secondUser, id, ref hasChange);
                Console.WriteLine("Changes successfully saved in the DB.");
            }
        }
        public async void TestForGetVisibleTeamArticles()
        {
            var options = new DbContextOptionsBuilder <NewsContext>()
                          .UseInMemoryDatabase(databaseName: "p3NewsService")
                          .Options;

            using (var context = new NewsContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                Repo r           = new Repo(context, new NullLogger <Repo>());
                var  teamArticle = new TeamArticle
                {
                    ArticleID = Guid.NewGuid(),
                    TeamID    = Guid.NewGuid(),
                    Title     = "Start of season",
                    Body      = "Let's win them all!",
                    IsVisible = true,
                    IsPinned  = true
                };

                r.TeamArticles.Add(teamArticle);
                await r.CommitSave();

                var teamArticle2 = await r.GetVisibleTeamArticles();

                var convertedList = (List <TeamArticle>)teamArticle2;
                Assert.True(convertedList[0].Equals(teamArticle));
            }
        }
示例#21
0
 static NewsRepository()
 {
     using (var db = new NewsContext())
     {
         _haberler = db.News.ToList();
     }
 }
示例#22
0
        private List <TagModel> GetChildrenInner(Guid id, string parentPath)
        {
            using (var context = new NewsContext())
            {
                var results = context
                              .Tags
                              .Where(x => x.ParentId == id)
                              .Select(x => new TagModel
                {
                    Id        = x.Id,
                    Title     = x.Title,
                    ShowInNav = x.ShowInNav,
                    SortOrder = x.SortOrder
                })
                              .ToList();

                results = GetChildren(results);

                results = _tagPathService.SetPaths(results);

                results = TagListExtensions.Order(results);

                return(results);
            }
        }
        public ActionResult Edit(News news, HttpPostedFileBase fileAvatar)
        {
            if (fileAvatar == null)
            {
                news.Avatar = null;
            }
            else
            {
                news.Avatar = fileAvatar.FileName.ToString();
            }
            NewsContext newsBL = new NewsContext();

            if (newsBL.Update(news) >= 0)
            {
                string SaveLocation = Server.MapPath("~/Content/imgs") + "\\" + news.Avatar;
                if (fileAvatar != null)
                {
                    try
                    {
                        fileAvatar.SaveAs(SaveLocation);
                    }
                    catch (Exception ex)
                    {
                        Response.Write("Error: " + ex.Message);
                    }
                }
                return(RedirectToAction("Index"));
            }
            else
            {
                return(View());
            }
        }
        public ActionResult Delete(int id)
        {
            NewsContext newsContext = new NewsContext();

            newsContext.Delete(id);
            return(RedirectToAction("Index"));
        }
示例#25
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, NewsContext context)
        {
            // Enable middleware to serve generated Swagger as a JSON endpoint.
            app.UseSwagger();

            // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
            // specifying the Swagger JSON endpoint.
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseCors("MyPolicy");

            app.UseAuthentication();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            DBInitializer.Initialize(context);
        }
        public ActionResult Create(News news, HttpPostedFileBase fileAvatar)
        {
            NewsContext newsBL = new NewsContext();

            if (fileAvatar == null)
            {
                return(RedirectToAction("Index"));
            }
            String nameFile = System.IO.Path.GetFileName(fileAvatar.FileName);

            news.Avatar = nameFile;
            if (newsBL.Create(news) > 0)
            {
                string SaveLocation = Server.MapPath("~/Content/imgs") + "\\" + nameFile;
                try
                {
                    fileAvatar.SaveAs(SaveLocation);
                }
                catch (Exception ex)
                {
                    Response.Write("Error: " + ex.Message);
                }
            }
            return(RedirectToAction("Index"));
        }
示例#27
0
文件: Startup.cs 项目: atadi96/felev6
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

            NewsContext news = app.ApplicationServices.GetRequiredService <NewsContext>();

            DbInitializer.Initialize(news);
        }
示例#28
0
 public ActionResult Edit(int id)
 {
     using (NewsContext dbModel = new NewsContext())
     {
         return(View(dbModel.New.Where(x => x.Id == id).FirstOrDefault()));
     }
 }
示例#29
0
        public ActionResult AddNews(NewsVM model)
        {
            if (ModelState.IsValid)
            {
                NewsDTO newNews = new NewsDTO
                {
                    Slug       = model.Headline.Replace(" ", "-").ToLower(),
                    Headline   = model.Headline,
                    Heading    = model.Heading,
                    NewsBody   = model.NewsBody,
                    NewsCaster = User.Identity.GetUserId <int>(),
                    UploadDate = DateTime.UtcNow,
                    TypeId     = model.TypeId
                };

                using (DbContext db = new DbContext())
                {
                    db.News.Add(newNews);
                    db.SaveChanges();
                }

                TempData["SM"] = "News added successfully, awaiting approval.";
                return(RedirectToAction("add-news"));
            }

            // if we get this far, there is an error
            model.NewsTypeList = new SelectList(NewsContext.GetAllNewsType(), "TypeId", "Description");
            return(View("AddNews", model));
        }
示例#30
0
 public UserService(UserManager <User> usermanager, SignInManager <User> signInManager, IMapper mapper, NewsContext _newsContext)
 {
     _signInManager = signInManager;
     _userManager   = usermanager;
     _mapper        = mapper;
     this.context   = _newsContext;
 }
示例#31
0
        public IActionResult EditNews(News news)
        {
            using (var client = new NewsContext())
            {
                // var result = client.News.Single(x => x.Id == news.Id);
                var result = client.News.Find(news.Id);

                result.Header   = news.Header;
                result.Intro    = news.Intro;
                result.Paragraf = news.Paragraf;
                result.Updated  = DateTime.Now;

                client.News.Attach(result);
                var entry = client.Entry(result);
                entry.State = EntityState.Modified;

                client.SaveChanges();
            }

            var removedMessage = string.Format("Nyheten med ID {0} ändrades.", news.Id);

            return(Json(new
            {
                success = true,
                Message = removedMessage
            }));
        }
 static void Main()
 {
     NewsContext newsContext = new NewsContext();
     Article article = new Article();
     article.Content = "New article";
     newsContext.Articles.Add(article);
     newsContext.SaveChanges();
 }
        private static void SeedDatabase()
        {
            var context = new NewsContext();

            CleanDatabase();

            SeedNews(context);

            context.SaveChanges();
        }
        private static void SeedNews(NewsContext context)
        {
            if (context.News.Any())
            {
                return;
            }

            var testNews = new List<News>()
            {
                new News { Title = "First news title!", Content = "First news content!", PublishDate = DateTime.Now },
                new News { Title = "Second news title!", Content = "Second news content!" , PublishDate = DateTime.Now },
                new News { Title = "Third news title!", Content = "Third news content!", PublishDate = DateTime.Now },
                new News { Title = "Fourth news title!", Content = "Fourth news content!", PublishDate = DateTime.Now }
            };

            foreach (var news in testNews)
            {
                context.News.Add(news);
            }
        }
示例#35
0
        static void ConcurrencyTest(NewsContext contextOne, NewsContext contextTwo)
        {
            var originalNews = contextTwo.News.Find(1);
            var contextOneNews = contextOne.News.Find(1);

            Console.WriteLine("Application started.\nText from DB: {0}\nEnter the corrected text:", contextOneNews.Content);

            string firstUserInput = Console.ReadLine();

            Console.WriteLine("User input: {0}", firstUserInput);
            contextOneNews.Content = firstUserInput;
            contextOne.SaveChanges();
            Console.WriteLine("Changes successfully saved in the DB.");
  
            var contextTwoNews = contextTwo.News.Find(1);

            Console.WriteLine("Application started.\nText from DB: {0}\nEnter the corrected text:", originalNews.Content);

            string secondUserInput = Console.ReadLine();

            contextTwoNews.Content = secondUserInput;

            try
            {
                contextTwo.SaveChanges();
                Console.WriteLine("Changes successfully saved in the DB.");
            }
            catch (DbUpdateConcurrencyException)
            {
                Console.WriteLine("Conflict! Text from DB: {0}. Enter the corrected text:", contextOneNews.Content);

                string secondUserSecondTry = Console.ReadLine();

                var newContextTwo = new NewsContext();
                var newContextTwoNews = newContextTwo.News.Find(1);

                newContextTwoNews.Content = secondUserSecondTry;
                newContextTwo.SaveChanges();
                Console.WriteLine("Changes successfully saved in the DB.");
            }
        }
        public void Post_ShouldReturn201CreatedPlusTheNewlyCreatedItemOnCorrectData()
        {
            var context = new NewsContext();
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("title", "New news"),
                new KeyValuePair<string, string>("content", "The news is new")
            });

            var response = httpClient.PostAsync("api/news", content).Result;
            var news = response.Content.ReadAsAsync<NewsModel>().Result;

            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
            Assert.AreEqual("New news", news.Title);
            Assert.AreEqual("The news is new", news.Content);
            Assert.AreEqual(4, context.News.Count());

            context.News.Attach(news);
            context.News.Remove(news);
            context.SaveChanges();
        }
        public void Delete_ShouldReturn200OKOnExistingItem()
        {
            var context = new NewsContext();
            var newNews = new NewsModel()
            {
                Title = "Delete news",
                Content = "Delete news",
                PublishDate = DateTime.Now
            };

            context.News.Add(newNews);
            context.SaveChanges();

            var response = httpClient.DeleteAsync(string.Format("api/news/{0}", newNews.Id)).Result;

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }
        public void Put_ShouldReturn200OKOnCorrectData()
        {
            var context = new NewsContext();
            var updateNews = new NewsModel()
            {
                Title = "Update news title",
                Content = "Update news content",
                PublishDate = DateTime.Now
            };
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("title", "Update news"),
                new KeyValuePair<string, string>("content", "Update news"),
                new KeyValuePair<string, string>("publishDate", "09/06/2015")
            });

            context.News.Add(updateNews);
            context.SaveChanges();

            var response = httpClient.PutAsync(string.Format("api/news/{0}", updateNews.Id), content).Result;

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            context.News.Remove(updateNews);
            context.SaveChanges();
        }
示例#39
0
        private void CleanDatabase()
        {
            using (var dbContext = new NewsContext())
            {
                dbContext.News.Delete();
                dbContext.Users.Delete();
                dbContext.SaveChanges();
            }

            this.repo = new NewsData(NewsContext.Create());

            var user = new ApplicationUser
            {
                UserName = "******",
                Email = "*****@*****.**"
            };

            this.repo.Users.Add(user);

            var news = new List<News>
            {
                new News
                {
                    Title = "Seeding repositories",
                    Content = "Some content.",
                    PublishDate = DateTime.Parse("2000-01-20")
                },
                new News
                {
                    Title = "Web and cloud exam",
                    Content = "There won't be any prepared unit tests.",
                    PublishDate = DateTime.Parse("2015-09-12")
                }
            };
               
            user.News.Add(news[0]);
            user.News.Add(news[1]);

            this.repo.Users.Add(user);
            this.repo.SaveChanges();
        }
 private static void CleanDatabase()
 {
     // Clean all data in all database tables
     var dbContext = new NewsContext();
     dbContext.News.Delete();
     dbContext.Users.Delete();
     dbContext.SaveChanges();
 }
        public void CreateNews_Should_Return_200OK_And_The_Created_News()
        {
            var context = new NewsContext();

            var newNewsData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string> ("Title", "First title"),
                new KeyValuePair<string, string> ("Content", "First contet"),
                new KeyValuePair<string, string> ("PublishDate", DateTime.Now.AddDays(-1).ToShortDateString())
            });

            var initialCount = context.News.Count();
            var response = httpClient.PostAsync(CreateNewsEndpoint, newNewsData).Result;
            var updatedCount = context.News.Count();

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreEqual(initialCount + 1, updatedCount);
        }
        static void Main()
        {
            var context = new NewsContext();

            Console.WriteLine(context.News.Count());
        }
        public void CreateNews_Should_Return_400_BadRequest_If_Data_Is_Invalid()
        {
            var context = new NewsContext();

            var newNewsData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string> ("Title", "First title"),
                new KeyValuePair<string, string> ("PublishDate", DateTime.Now.AddDays(-1).ToShortDateString())
            });

            var initialCount = context.News.Count();
            var response = httpClient.PostAsync(CreateNewsEndpoint, newNewsData).Result;
            var updatedCount = context.News.Count();

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.AreEqual(initialCount, updatedCount);
        }
        private static void CleanDatabase()
        {
            var context = new NewsContext();

            context.News.Delete();
        }
        public void ModifyNews_Should_Return_200OK_And_Updated_News()
        {
            var context = new NewsContext();
            var newsToUpdate = context.News.First();

            var newNewsData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string> ("Title", "First title"),
                new KeyValuePair<string, string> ("Content", "First content"),
            });

            var updateNewsResponse = httpClient.PutAsync(UpdateNewsEndpoint + newsToUpdate.Id, newNewsData).Result;
            var updatedNews = updateNewsResponse.Content.ReadAsAsync<News>().Result;

            Assert.AreEqual(HttpStatusCode.OK, updateNewsResponse.StatusCode);
            Assert.AreEqual("First title", updatedNews.Title);
            Assert.AreEqual("First content", updatedNews.Content);
        }
        public void DeleteNews_Should_Return_200OK()
        {
            var context = new NewsContext();
            var newsToDeleteId = context.News.First().Id;
            var updateNewsResponse = httpClient.DeleteAsync(DeleteNewsEndpoint + newsToDeleteId).Result;

            Assert.AreEqual(HttpStatusCode.OK, updateNewsResponse.StatusCode);

            var getAllNews = httpClient.GetAsync(GetAllNewsEndpoint).Result;
            var returnedNewsId = getAllNews.Content.ReadAsAsync<List<News>>().Result
                .Select(n => n.Id)
                .ToList();

            CollectionAssert.DoesNotContain(returnedNewsId, newsToDeleteId);
        }
        public void ModifyNews_Should_Return_400_BadRequest_If_Data_Is_Invalid()
        {
            var context = new NewsContext();
            var newsToUpdate = context.News.First();

            var newNewsData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string> ("Title", "First title"),
                new KeyValuePair<string, string> ("Content", "F")
            });

            var updateNewsResponse = httpClient.PutAsync(UpdateNewsEndpoint + newsToUpdate.Id, newNewsData).Result;

            Assert.AreEqual(HttpStatusCode.BadRequest, updateNewsResponse.StatusCode);
        }