private foundItemCM buildFoundItemCM(Item item)
        {
            ReadModelMapper <Item, foundItemCM> mapper = new ReadModelMapper <Item, foundItemCM>();
            foundItemCM cm = mapper.mapDataModelToViewModel(item);

            return(cm);
        }
        public IPagedList <foundItemCM> searchItemsToPagedList(string searchString, string getItemsBy, int?page)
        {
            int pageNumber = (page ?? 1);
            int pageSize   = 20;

            IQueryable <Item> query = Search(searchString, getItemsBy);

            //Paginate the query, then get the set of items specified by the paginated query.
            //Increases efficiency, as I now only get the items I need for the page.
            IPagedList <Item>  pagedQuery = query.ToPagedList(pageNumber, pageSize);
            List <foundItemCM> CMList     = new List <foundItemCM>();

            foreach (Item item in pagedQuery)
            {
                foundItemCM cm = buildFoundItemCM(item);
                CMList.Add(cm);
            }

            IPagedList <foundItemCM> result = new PagedList <foundItemCM>(CMList, pageNumber, pageSize);

            return(result);
        }
        public void ItemsSearchFacade_GetByNameContainingKNUCKLES_ReturnPagedList()
        {
            //Arrange
            List <Item> items   = CreateTestData.GetListOfItems();
            var         mockSet = new Mock <DbSet <Item> >()
                                  .SetupData(items, o =>
            {
                return(items.Single(x => x.Item_id.CompareTo(o.First()) == 0));
            });

            List <foundItemCM> expectedList = new List <foundItemCM>();
            foundItemCM        Knuckles     = new foundItemCM
            {
                Item_id = Guid.Parse("026a7dff-5e85-4e6d-94c6-6613828e5df6"),
                Name    = "Titanstone Knuckles"
            };

            expectedList.Add(Knuckles);
            IPagedList <foundItemCM> expected = expectedList.ToPagedList(1, 20);

            using (var mockContext = AutoMock.GetLoose())
            {
                mockContext.Mock <ItemsContext>()
                .Setup(x => x.Items).Returns(mockSet.Object);
                mockContext.Mock <ItemsContext>()
                .Setup(x => x.Set <Item>()).Returns(mockSet.Object);

                ItemsContext context = mockContext.Create <ItemsContext>();

                //Act
                ItemSearchFacade toTest = new ItemSearchFacade(context);
                var actual = toTest.searchItemsToPagedList("KNUCKLES", "Name", 1);

                //Assert
                actual.Should().BeEquivalentTo(expected);
            }
        }