public IndexViewItem <Domain.DataTransfer.Album> DisplayAlbumsWithPagination(int page = 1, int pageSize = 10)
        {
            var albumsList = _albumRepository.GetItemList();

            if (albumsList == null)
            {
                throw new Exception($"{nameof(albumsList)} equal null");
            }

            var resultOfPagination = _albumRepository.MakePagination(albumsList.ToList(), page, pageSize);

            if (resultOfPagination == null)
            {
                throw new Exception($"{nameof(resultOfPagination)} less then 0");
            }

            IndexViewItem <Domain.DataTransfer.Album> indexViewDomainAlbums = new IndexViewItem <Domain.DataTransfer.Album>();

            indexViewDomainAlbums.PageInfo            = new Repository <Domain.DataTransfer.Album>();
            indexViewDomainAlbums.PageInfo.PageNumber = resultOfPagination.PageInfo.PageNumber;
            indexViewDomainAlbums.PageInfo.PageSize   = resultOfPagination.PageInfo.PageSize;
            indexViewDomainAlbums.PageInfo.TotalItems = resultOfPagination.PageInfo.TotalItems;
            indexViewDomainAlbums.Items = resultOfPagination.Items.Select(_mapAlbum.AutoMap);
            return(indexViewDomainAlbums);
        }
        public void DisplayPaginatedAlbums()
        {
            //Arrange
            var albumDomain = new MusicStore.Domain.DataTransfer.Album()
            {
                Id   = 1,
                Name = "Album 1",
                DiscountIfBuyAllSongs = 15.0m,
            };
            var albumDomainList = new List <MusicStore.Domain.DataTransfer.Album>()
            {
                albumDomain
            };
            var indexViewDomainItem = new IndexViewItem <MusicStore.Domain.DataTransfer.Album>()
            {
                Items    = albumDomainList,
                PageInfo = new Repository <MusicStore.Domain.DataTransfer.Album>()
                {
                    PageNumber = 1,
                    PageSize   = 1,
                    TotalItems = 1
                }
            };

            mockMusicStoreDisplayService.Setup(x => x.DisplayAlbumsWithPagination(1, 1)).Returns(indexViewDomainItem);
            var musicStoreController = new MusicStoreController(mockMusicStoreService.Object, mockUserAccountService.Object, mockMusicStoreDisplayService.Object, mockDiscountService.Object);
            //Act
            var result = (ViewResult)musicStoreController.DisplayPaginatedAlbums(1, 1);

            //Assert
            Assert.Equal(indexViewDomainItem, result.Model);
        }
        public void DisplayAlbumsWithPaginationTest()
        {
            //Arrange
            var album = new MusicStore.DataAccess.Album()
            {
                Id   = 1,
                Name = "Album 1",
                DiscountIfBuyAllSongs = 15.0m,
            };
            var albumDomain = new MusicStore.Domain.DataTransfer.Album()
            {
                Id   = 1,
                Name = "Album 1",
                DiscountIfBuyAllSongs = 15.0m,
            };
            var albumList = new List <MusicStore.DataAccess.Album>()
            {
                album
            };
            var albumDomainList = new List <MusicStore.Domain.DataTransfer.Album>()
            {
                albumDomain
            };

            mockUnitOfWork.Setup(x => x.AlbumRepositoryWithPagination).Returns(mockAlbumRepository.Object);
            mockAlbumRepository.Setup(x => x.GetItemList()).Returns(albumList);
            var indexViewItem = new IndexViewItem <MusicStore.DataAccess.Album>()
            {
                Items    = albumList,
                PageInfo = new Repository <MusicStore.DataAccess.Album>()
                {
                    PageNumber = 1,
                    PageSize   = 1,
                    TotalItems = 1
                }
            };
            var indexViewDomainItem = new IndexViewItem <MusicStore.Domain.DataTransfer.Album>()
            {
                Items    = albumDomainList,
                PageInfo = new Repository <MusicStore.Domain.DataTransfer.Album>()
                {
                    PageNumber = 1,
                    PageSize   = 1,
                    TotalItems = 1
                }
            };

            mockAlbumRepository.Setup(x => x.MakePagination(It.IsAny <List <MusicStore.DataAccess.Album> >(), 1, 10)).Returns(indexViewItem);
            mockMapAlbum.Setup(x => x.AutoMap(It.IsAny <MusicStore.DataAccess.Album>())).Returns(albumDomain);

            var musicStoreDisplayService = new MusicStoreDisplayService(mockUnitOfWork.Object, mockMapSong.Object, mockMapAlbum.Object);

            //Act
            var result = musicStoreDisplayService.DisplayAlbumsWithPagination();

            //Assert
            Assert.Equal(indexViewDomainItem.Items, result.Items);
        }