示例#1
0
        //удостоверяемся, что контроллер отправляет представлению правильную информацию о разбиении на страницы
        public void Can_Send_Pagination_View_Model()
        {
            // Организация (arrange)
            Mock <IPorsheRepository> mock = new Mock <IPorsheRepository>();

            mock.Setup(m => m.Porshe).Returns(new List <Porshe>
            {
                new Porshe {
                    Id = 1, Name = "Игра1"
                },
                new Porshe {
                    Id = 2, Name = "Игра2"
                },
                new Porshe {
                    Id = 3, Name = "Игра3"
                },
                new Porshe {
                    Id = 4, Name = "Игра4"
                },
                new Porshe {
                    Id = 5, Name = "Игра5"
                }
            });
            PorsheController controller = new PorsheController(mock.Object);

            controller.pageSize = 3;

            // Act
            PorsheListViewModel result
                = (PorsheListViewModel)controller.List(2).Model;

            // Assert
            PagingInfo pageInfo = result.PagingInfo;

            Assert.AreEqual(pageInfo.CurrentPage, 2);
            Assert.AreEqual(pageInfo.ItemsPerPage, 3);
            Assert.AreEqual(pageInfo.TotalItems, 5);
            Assert.AreEqual(pageInfo.TotalPages, 2);
        }
        // метод действия List(), который создает представление
        public ViewResult List(int page = 1)
        {
            /*обновить метод действия Skoda() класса SkodasController так, чтобы он использовал класс SkodasSkodaViewModel
             * для снабжения представления сведениями о товарах, отображаемых на страницах, и информацией о разбиении на страницы*/

            PorsheListViewModel model = new PorsheListViewModel
            {
                Porshe = repository.Porshe
                         .OrderBy(game => game.Id)
                         .Skip((page - 1) * pageSize)
                         .Take(pageSize),
                PagingInfo = new PagingInfo
                {
                    CurrentPage  = page,
                    ItemsPerPage = pageSize,
                    TotalItems   = repository.Porshe.Count()
                }
            };

            return(View(model));
            //Внесенные изменения обеспечивают передачу объекта SkodasSkodaViewModel представлению в качестве данных модели
        }
示例#3
0
        public void Can_Paginate()
        { // Организация (arrange)
            Mock <IPorsheRepository> mock = new Mock <IPorsheRepository>();

            mock.Setup(m => m.Porshe).Returns(new List <Porshe>
            {
                new Porshe {
                    Id = 1, Name = "Игра1"
                },
                new Porshe {
                    Id = 2, Name = "Игра2"
                },
                new Porshe {
                    Id = 3, Name = "Игра3"
                },
                new Porshe {
                    Id = 4, Name = "Игра4"
                },
                new Porshe {
                    Id = 5, Name = "Игра5"
                }
            });
            PorsheController controller = new PorsheController(mock.Object);

            controller.pageSize = 3;

            // Действие (act)
            // IEnumerable<Skoda> result = (IEnumerable<Skoda>)controller.List(2).Model;
            PorsheListViewModel result = (PorsheListViewModel)controller.List(2).Model;

            // Утверждение (assert)
            List <Porshe> games = result.Porshe.ToList();

            Assert.IsTrue(games.Count == 2);
            Assert.AreEqual(games[0].Name, "Игра4");
            Assert.AreEqual(games[1].Name, "Игра5");
        }