Example #1
0
        public void SetUp()
        {
            ServiceProvider.AttachedValueProvider    = new AttachedValueProvider();
            ServiceProvider.ViewModelSettingsFactory = model => new DefaultViewModelSettings();
            ServiceProvider.ReflectionManager        = new ExpressionReflectionManager();
            CanBeResolvedTypes = new List <Type>
            {
                typeof(IThreadManager),
                typeof(IViewManager),
                typeof(IDisplayNameProvider),
                typeof(IViewModelProvider),
                typeof(OperationCallbackManagerMock),
                typeof(INavigationDispatcher),
                typeof(IViewModelPresenter)
            };
            OperationCallbackManager = new OperationCallbackManagerMock();
            NavigationDispatcher     = new NavigationDispatcherMock();
            ViewManager                   = new ViewManagerMock();
            ThreadManager                 = new ThreadManagerMock();
            ViewModelPresenter            = new ViewModelPresenterMock();
            ServiceProvider.ThreadManager = ThreadManager;
            DisplayNameProvider           = new DisplayNameProviderMock();
            IocContainer                  = new IocContainerMock
            {
                GetFunc            = GetFunc,
                CanResolveDelegate = CanResolve
            };
            Tracer.TraceInformation = true;
            ServiceProvider.Tracer  = new ConsoleTracer();
            ViewModelProvider       = new ViewModelProvider(IocContainer);
            OnInit();
            var app = new UnitTestApp();

            app.Initialize(PlatformInfo.UnitTest, IocContainer, Empty.Array <Assembly>(), DataContext.Empty);
        }
        public void EditCmdShouldUseCommandParameterToShowProductEditorViewModel()
        {
            var items = new List <ProductModel>
            {
                new ProductModel {
                    Id = Guid.NewGuid()
                }
            };
            bool isInitialized = false;
            Mock <IEditorWrapperViewModel> wrapper = SetupEditableWrapper(false, vm =>
            {
                var editorViewModel = (ProductEditorViewModel)vm;
                editorViewModel.EntityInitialized += (model, args) =>
                {
                    Assert.AreEqual(args.OriginalEntity, items[0]);
                    isInitialized = true;
                };
            });

            InitializeProductRepository(items);
            var viewModel = GetViewModel <ProductWorkspaceViewModel>();

            viewModel.GridViewModel.SelectedItem = null;

            viewModel.EditProductCommand.Execute(items[0]);
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
            Assert.IsTrue(isInitialized);
        }
        public void EditCmdShouldAddChangesResultTrue()
        {
            var items = new List <OrderModel>
            {
                new OrderModel {
                    Id = Guid.NewGuid()
                }
            };
            IList <OrderProductModel> links = new List <OrderProductModel>();

            RepositoryMock
            .Setup(repository => repository.GetProductsByOrderAsync(items[0].Id, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(links));
            var wrapper = SetupEditableWrapper(true);

            InitializeRepository(items);
            var viewModel = GetViewModel <OrderWorkspaceViewModel>();

            viewModel.GridViewModel.SelectedItem = items[0];

            viewModel.EditOrderCommand.Execute(null);
            Assert.IsTrue(viewModel.HasChanges);
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
            RepositoryMock.Verify(
                repository => repository.GetProductsByOrderAsync(items[0].Id, It.IsAny <CancellationToken>()), Times.Once);
        }
        public void AddCmdShouldShowOrderEditorViewModel()
        {
            var wrapper = SetupEditableWrapper(false, vm => Assert.IsInstanceOfType(vm, typeof(OrderEditorViewModel)));

            InitializeRepository();
            var viewModel = GetViewModel <OrderWorkspaceViewModel>();

            viewModel.AddOrderCommand.Execute(null);
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
        }
Example #5
0
        public void OpenOrdersCommandShouldOpenOrderWorkspaceViewModel()
        {
            var viewModel = GetViewModel <MainViewModel>();

            Assert.AreEqual(viewModel.ItemsSource.Count, 0);
            viewModel.OpenOrdersCommand.Execute(null);
            ViewModelPresenterMock.Verify(
                presenter =>
                presenter.ShowAsync(It.Is <IViewModel>(model => model is OrderWorkspaceViewModel),
                                    It.IsAny <IDataContext>()), Times.Once());
        }
        public void AddCmdShouldAddChangesResultTrue()
        {
            Mock <IEditorWrapperViewModel> wrapper = SetupEditableWrapper(true);

            InitializeProductRepository();
            var viewModel = GetViewModel <ProductWorkspaceViewModel>();

            viewModel.AddProductCommand.Execute(null);
            Assert.IsTrue(viewModel.HasChanges);
            Assert.IsNotNull(viewModel.GridViewModel.OriginalItemsSource.Single());
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
        }
        public void AddCmdShouldNotAddChangesResultFalse()
        {
            var wrapper = SetupEditableWrapper(false);

            InitializeRepository();
            var viewModel = GetViewModel <OrderWorkspaceViewModel>();

            viewModel.AddOrderCommand.Execute(null);
            Assert.IsFalse(viewModel.HasChanges);
            Assert.AreEqual(viewModel.GridViewModel.OriginalItemsSource.Count, 0);
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
        }
        public void EditCmdShouldAddChangesResultTrue()
        {
            var items = new List <ProductModel>
            {
                new ProductModel {
                    Id = Guid.NewGuid()
                }
            };
            Mock <IEditorWrapperViewModel> wrapper = SetupEditableWrapper(true);

            InitializeProductRepository(items);
            var viewModel = GetViewModel <ProductWorkspaceViewModel>();

            viewModel.GridViewModel.SelectedItem = items[0];

            viewModel.EditProductCommand.Execute(null);
            Assert.IsTrue(viewModel.HasChanges);
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
        }
        public void EditCmdShouldUseCommandParameterToShowOrderEditorViewModel()
        {
            var items = new List <OrderModel>
            {
                new OrderModel
                {
                    Id = Guid.NewGuid()
                }
            };
            bool isInitialized = false;
            IList <OrderProductModel> links = new List <OrderProductModel> {
                new OrderProductModel()
            };

            RepositoryMock
            .Setup(repository => repository.GetProductsByOrderAsync(items[0].Id, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(links));
            var wrapper = SetupEditableWrapper(false, vm =>
            {
                var editorViewModel = (OrderEditorViewModel)vm;
                editorViewModel.EntityInitialized += (model, args) =>
                {
                    Assert.AreEqual(args.OriginalEntity, items[0]);
                    Assert.IsTrue(editorViewModel.OldLinks.SequenceEqual(links));
                    isInitialized = true;
                };
            });

            InitializeRepository(items);
            var viewModel = GetViewModel <OrderWorkspaceViewModel>();

            viewModel.GridViewModel.SelectedItem = null;

            viewModel.EditOrderCommand.Execute(items[0]);
            ViewModelPresenterMock.Verify(model => model.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()), Times.Once);
            RepositoryMock.Verify(
                repository => repository.GetProductsByOrderAsync(items[0].Id, It.IsAny <CancellationToken>()), Times.Once);
            Assert.IsTrue(isInitialized);
        }
        protected Mock <IEditorWrapperViewModel> SetupEditableWrapper(bool result,
                                                                      Action <IViewModel> wrapCallback = null)
        {
            var wrapper = new Mock <IEditorWrapperViewModel>();

            WrapperManagerMock
            .Setup(provider => provider.Wrap(It.IsAny <IViewModel>(), typeof(IEditorWrapperViewModel), It.IsAny <IDataContext>()))
            .Returns <IViewModel, Type, IDataContext>((vm, t, context) =>
            {
                if (wrapCallback != null)
                {
                    wrapCallback(vm);
                }
                return(wrapper.Object);
            });
            var operation = new NavigationOperation();

            operation.SetResult(OperationResult.CreateResult(OperationType.PageNavigation, wrapper, result));
            ViewModelPresenterMock.Setup(presenter => presenter.ShowAsync(wrapper.Object, It.IsAny <IDataContext>()))
            .Returns(() => operation);
            return(wrapper);
        }