private int GetNoOfTotalPages(int pageSize, SearchUsersQueryResponse response)
        {
            if (pageSize < response.RecordCount)
            {
                var remainingResultCountForFinalPage = response.RecordCount % pageSize;
                var totalPages = response.RecordCount / pageSize;
                return(remainingResultCountForFinalPage > 0 ? totalPages + 1 : totalPages);
            }

            return(1);
        }
        public async Task ThenAPageOfMatchingUsersIsReturned()
        {
            var pageSize   = 500;
            var pageNumber = 1;
            var criteria   = "abc";

            var users = new List <User>
            {
                new User {
                    FirstName = "Joe", LastName = "Bloggs", Id = "1"
                },
                new User {
                    FirstName = "John", LastName = "Smith", Id = "2"
                },
                new User {
                    FirstName = "Jane", LastName = "Doe", Id = "3"
                }
            };

            var usersResponse = new SearchUsersQueryResponse
            {
                Users       = users.ToArray(),
                RecordCount = 1400
            };

            Mediator.Setup(x => x.SendAsync(It.Is <SearchUsersQuery>(q => q.Criteria == criteria && q.PageNumber == pageNumber && q.PageSize == pageSize))).ReturnsAsync(usersResponse);
            users.ForEach(x => UrlHelper.Setup(y => y.Route("Show", It.Is <object>(o => o.IsEquivalentTo(new { x.Id })))).Returns($"/api/users/{x.Id}"));

            var response = await Controller.Search(criteria, pageSize, pageNumber);

            Assert.IsNotNull(response);
            Assert.IsInstanceOf <OkNegotiatedContentResult <PagedApiResponseViewModel <UserSummaryViewModel> > >(response);
            var model = response as OkNegotiatedContentResult <PagedApiResponseViewModel <UserSummaryViewModel> >;

            model?.Content.Should().NotBeNull();
            model.Content.Page.Should().Be(pageNumber);
            model.Content.TotalPages.Should().Be(3);
            model.Content.Data.Should().HaveCount(users.Count);

            for (var i = 0; i < users.Count; i++)
            {
                model.Content.Data[i].ShouldBeEquivalentTo(users[i], options => options.ExcludingMissingMembers());
                model.Content.Data[i].Href.Should().Be($"/api/users/{users[i].Id}");
            }

            Logger.Verify(x => x.Info($"Searching for user accounts using criteria {criteria}."), Times.Once);
        }