コード例 #1
0
        public async Task <ActionResult> Index(AgentsIndexViewModel agentsIndexModel)
        {
            logger.Info($"Action Start | Controller name: {nameof(AgentsController)} | Action name: {nameof(Index)}| Input params: {nameof(agentsIndexModel.SearchString)}={agentsIndexModel.SearchString}, " +
                        $"{nameof(agentsIndexModel.Page)}={agentsIndexModel.Page}, {nameof(agentsIndexModel.SelectedGroupId)}={agentsIndexModel.SelectedGroupId}, " +
                        $"{nameof(agentsIndexModel.SelectedAlgorithmId)}={agentsIndexModel.SelectedAlgorithmId}, {nameof(agentsIndexModel.IsServiceLevel)}={agentsIndexModel.IsServiceLevel}, " +
                        $"{nameof(agentsIndexModel.SelectedSortProperty)}={agentsIndexModel.SelectedSortProperty} ,{nameof(agentsIndexModel.SortOrder)}={agentsIndexModel.SortOrder}");

            int pageSize   = 5;
            int pageNumber = agentsIndexModel.Page ?? 1;
            var agents     = await repository.GetAgentsIncludeGroupAsync();

            agents = SortAgents(agents, agentsIndexModel.SortOrder, agentsIndexModel.SelectedSortProperty);

            AgentsIndexViewModel agentsIndexViewModel = new AgentsIndexViewModel
            {
                SearchString         = agentsIndexModel.SearchString,
                SortOrder            = agentsIndexModel.SortOrder,
                SelectedSortProperty = agentsIndexModel.SelectedSortProperty,
                Groups              = new SelectList(await repository.GetGroupsAsync(), "Id", "Name", agentsIndexModel.SelectedGroupId),
                SelectedGroupId     = agentsIndexModel.SelectedGroupId,
                Algorithms          = new SelectList(Agent.algorithmDictionary.Select(algo => new { Algorithm = algo.Key.ToString(), AlgorithmNAme = algo.Value }), "Algorithm", "AlgorithmName"),
                SelectedAlgorithmId = agentsIndexModel.SelectedAlgorithmId,
                IsServiceLevelList  = new SelectList(AgentsIndexViewModel.IsServiceLevelListDictionary.Select(pair => new { Flag = pair.Key.ToString(), Name = pair.Value }), "Flag", "Name"),
                IsServiceLevel      = agentsIndexModel.IsServiceLevel
            };

            agents = FilterAgents(agents, agentsIndexModel.SelectedGroupId, agentsIndexModel.SelectedAlgorithmId, agentsIndexModel.IsServiceLevel, agentsIndexModel.SearchString);

            agentsIndexViewModel.PagedAgents = agents.ToPagedList(pageNumber, pageSize);
            return(View(agentsIndexViewModel));
        }
コード例 #2
0
        public async Task CanPaginate()
        {
            //Arrange
            Mock <IAgentRepository> mock = new Mock <IAgentRepository>();

            mock.Setup(agentsRepo => agentsRepo.GetAgentsIncludeGroupAsync()).ReturnsAsync(new List <Agent>
            {
                new Agent {
                    Id = 1, Login = "******", Name = "Agent1"
                },
                new Agent {
                    Id = 2, Login = "******", Name = "Agent2"
                },
                new Agent {
                    Id = 3, Login = "******", Name = "Agent3"
                },
                new Agent {
                    Id = 4, Login = "******", Name = "Agent4"
                },
                new Agent {
                    Id = 5, Login = "******", Name = "Agent5"
                },
                new Agent {
                    Id = 6, Login = "******", Name = "Agent6"
                },
                new Agent {
                    Id = 7, Login = "******", Name = "Agent7"
                }
            });

            mock.Setup(agentsRepo => agentsRepo.GetGroupsAsync()).ReturnsAsync(new List <Group>
            {
                new Group {
                    Id = 1, Name = "Group1"
                },
                new Group {
                    Id = 2, Name = "Group2"
                }
            });

            AgentsController controller = new AgentsController(mock.Object);

            AgentsIndexViewModel agentsIndexModel = new AgentsIndexViewModel
            {
                Page = 2
            };


            //Act
            var resultView = await controller.Index(agentsIndexModel) as ViewResult;

            AgentsIndexViewModel result = (AgentsIndexViewModel)resultView.Model;

            //Accert
            Assert.IsTrue(result.PagedAgents.Count == 2);
            Assert.AreEqual("Login6", result.PagedAgents.ToList()[0].Login);
            Assert.AreEqual("Agent7", result.PagedAgents.ToList()[1].Name);
        }