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

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

            controller.pageSize = 3;

            // Act
            SkodasSkodaViewModel result
                = (SkodasSkodaViewModel)controller.Skoda(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);
        }
        // метод действия Skoda(), который создает представление
        public ViewResult Skoda(int page = 1)
        {
            /*обновить метод действия Skoda() класса SkodasController так, чтобы он использовал класс SkodasSkodaViewModel
             * для снабжения представления сведениями о товарах, отображаемых на страницах, и информацией о разбиении на страницы*/

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

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

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

            controller.pageSize = 3;

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

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

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