Exemple #1
0
        public IActionResult PostStory([FromBody] NewsStory story)
        {
            Console.WriteLine($"PostStory controller: {story.Title} {story.Author} {story.Tag}");
            broker.Put(story);

            return(Ok());
        }
        public void ModifyNewsStory_IncorrectData_ShouldThrowException()
        {
            var typeOfRepository = typeof(GenericRepository <NewsStory>);
            var repository       = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository <NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title       = "",
                Content     = "TestNewsStory1Modified",
                PublishDate = DateTime.Now,
            };

            var newsStoryEntity = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory1");

            newsStoryEntity.Title       = newsStoryExpected.Title;
            newsStoryEntity.Content     = newsStoryExpected.Content;
            newsStoryEntity.PublishDate = newsStoryExpected.PublishDate;

            try
            {
                this.TestNewsContext.SaveChanges();
            }
            catch (DbEntityValidationException)
            {
                var entry = this.TestNewsContext.Entry(newsStoryEntity);
                entry.State = EntityState.Detached;
                throw;
            }
        }
        public void CreateNewsStory_IncorrectData_ShouldThrowException()
        {
            var typeOfRepository = typeof(GenericRepository<NewsStory>);
            var repository = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository<NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title = "",
                Content = "TestNewsStory4",
                PublishDate = DateTime.Now.AddDays(-20)
            };

            repository.Add(newsStoryExpected);

            try
            {
                this.TestNewsContext.SaveChanges();
            }
            catch (DbEntityValidationException)
            {

                var entry = this.TestNewsContext.Entry(newsStoryExpected);
                entry.State = EntityState.Detached;
                throw;
            }
        }
        public void CreateNewsStory_IncorrectData_ShouldThrowException()
        {
            var typeOfRepository = typeof(GenericRepository <NewsStory>);
            var repository       = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository <NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title       = "",
                Content     = "TestNewsStory4",
                PublishDate = DateTime.Now.AddDays(-20)
            };

            repository.Add(newsStoryExpected);

            try
            {
                this.TestNewsContext.SaveChanges();
            }
            catch (DbEntityValidationException)
            {
                var entry = this.TestNewsContext.Entry(newsStoryExpected);
                entry.State = EntityState.Detached;
                throw;
            }
        }
        public void ModifyNewsStory_CorrectData_ShouldModifyTheNewsStoryCorrectly()
        {
            var typeOfRepository = typeof(GenericRepository <NewsStory>);
            var repository       = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository <NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title       = "TestNewsStory1Modified",
                Content     = "TestNewsStory1Modified",
                PublishDate = DateTime.Now,
            };

            var newsStoryEntity = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory1");

            newsStoryEntity.Title       = newsStoryExpected.Title;
            newsStoryEntity.Content     = newsStoryExpected.Content;
            newsStoryEntity.PublishDate = newsStoryExpected.PublishDate;

            this.TestNewsContext.SaveChanges();

            var newsStoryEntityModified = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory1Modified");

            Assert.AreEqual(newsStoryExpected, newsStoryEntityModified);
        }
Exemple #6
0
        public void ModifyNewsStory_CorrectData_ShouldModifyNewsStory()
        {
            var mockContext = new Mock <INewsData>();

            mockContext.Setup(m => m.News)
            .Returns(this.mocks.NewsStoriesRepositoryMock.Object);

            var newsStoriesController = new NewsStoriesController(mockContext.Object)
            {
                Request       = new HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            var publishDate = DateTime.Now.AddDays(-40);

            var editNewsStoryResponse = newsStoriesController.EditNewsStory(1, new NewsStoryBindingModel()
            {
                Title       = "TestNewsStory1Modified",
                Content     = "TestNewsStory1Modified",
                PublishDate = publishDate
            }).ExecuteAsync(new CancellationToken()).Result;

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

            var newsStoryModifiedExpected = new NewsStory()
            {
                Title       = "TestNewsStory1Modified",
                Content     = "TestNewsStory1Modified",
                PublishDate = publishDate
            };

            var newsStoryModified = this.mocks.NewsStoriesRepositoryMock.Object.Find(1);

            Assert.AreEqual(newsStoryModifiedExpected, newsStoryModified);
        }
Exemple #7
0
        public ActionResult DeleteConfirmed(int id)
        {
            NewsStory newsStory = db.NewsStories.Find(id);

            db.NewsStories.Remove(newsStory);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #8
0
        public async Task <IEnumerable <NewsStory> > GetNewsStoryListAsync(int startAtOffset = -1, int perPageLimit = -1)
        {
            var newestStoryList = new List <NewsStory>();

            // Get full list of keys
            var storyKeys = await GetStoryKeysAsync();

            int i             = (startAtOffset <= 0 ? 0 : startAtOffset);
            var pageStopIndex = perPageLimit <= 0 ? NewsSourceConfig.DefaultStoryLimit : (startAtOffset + perPageLimit);

            _logger.LogDebug("Paging startAtOffset: {startAtOffset}, page: {page} [pageStopIndex: {pageStopIndex}] ", startAtOffset, perPageLimit, pageStopIndex);

            for (; i < storyKeys.Count; i++)
            {
                if (i >= pageStopIndex)
                {
                    break;
                }

                // Jump to key at startAtOffset
                var storyKey = storyKeys[i];

                // Check for key in cache
                NewsStory cacheEntry;
                if (!_cache.TryGetValue(storyKey, out cacheEntry))
                {
                    // Get detail for key
                    var storyDetail = await GetStoryDetailAsync(storyKey);

                    if (storyDetail == null)
                    {
                        _logger.LogInformation("Story {storyKey} has empty detail. ", storyKey);
                        continue;
                    }

                    // Create entry
                    var newsStory = new NewsStory()
                    {
                        Id     = storyKey,
                        Title  = storyDetail.title,
                        URL    = storyDetail.url ?? "",
                        Detail = storyDetail.text ?? ""
                    };

                    var cacheEntryOptions = new MemoryCacheEntryOptions()
                                            .SetSize(1)
                                            .SetAbsoluteExpiration(TimeSpan.FromMinutes(CACHE_TTL_ITEM_MAX_MINS));

                    // Store in cache
                    cacheEntry = _cache.Set(storyKey, newsStory, cacheEntryOptions);
                }
                newestStoryList.Add(cacheEntry);
            }

            return(newestStoryList);
        }
Exemple #9
0
 public ActionResult Edit([Bind(Include = "ID,Title,SubTitle,Author,Date,StoryImgPath,StoryBody")] NewsStory newsStory)
 {
     if (ModelState.IsValid)
     {
         db.Entry(newsStory).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(newsStory));
 }
        private bool FindNewsStoryByID(int id, out NewsStory newsStory)
        {
            newsStory = this.Data.News.Find(id);

            if (newsStory == null)
            {
                return(false);
            }

            return(true);
        }
Exemple #11
0
        public ActionResult Create([Bind(Include = "ID,Title,SubTitle,Author,Date,StoryImgPath,StoryBody")] NewsStory newsStory)
        {
            if (ModelState.IsValid)
            {
                db.NewsStories.Add(newsStory);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(newsStory));
        }
        public ActionResult Edit([Bind(Include = "NewsStoryID,UserId,Title,Content,DateCreated")] NewsStory newsStory)
        {
            if (ModelState.IsValid)
            {
                db.Entry(newsStory).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(newsStory));
        }
        public ActionResult NewsStory(ContentModel contentModel)
        {
            var model = new NewsStory(contentModel?.Content);

            model.Metadata = new ViewMetadata
            {
                PageTitle   = model.Name,
                Description = model.Description
            };

            return(CurrentTemplate(model));
        }
Exemple #14
0
        void rprNews_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
            {
                return;
            }
            Literal    litStory = (Literal)e.Item.FindControl("litStory");
            HtmlAnchor linkNews = (HtmlAnchor)e.Item.FindControl("linkNews");
            NewsStory  story    = (NewsStory)e.Item.DataItem;

            litStory.Text = string.Format("{0:MM.dd.yy}-{1}", story.PubDate, story.Title);
            linkNews.HRef = "/news-story.aspx?Id=" + story.ID;
        }
Exemple #15
0
        public void Create(NewsStory newsStory)
        {
            var newStory = new NewStory()
            {
                Title            = newsStory.TopTitle,
                NewsStory        = newsStory.Body,
                ImagePath        = newsStory.Imageloc,
                SupplierID       = newsStory.Supplier.SupplierId,
                SupplierStoryRef = $"{newsStory.Id}",
                AddedDateTime    = DateTime.Now
            };

            _newStoryRepository.Create(newStory);
        }
Exemple #16
0
        // GET: News/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NewsStory newsStory = db.NewsStories.Find(id);

            if (newsStory == null)
            {
                return(HttpNotFound());
            }
            return(View(newsStory));
        }
 public static NewsStoryDTO ToDTO(NewsStory ns)
 {
     return(new NewsStoryDTO {
         Id = ns.Id,
         Title = ns.Title,
         SecondaryTitle = ns.SecondaryTitle,
         StoryTypeDescription = ((StoryTypes)ns.StoryType).FormattedName(),
         Author = AuthorDTO.ToDTO(ns.Author),
         PublishedDate = ns.PublishedDate,
         PreviewHtml = ns.PreviewHtml,
         TopSectionHtml = ns.TopSectionHtml,
         MidSectionHtml = ns.MidSectionHtml,
         StoryImage = $"/images/news/{ns.StoryImage}",
         TitleUrl = StringExtensions.URLFriendly(ns.Title)
     });
 }
        public void ModifyNewsStory_NonExistingNewsStory_ShouldThrowException()
        {
            var typeOfRepository = typeof(GenericRepository <NewsStory>);
            var repository       = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository <NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title       = "",
                Content     = "TestNewsStory1Modified",
                PublishDate = DateTime.Now,
            };

            var newsStoryEntity = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory10");

            newsStoryEntity.Title       = newsStoryExpected.Title;
            newsStoryEntity.Content     = newsStoryExpected.Content;
            newsStoryEntity.PublishDate = newsStoryExpected.PublishDate;
        }
        public void CreateNewsStory_CorrectData_ShouldCreateAndReturnNewsStory()
        {
            var typeOfRepository = typeof(GenericRepository <NewsStory>);
            var repository       = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository <NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title       = "TestNewsStory4",
                Content     = "TestNewsStory4",
                PublishDate = DateTime.Now
            };

            repository.Add(newsStoryExpected);

            this.TestNewsContext.SaveChanges();

            var newsStoryCreated = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory4");

            Assert.AreEqual(newsStoryExpected, newsStoryCreated);
        }
        public void CreateNewsStory_CorrectData_ShouldCreateAndReturnNewsStory()
        {
            var typeOfRepository = typeof(GenericRepository<NewsStory>);
            var repository = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository<NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title = "TestNewsStory4",
                Content = "TestNewsStory4",
                PublishDate = DateTime.Now
            };

            repository.Add(newsStoryExpected);

            this.TestNewsContext.SaveChanges();

            var newsStoryCreated = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory4");

            Assert.AreEqual(newsStoryExpected, newsStoryCreated);
        }
        public IHttpActionResult CreateNewsStory([FromBody] NewsStoryBindingModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var newsStory = new NewsStory()
            {
                Title       = model.Title,
                Content     = model.Content,
                PublishDate = model.PublishDate
            };

            this.Data.News.Add(newsStory);

            try
            {
                this.Data.SaveChanges();

                var newNewsStory = this.Data.News.All().FirstOrDefault(n => n.Title == model.Title);
                if (newNewsStory == null)
                {
                    return(this.BadRequest("There was an error creating news story"));
                }

                return(this.Created(string.Format("{0}", newNewsStory.Id), newNewsStory));
            }
            catch (DbUpdateException ex)
            {
                return(this.BadRequest(string.Format("A news story with title {0} already exists.", model.Title)));
            }
            catch (Exception ex)
            {
                return(this.BadRequest("There was a problem creating news story. Please try again"));
            }
        }
Exemple #22
0
 public void Delete(NewsStory newsStory)
 {
     throw new NotImplementedException();
 }
        public void ModifyNewsStory_CorrectData_ShouldModifyTheNewsStoryCorrectly()
        {
            var typeOfRepository = typeof(GenericRepository<NewsStory>);
            var repository = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository<NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title = "TestNewsStory1Modified",
                Content = "TestNewsStory1Modified",
                PublishDate = DateTime.Now,
            };

            var newsStoryEntity = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory1");

            newsStoryEntity.Title = newsStoryExpected.Title;
            newsStoryEntity.Content = newsStoryExpected.Content;
            newsStoryEntity.PublishDate = newsStoryExpected.PublishDate;

            this.TestNewsContext.SaveChanges();

            var newsStoryEntityModified = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory1Modified");

            Assert.AreEqual(newsStoryExpected, newsStoryEntityModified);
        }
        public void ModifyNewsStory_IncorrectData_ShouldThrowException()
        {
            var typeOfRepository = typeof(GenericRepository<NewsStory>);
            var repository = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository<NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title = "",
                Content = "TestNewsStory1Modified",
                PublishDate = DateTime.Now,
            };

            var newsStoryEntity = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory1");

            newsStoryEntity.Title = newsStoryExpected.Title;
            newsStoryEntity.Content = newsStoryExpected.Content;
            newsStoryEntity.PublishDate = newsStoryExpected.PublishDate;

            try
            {
                this.TestNewsContext.SaveChanges();
            }
            catch (DbEntityValidationException)
            {
                var entry = this.TestNewsContext.Entry(newsStoryEntity);
                entry.State = EntityState.Detached;
                throw;
            }
        }
        public void ModifyNewsStory_NonExistingNewsStory_ShouldThrowException()
        {
            var typeOfRepository = typeof(GenericRepository<NewsStory>);
            var repository = Activator.CreateInstance(
                typeOfRepository, this.TestNewsContext) as IRepository<NewsStory>;

            var newsStoryExpected = new NewsStory()
            {
                Title = "",
                Content = "TestNewsStory1Modified",
                PublishDate = DateTime.Now,
            };

            var newsStoryEntity = repository.All().FirstOrDefault(n => n.Title == "TestNewsStory10");

            newsStoryEntity.Title = newsStoryExpected.Title;
            newsStoryEntity.Content = newsStoryExpected.Content;
            newsStoryEntity.PublishDate = newsStoryExpected.PublishDate;
        }
        public ActionResult Create([Bind(Include = "Title,Content")] NewsStory newsStory, HttpPostedFileBase image)
        {
            if (ModelState.IsValid)
            {
                if (image != null && image.ContentLength > 0)
                {
                    //Creating new Image entity
                    var newsImage = new Image
                    {
                        ImageName = System.IO.Path.GetFileName(image.FileName),
                    };

                    //Setting ImageContent as a byte array of the image file
                    using (var reader = new System.IO.BinaryReader(image.InputStream))
                    {
                        newsImage.ImageContent = reader.ReadBytes(image.ContentLength);
                    }

                    //Resizing the image
                    WebImage resizedImage = new WebImage(newsImage.ImageContent);
                    resizedImage.Resize(300, 200, false);
                    newsImage.ImageContent = resizedImage.GetBytes();
                    newsStory.Image        = newsImage;
                }

                //Creating a List to hold the KeyWord objects that are going to be associated with the current NewsStory
                List <KeyWord> allkeywords = new List <KeyWord>();

                var inputKeywords = Request["KeyWords"];
                var keywords      = inputKeywords.Split(',').Select(p => p.Trim());
                foreach (var word in keywords)
                {
                    KeyWord keyword = new KeyWord();
                    keyword.keyWordContent = word;

                    bool exists = db.KeyWords.AsEnumerable().Where(c => c.keyWordContent.Equals(word)).Count() > 0;

                    /*Checking if the keyword already exists in the KeyWords DB table
                     * and if exists, mapping the current NewsStory to the existing keywords*/
                    if (exists)
                    {
                        var existingkeys = db.KeyWords.Where(c => c.keyWordContent.Equals(word)).ToList();
                        foreach (var kw in existingkeys)
                        {
                            allkeywords.Add(kw);
                        }
                    }
                    else
                    {
                        allkeywords.Add(keyword);
                    }
                }

                newsStory.KeyWords    = allkeywords;
                newsStory.DateCreated = DateTime.Now;
                newsStory.UserId      = User.Identity.GetUserId();

                db.NewsStories.Add(newsStory);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(newsStory));
        }
 public NewsLandingPageViewModel()
 {
     NewsCategory = new Category();
     TopStory     = new NewsStory();
     OtherStories = new List <NewsStory>();
 }
 public NewsLandingPageViewModel()
 {
     NewsCategory = new Category();
     TopStory = new NewsStory();
     OtherStories = new List<NewsStory>();
 }
Exemple #29
0
        public void Get_NewsStory_Object_From_NewStory_Service()
        {
            _newsStory = _newStoryService.FetchNewsStory(xmlTestFile);

            _newsStory.Should().NotBeNull().And.BeOfType <NewsStory>().Which.Id.Equals("Apples_64");
        }