예제 #1
0
        public async void ViewFeedback_Filtered_ReturnsFilteredFeedbackEntries()
        {
            FeedbackViewResourceParameters parameters = new FeedbackViewResourceParameters {
                FeedbackScore = 4
            };
            int feedbackID = 2;

            _mockDataStore.Setup(x => x.ViewSubmittedFeedbackEntries(parameters)).ReturnsAsync(
                PagedList <FeedbackEntry> .Create(new List <FeedbackEntry>
            {
                new FeedbackEntry
                {
                    Feedback = new Feedback {
                        FeedbackID = feedbackID, FeedbackScore = parameters.FeedbackScore.Value
                    }
                }
            }.AsQueryable().OrderBy(x => x), 1, 1, x => x));

            SetUpControllerContext();

            var result = await _sut.ViewFeedbackEntries(parameters);

            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <PagedList <FeedbackEntry> >(((OkObjectResult)result).Value);
            Assert.Single((List <FeedbackEntry>)((OkObjectResult)result).Value);

            var feedbackEntries = (List <FeedbackEntry>)((OkObjectResult)result).Value;

            Assert.Equal(feedbackID, feedbackEntries[0].Feedback.FeedbackID);
        }
예제 #2
0
        public async Task <PagedList <FeedbackEntry> > ViewSubmittedFeedbackEntries(FeedbackViewResourceParameters parameters)
        {
            var responseEntries =
                await Task.FromResult(
                    _context.Feedback.Where(x =>
                                            parameters.FeedbackScore == null || x.FeedbackScore == parameters.FeedbackScore)
                    .OrderByDescending(x => x.SubmissionDate));

            return(PagedList <FeedbackEntry> .Create <IFeedback>(responseEntries, parameters.PageNumber, parameters.PageSize, ConstructFeedbackEntry));
        }
        public async Task <IActionResult> ViewFeedbackEntries([FromQuery] FeedbackViewResourceParameters parameters)
        {
            PagedList <FeedbackEntry> feedbackEntries = null;

            feedbackEntries = await _dataStore.ViewSubmittedFeedbackEntries(parameters);

            var paginationMetadata = CreatePaginationMetadata(feedbackEntries, parameters);

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata));

            return(Ok(feedbackEntries));
        }
        string CreateFeedbackResourceUri(FeedbackViewResourceParameters parameters,
                                         ResourceUriType type)
        {
            switch (type)
            {
            case ResourceUriType.NextPage:
                return(_urlHelper.Link("ViewFeedbackEntries",
                                       CreateRouteValues(parameters.PageNumber + 1, parameters.PageSize, parameters.FeedbackScore)));

            case ResourceUriType.PreviousPage:
                return(_urlHelper.Link("ViewFeedbackEntries",
                                       CreateRouteValues(parameters.PageNumber - 1, parameters.PageSize, parameters.FeedbackScore)));

            default:
                return(_urlHelper.Link("ViewFeedbackEntries",
                                       CreateRouteValues(parameters.PageNumber, parameters.PageSize, parameters.FeedbackScore)));
            }
        }
        object CreatePaginationMetadata(PagedList <FeedbackEntry> feedbackEntries, FeedbackViewResourceParameters parameters)
        {
            var nextPageLink = feedbackEntries.HasNextPage
                ? CreateFeedbackResourceUri(parameters, ResourceUriType.NextPage)
                : null;

            var previousPageLink = feedbackEntries.HasPreviousPage
                ? CreateFeedbackResourceUri(parameters, ResourceUriType.PreviousPage)
                : null;

            return(new
            {
                totalRecords = feedbackEntries.TotalRecordCount,
                currentPage = feedbackEntries.CurrentPage,
                pageSize = feedbackEntries.PageSize,
                totalPages = feedbackEntries.TotalPages,
                nextPageLink,
                previousPageLink
            });
        }
예제 #6
0
        public async void ViewFeedback_NonFiltered_ReturnsAllFeedbackEntries()
        {
            FeedbackViewResourceParameters parameters = new FeedbackViewResourceParameters();
            int feedbackID = 1;

            _mockDataStore.Setup(x => x.ViewSubmittedFeedbackEntries(parameters)).ReturnsAsync(
                PagedList <FeedbackEntry> .Create(new List <FeedbackEntry>
            {
                new FeedbackEntry
                {
                    Feedback = new Feedback {
                        FeedbackID = feedbackID
                    },
                    Game = new Game {
                        GameID = 1
                    },
                    Gamer = new Player {
                        PlayerID = 1
                    },
                    GameSession = new GameSession {
                        GameSessionID = 1
                    }
                }
            }.AsQueryable().OrderBy(x => x), 1, 1, x => x));

            SetUpControllerContext();

            var result = await _sut.ViewFeedbackEntries(parameters);

            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <PagedList <FeedbackEntry> >(((OkObjectResult)result).Value);
            Assert.Single((List <FeedbackEntry>)((OkObjectResult)result).Value);

            var feedbackEntries = (List <FeedbackEntry>)((OkObjectResult)result).Value;

            Assert.Equal(feedbackID, feedbackEntries[0].Feedback.FeedbackID);
        }