Пример #1
0
        public void Can_Send_Pagination_View_Model()
        {
            //arrange
            Mock <IRepository> mock = new Mock <IRepository>();

            mock.Setup(m => m.GetAllResponses()).Returns(new List <GuestResponse> {
                new GuestResponse {
                    Name       = "Matthijs",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = true
                },
                new GuestResponse {
                    Name       = "Piet",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = false
                },
                new GuestResponse {
                    Name       = "Truus",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = true
                },
                new GuestResponse {
                    Name       = "Anja",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = false
                }
            });

            ResponseController target = new ResponseController(mock.Object);

            target.PageSize = 3;

            //act
            ResponseListViewModel result = (ResponseListViewModel)target.Responses(null, 2).Model;

            //assert
            PagingInfo pageInfo = result.PagingInfo;

            Assert.AreEqual(pageInfo.CurrentPage, 2);
            Assert.AreEqual(pageInfo.ResponsesPerPage, 3);
            Assert.AreEqual(pageInfo.TotalResponses, 4);
            Assert.AreEqual(pageInfo.TotalPages, 2);
        }
Пример #2
0
        public void Can_Paginate()
        {
            //arrange
            Mock <IRepository> mock = new Mock <IRepository>();

            mock.Setup(m => m.GetAllResponses()).Returns(new List <GuestResponse> {
                new GuestResponse {
                    Name       = "Matthijs",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = true
                },
                new GuestResponse {
                    Name       = "Piet",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = false
                },
                new GuestResponse {
                    Name       = "Truus",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = true
                },
                new GuestResponse {
                    Name       = "Anja",
                    Email      = "*****@*****.**",
                    Phone      = "0612345678",
                    WillAttend = false
                }
            });

            ResponseController target = new ResponseController(mock.Object);

            target.PageSize = 3;

            //act
            ResponseListViewModel result = (ResponseListViewModel)target.Responses(null, 2).Model;

            //assert
            GuestResponse[] responseArray = result.GuestResponses.ToArray();
            Assert.IsTrue(responseArray.Length == 1);
            Assert.AreEqual(responseArray[0].Name, "Anja");
        }
Пример #3
0
        public ViewResult Responses(string filter, int page = 1)
        {
            int filterVal = 0;

            switch (filter)
            {
            case "Will Attend":
                filterVal = 1;
                break;

            case "Will Not Attend":
                filterVal = 2;
                break;

            default:
                filterVal = 3;
                break;
            }

            ResponseListViewModel model = new ResponseListViewModel {
                GuestResponses = repository.GetAllResponses()
                                 .Where(g => filterVal == 3 || g.WillAttend == (filterVal == 1) ? true : false)
                                 .OrderBy(g => g.GuestResponseID)
                                 .Skip((page - 1) * PageSize)
                                 .Take(PageSize),
                PagingInfo = new PagingInfo {
                    CurrentPage      = page,
                    ResponsesPerPage = PageSize,
                    TotalResponses   = filterVal == 3 ?
                                       repository.GetAllResponses().Count() :
                                       repository.GetAllResponses().Where(g => g.WillAttend == (filterVal == 1) ? true : false).Count()
                },
                Filter = filter
            };

            return(View(model));
        }