Exemplo n.º 1
0
        public void ShouldDisplaySingleDateIfToDateAndFromDateAreTheSame()
        {
            var newsroomViewModel = new NewsroomViewModel {
                DateRange = "customdate", DateFrom = new DateTime(2016, 01, 01), DateTo = new DateTime(2016, 01, 01)
            };

            var result = newsroomViewModel.GetActiveDateFilter();

            result.Should().Be("01/01/2016");
        }
Exemplo n.º 2
0
        public void HasActiveFilterShouldReturnFalseWhenNoActiveFiltersExsist()
        {
            var newsroom = BuildNewsRoom(categories: new List <string> {
                "Zebras", "Asses", "Oxen"
            });
            var newsroomViewModel = new NewsroomViewModel(newsroom, EmailAlertsUrl);
            var result            = newsroomViewModel.HasActiveFilter();

            result.Should().BeFalse();
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Index(NewsroomViewModel model, [FromQuery] int page, [FromQuery] int pageSize)
        {
            if (model.DateFrom == null && model.DateTo == null && string.IsNullOrEmpty(model.DateRange))
            {
                if (ModelState["DateTo"] != null && ModelState["DateTo"].Errors.Count > 0)
                {
                    ModelState["DateTo"].Errors.Clear();
                }
                if (ModelState["DateFrom"] != null && ModelState["DateFrom"].Errors.Count > 0)
                {
                    ModelState["DateFrom"].Errors.Clear();
                }
            }

            var queries = new List <Query>();

            if (!string.IsNullOrEmpty(model.Tag))
            {
                queries.Add(new Query("tag", model.Tag));
            }
            if (!string.IsNullOrEmpty(model.Category))
            {
                queries.Add(new Query("Category", model.Category));
            }
            if (model.DateFrom.HasValue)
            {
                queries.Add(new Query("DateFrom", model.DateFrom.Value.ToString("yyyy-MM-dd")));
            }
            if (model.DateTo.HasValue)
            {
                queries.Add(new Query("DateTo", model.DateTo.Value.ToString("yyyy-MM-dd")));
            }

            var httpResponse = await _repository.Get <Newsroom>(queries : queries);

            if (!httpResponse.IsSuccessful())
            {
                return(httpResponse);
            }

            var newsRoom = httpResponse.Content as Newsroom;

            var urlSetting = _config.GetEmailAlertsNewSubscriberUrl(_businessId.ToString());

            model.AddQueryUrl(new QueryUrl(Url?.ActionContext.RouteData.Values, Request?.Query));
            _filteredUrl.SetQueryUrl(model.CurrentUrl);
            model.AddFilteredUrl(_filteredUrl);

            DoPagination(newsRoom, model, page, pageSize);

            model.AddNews(newsRoom);
            model.AddUrlSetting(urlSetting);

            return(View(model));
        }
Exemplo n.º 4
0
        public void ShouldReturnToAndFromDatesIfDateRangeIsCustomDate()
        {
            var newsroomViewModel = new NewsroomViewModel()
            {
                DateRange = "customdate", DateFrom = new DateTime(2016, 01, 01), DateTo = new DateTime(2016, 02, 01)
            };

            var result = newsroomViewModel.GetActiveDateFilter();

            result.Should().Be("01/01/2016 to 01/02/2016");
        }
Exemplo n.º 5
0
        public void ShouldReturnMonthNameIfDateRangeIsMonth()
        {
            var newsroomViewModel = new NewsroomViewModel()
            {
                DateFrom = new DateTime(2016, 01, 01), DateTo = new DateTime(2016, 01, 31)
            };

            var result = newsroomViewModel.GetActiveDateFilter();

            result.Should().Be("January 2016");
        }
Exemplo n.º 6
0
        public void ShouldGiveCategoriesInAlphabeticalOrder()
        {
            var newsroom = BuildNewsRoom(categories: new List <string> {
                "Zebras", "Asses", "Oxen"
            });

            var newsroomViewModel = new NewsroomViewModel(newsroom, EmailAlertsUrl);

            var categories = newsroomViewModel.Categories;

            categories.Should().ContainInOrder("Asses", "Oxen", "Zebras");
        }
Exemplo n.º 7
0
        public async Task ShouldReturnCurrentURLForPagination()
        {
            // Arrange
            int numItems   = 10;
            var controller = SetUpController(numItems);
            var model      = new NewsroomViewModel();

            // Act
            await controller.Index(model, 0, MaxNumberOfItemsPerPage);

            // Assert
            model.Pagination.CurrentUrl.Should().NotBeNull();
        }
Exemplo n.º 8
0
        public async Task ShouldReturnEmptyPaginationObjectIfNoNewsArticlesExist()
        {
            // Arrange
            const int zeroItems  = 0;
            var       controller = SetUpController(zeroItems);
            var       model      = new NewsroomViewModel();

            // Act
            await controller.Index(model, 0, MaxNumberOfItemsPerPage);

            // Assert
            model.Pagination.Should().NotBeNull();
        }
Exemplo n.º 9
0
        public void HasActiveFilterShouldReturnFalseWhenDateFilterIsInvalid()
        {
            var newsroom = BuildNewsRoom(categories: new List <string> {
                "Zebras", "Asses", "Oxen"
            });
            var newsroomViewModel = new NewsroomViewModel(newsroom, EmailAlertsUrl);

            newsroomViewModel.DateFrom = DateTime.Now;
            newsroomViewModel.DateTo   = DateTime.Now.AddDays(-5);

            var result = newsroomViewModel.HasActiveFilter();

            result.Should().BeFalse();
        }
Exemplo n.º 10
0
        public async Task IfSpecifiedPageNumIsImpossibleThenActualPageNumWillBeAdjustedAccordingly(
            int specifiedPageNumber,
            int numItems,
            int expectedPageNumber)
        {
            // Arrange
            var controller = SetUpController(numItems);
            var model      = new NewsroomViewModel();

            // Act
            await controller.Index(model, specifiedPageNumber, MaxNumberOfItemsPerPage);

            // Assert
            model.Pagination.CurrentPageNumber.Should().Be(expectedPageNumber);
        }
Exemplo n.º 11
0
        public void HasActiveFilterShouldReturnTrueWhenActiveFiltersExist()
        {
            var newsroom = BuildNewsRoom(categories: new List <string> {
                "Zebras", "Asses", "Oxen"
            });
            var newsroomViewModel = new NewsroomViewModel(newsroom, EmailAlertsUrl);

            newsroomViewModel.Category = "Zebras";
            newsroomViewModel.Tag      = "Tag";
            newsroomViewModel.DateFrom = DateTime.Now.AddDays(-5);
            newsroomViewModel.DateTo   = DateTime.Now;

            var result = newsroomViewModel.HasActiveFilter();

            result.Should().BeTrue();
        }
Exemplo n.º 12
0
        private void DoPagination(Newsroom newsRoom, NewsroomViewModel model, int currentPageNumber, int pageSize)
        {
            if (newsRoom != null && newsRoom.News.Any())
            {
                var paginatedNews = PaginationHelper.GetPaginatedItemsForSpecifiedPage(
                    newsRoom.News,
                    currentPageNumber,
                    "news articles",
                    pageSize,
                    _config.GetNewsDefaultPageSize("stockportgov"));

                newsRoom.News               = paginatedNews.Items;
                model.Pagination            = paginatedNews.Pagination;
                model.Pagination.CurrentUrl = model.CurrentUrl;
            }
            else
            {
                model.Pagination = new Pagination();
            }
        }
Exemplo n.º 13
0
        public async Task PaginationShouldResultInCorrectNumItemsOnPageAndCorrectNumPages(
            int totalNumItems,
            int requestedPageNumber,
            int expectedNumItemsOnPage,
            int expectedNumPages)
        {
            // Arrange
            var controller = SetUpController(totalNumItems);
            var model      = new NewsroomViewModel();

            // Act
            var actionResponse = await controller.Index(model, requestedPageNumber, MaxNumberOfItemsPerPage) as ViewResult;

            // Assert
            var viewModel = actionResponse.ViewData.Model as NewsroomViewModel;
            var newsroom  = viewModel.Newsroom;

            newsroom.News.Count.Should().Be(expectedNumItemsOnPage);
            model.Pagination.TotalPages.Should().Be(expectedNumPages);
        }
Exemplo n.º 14
0
        public void ShouldSetEmailAlertsUrlWithoutTopicId()
        {
            var newsroomViewModel = new NewsroomViewModel(BuildNewsRoom(emailAlertsTopicId: string.Empty), EmailAlertsUrl);

            newsroomViewModel.EmailAlertsUrl.Should().Be(EmailAlertsUrl);
        }
Exemplo n.º 15
0
        public void ShouldSetEmailAlertsUrlWithTopicId()
        {
            var newsroomViewModel = new NewsroomViewModel(BuildNewsRoom(emailAlertsTopicId: "tag-id"), EmailAlertsUrl);

            newsroomViewModel.EmailAlertsUrl.Should().Be(string.Concat(EmailAlertsUrl, "?topic_id=", _newsroom.EmailAlertsTopicId));
        }