public void RefreshTest()
        {
            // Arrange.
            var windowManager = Mock.Create<IShell>(Behavior.Loose);
            var list = new InfoListBase { TotalRowCount = 100, PageNumber = 0 };
            PagedCriteria criteria = null;
            var dtm = Mock.Create<IDynamicTypeManager>(Behavior.Loose);
            Mock.Arrange(() => dtm.GetListAsync<IInfoList>(Arg.IsAny<PagedCriteria>()))
                .DoInstead<PagedCriteria>(c => criteria = c)
                .Returns(TaskEx.FromResult<IInfoList>(list));

            var popupFactory = Mock.Create<PopupFactory>(Behavior.Loose);

            var viewModel = new IntegrationEventListViewModel
                            {
                                WindowManager = new Lazy<IShell>(() => windowManager),
                                TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dtm),
                                ThePopupFactory = new Lazy<PopupFactory>(() => popupFactory)
                            };

            // Act.
            viewModel.Refresh();
            
            // Assert.
            Assert.IsNotNull(criteria);
            Assert.AreEqual(Constants.IntegrationEventProcessName, criteria.ProcessName);
            Assert.AreEqual(0, criteria.PageNumber);
            Assert.AreEqual(25, criteria.PageSize);
            Assert.IsTrue(string.IsNullOrEmpty(criteria.Filter));
            Assert.IsTrue(string.IsNullOrEmpty(criteria.FilterDefinition));
            Assert.IsTrue(criteria.LimitResultColumns);
            Assert.IsNotNull(criteria.SortColumns);
            Assert.AreEqual(1, criteria.SortColumns.Count);
            Assert.AreEqual("TimeCreated", criteria.SortColumns[0].ColumnName);
            Assert.AreEqual(SortDirection.Descending, criteria.SortColumns[0].Direction);
            Assert.IsTrue(criteria.ResultColumns.Contains("Id"));
            Assert.IsTrue(criteria.ResultColumns.Contains("Process"));
            Assert.IsTrue(criteria.ResultColumns.Contains("Service"));
            Assert.IsTrue(criteria.ResultColumns.Contains("Username"));
            Assert.IsTrue(criteria.ResultColumns.Contains("TimeCreated"));
            Assert.IsTrue(criteria.ResultColumns.Contains("IsSuccessful"));

            Assert.AreEqual(100, viewModel.TotalRowCount);
            Assert.AreEqual(0, viewModel.PageIndex);
            Assert.AreSame(list, viewModel.Model);
        }
        public void ShowEventDetailsCommand_WhenExecuted_OpensEventDetailsWindow()
        {
            // Arrange.
            var windowManager = Mock.Create<IShell>(Behavior.Loose);
            var dtm = Mock.Create<IDynamicTypeManager>(Behavior.Loose);
            var popupFactory = Mock.Create<PopupFactory>(Behavior.Loose);
            var integrationEventViewModel = Mock.Create<IIntegrationEventViewModel>(Behavior.Loose);
            var integrationEventViewModelFactory = Mock.Create<IIntegrationEventViewModelFactory>(Behavior.Loose);
            Mock.Arrange(() => integrationEventViewModelFactory.CreateViewModel()).Returns(integrationEventViewModel);

            var viewModel = new IntegrationEventListViewModel
                            {
                                WindowManager = new Lazy<IShell>(() => windowManager),
                                TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dtm),
                                ThePopupFactory = new Lazy<PopupFactory>(() => popupFactory),
                                IntegrationEventViewModelFactory = integrationEventViewModelFactory
                            };

            var integrationEvent = Mock.Create<IIntegrationEventInfo>(Behavior.Loose);
            Mock.Arrange(() => integrationEvent.Id).Returns(123);

            // Act.
            viewModel.ShowEventDetailsCommand.Execute(integrationEvent);

            // Assert.
            Mock.Assert(() => integrationEventViewModel.LoadEvent(123), Occurs.Once());
            Mock.Assert(() => windowManager.ShowChildWindow(viewModel, integrationEventViewModel, null), Occurs.Once());
        }