Example #1
0
        public void GetViewModelTest()
        {
            IView view = new MockView();
            var viewModel = new MockViewModel(view);

            Assert.AreEqual(viewModel, view.GetViewModel<MockViewModel>());
        }
Example #2
0
        public void IsValidTest()
        {
            UserControl view = new UserControl();
            MockViewModel viewModel = new MockViewModel();
            view.DataContext = viewModel;

            Assert.IsTrue(ValidationHelper.GetIsValid(view));
            
            // It is not allowed to call the set method
            AssertHelper.ExpectedException<InvalidOperationException>(() => ValidationHelper.SetIsValid(view, true));

            // But we can set a binding.
            Binding binding = new Binding(nameof(MockViewModel.IsValid));
            
            // ValidationHelper.IsEnabled is false => exception
            AssertHelper.ExpectedException<InvalidOperationException>(() => 
                BindingOperations.SetBinding(view, ValidationHelper.IsValidProperty, binding));
            ClearIsValidBinding(view);

            ValidationHelper.SetIsEnabled(view, true);

            // Binding must have the mode OneWayToSource => exception
            AssertHelper.ExpectedException<InvalidOperationException>(() =>
                BindingOperations.SetBinding(view, ValidationHelper.IsValidProperty, binding));
            ClearIsValidBinding(view);

            // Now everything is correct => no exception
            binding = new Binding(nameof(MockViewModel.IsValid));
            binding.Mode = BindingMode.OneWayToSource;
            BindingOperations.SetBinding(view, ValidationHelper.IsValidProperty, binding);


            ValidationHelper.InternalSetIsValid(view, false);
            Assert.IsFalse(ValidationHelper.GetIsValid(view));
        }
        public void AssertViewModelIsValid()
        {
            var viewModel = new MockViewModel();
            var instance = new ProjectExplorerView(viewModel);

            Assert.AreEqual(viewModel, instance.DataContext);
        }
        public void SetsViewModelSet()
        {
            var viewModel = new MockViewModel();

            viewModel.SetState<MockViewModel>(x => x.Title = "Test");

            Assert.That(viewModel.Title, Is.EqualTo("Test"));
        }
        public void GetViewModelTest()
        {
            MockView view = new MockView();
            MockViewModel viewModel = new MockViewModel(view);

            Assert.AreEqual(viewModel, view.GetViewModel<MockViewModel>());

            AssertHelper.ExpectedException<ArgumentNullException>(() => ViewHelper.GetViewModel(null));
        }
Example #6
0
        public void GetView() 
        {
            IView view = new MockView();
            MockViewModel viewModel = new MockViewModel(view);
            Assert.AreEqual(view, viewModel.View);

            MockViewModel viewModel2 = new MockViewModel(view, false);
            Assert.AreEqual(view, viewModel2.View);
        }
Example #7
0
        public void GetViewModelWithDispatcherTest()
        {
            SynchronizationContext.SetSynchronizationContext(new DispatcherSynchronizationContext());

            var view = new MockView();
            var viewModel = new MockViewModel(view);

            Assert.AreEqual(viewModel, view.GetViewModel<MockViewModel>());
        }
Example #8
0
        public void Given_TryingToMockAFactory_When_UnitTesting_Then_Golden()
        {
            var expected = new MockViewModel {Property = "Shazam"};
            var mock = new Mock<Factory<ViewModel>>();
            mock.Setup(m => m.Create<IViewModel>()).Returns(expected);

            var sut = new MockFactoryHarness(mock.Object);
            sut.ActivateFactory();

            var actual = sut.TestObject;
            Assert.AreEqual(expected, actual);
        }
        public void NotifyPropertyChanged()
        {
            _propertiesChanged = new List<string>();

            var viewModel = new MockViewModel();
            var propertyName = Guid.NewGuid().ToString();

            viewModel.PropertyChanged += PropertyChanged;
            viewModel.TriggerPropertyChanged(propertyName);
            viewModel.PropertyChanged -= PropertyChanged;

            Assert.AreEqual(1, _propertiesChanged.Count);
            Assert.IsTrue(_propertiesChanged.Contains(propertyName));
        }
        public void HandlesPropertyChanged()
        {
            bool propertyChanged = false;
            var viewModel = new MockViewModel();

            viewModel.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == nameof(viewModel.Title) && viewModel.Title == "Test")
                    propertyChanged = true;
            };

            viewModel.Title = "Test";

            Assert.That(propertyChanged, Is.True);
        }
        public void CanCreateVisualizationForModel()
        {
            ModelVisualizationRegistry registry = new ModelVisualizationRegistry(new UnityContainer());

            registry.Register<MockViewModel, MockView>();

            var mockViewModel = new MockViewModel();
            var visualization = registry.CreateVisualization(mockViewModel) as ModelVisualizer;

            Assert.IsNotNull(visualization);
            Assert.IsNotNull(visualization.View);
            Assert.IsNotNull(visualization.ViewModel);
            Assert.IsInstanceOfType(visualization.View, typeof(MockView));
            Assert.AreSame(visualization.ViewModel, mockViewModel);
        }
        public void SetUp()
        {
            _action = x => x.Title = "Test";
            _viewModel = new MockViewModel();
            var navigation = new Mock<INavigation>();
            var page = new Mock<IPage>();

            page.Setup(x => x.Navigation).Returns(navigation.Object);

            navigation.Setup(x => x.PopAsync()).ReturnsAsync(new Page { BindingContext = new MockViewModel()});
            navigation.Setup(x => x.PopModalAsync()).ReturnsAsync(new Page { BindingContext = new MockViewModel()});
            navigation.Setup(x => x.PopToRootAsync());

            var viewFactory = new Mock<IViewFactory>();
            viewFactory.Setup(x => x.Resolve<MockViewModel>(out _viewModel, _action)).Returns(new MockView());

            _navigator = new Navigator(page.Object, viewFactory.Object);
        }
        public void SetUp()
        {
            _action    = x => x.Title = "Test";
            _viewModel = new MockViewModel();
            var navigation = mock.Mock <INavigation>();

            navigation.Setup(x => x.PopAsync()).ReturnsAsync(new Page {
                BindingContext = new MockViewModel()
            });
            navigation.Setup(x => x.PopModalAsync()).ReturnsAsync(new Page {
                BindingContext = new MockViewModel()
            });
            navigation.Setup(x => x.PopToRootAsync());

            mock.Mock <IViewFactory>().Setup(x => x.Resolve(out _viewModel, _action)).Returns(new MockView());

            mock.Provide <IDeviceService, MockDeviceService>();
            _navigator = mock.Create <Navigator>();            //(new Lazy<INavigation>(() => navigation.Object), viewFactory.Object);
        }
Example #14
0
        public void ViewModelBase_GetCommandA_Test6()
        {
            var vm             = new MockViewModel();
            var commandInvoked = false;

            ICommand cmd = vm.InvokeGetCommandA <int>("Test", x => commandInvoked = true);

            Assert.IsFalse(commandInvoked);

            try
            {
                cmd.Execute("X");
                Assert.Fail("Expected an exception");
            }
            catch (ArgumentException)
            {
                //OK
            }
        }
Example #15
0
        public void SetPropertyMethodShouldNotSetTheNewValue()
        {
            int           value         = 10;
            MockViewModel mockViewModel = new MockViewModel()
            {
                MockProperty = 10
            };
            bool invoked = false;

            mockViewModel.PropertyChanged += (o, e) => { if (e.PropertyName.Equals("MockProperty"))
                                                         {
                                                             invoked = true;
                                                         }
            };
            mockViewModel.MockProperty = value;

            Assert.False(invoked);
            Assert.Equal(mockViewModel.MockProperty, value);
        }
        public void NestedSuppressValidation_SetInvalidValue_ThereAreNoErrors()
        {
            // Arrange
            var vm = new MockViewModel();

            // Act
            using (vm.Validation.SuppressValidation())
            {
                using (vm.Validation.SuppressValidation())
                {
                    vm.RangeStart = 10;
                }
                vm.RangeEnd = 1;
            }

            // Verify
            Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast <string>().FirstOrDefault()));
            Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast <string>().FirstOrDefault()));
        }
Example #17
0
        public void RangeProperties_ChangeFromInvalidToValid_ValidationErrorsDisappear()
        {
            // Arrange
            var vm = new MockViewModel();

            // Act
            vm.RangeStart = 10;
            vm.RangeEnd   = 1;

            // Assert
            Assert.False(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast <string>().FirstOrDefault()));
            Assert.False(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast <string>().FirstOrDefault()));

            // Act
            vm.RangeEnd = 11;

            // Assert
            Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast <string>().FirstOrDefault()));
            Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast <string>().FirstOrDefault()));
        }
        public void Can_Locate_ViewModel()
        {
            FrameworkElement element;
            var viewModel        = new MockViewModel();
            var expectedViewName = typeof(MockView).Name;

            element = ViewLocator.LocateFor(viewModel);
            Assert.IsNotNull(element);
            Assert.AreEqual(expectedViewName, element.GetType().Name);
            Assert.AreEqual(viewModel, element.DataContext);

            element = ViewLocator.LocateFor(viewModel.GetType());
            Assert.IsNotNull(element);
            Assert.AreEqual(expectedViewName, element.GetType().Name);
            Assert.AreNotEqual(viewModel, element.DataContext);

            element = ViewLocator.LocateFor <MockViewModel>();
            Assert.IsNotNull(element);
            Assert.AreEqual(expectedViewName, element.GetType().Name);
        }
Example #19
0
        public void GetViewAndVerifyDataContext()
        {
            IView         view1      = new MockView();
            MockViewModel viewModel1 = new MockViewModel(view1, false);

            Assert.AreEqual(view1, viewModel1.View);
            Assert.IsNull(view1.DataContext);

            IView         view2      = new MockView();
            MockViewModel viewModel2 = new MockViewModel(view2, true);

            Assert.AreEqual(view2, viewModel2.View);
            Assert.AreEqual(viewModel2, view2.DataContext);

            IView         view3      = new MockView();
            MockViewModel viewModel3 = new MockViewModel(view3);

            Assert.AreEqual(view3, viewModel3.View);
            Assert.AreEqual(viewModel3, view3.DataContext);
        }
        public void Execute()
        {
            var expectedArgument = "Test";
            var isExecuted       = false;
            var mockViewModel    = new MockViewModel();

            mockViewModel.Command = new RelayCommand <string>(x =>
            {
                if (!string.IsNullOrEmpty(x) && x.Equals(expectedArgument))
                {
                    isExecuted = true;
                }
            });

            mockViewModel.Command.Execute(null);
            Assert.IsFalse(isExecuted);

            mockViewModel.Command.Execute(expectedArgument);
            Assert.IsTrue(isExecuted);
        }
        public void ExecuteAsyncT_WithIViewModelBase_IsBusyTrueWhileRunning(int number)
        {
            bool isExecuting = true;

            var vm      = new MockViewModel();
            var command = new SafeCommand <int>(async(i) => { Assert.True(vm.IsBusy); await Task.Delay(DELAY); isExecuting = false; }, vm);

            var thread = new Thread(new ThreadStart(() => command.Execute(number)));

            Assert.False(vm.IsBusy);
            thread.Start();
            //see Assert in command
            while (isExecuting)
            {
                Thread.Sleep(DELAY / 25);
            }

            Thread.Sleep(5);
            Assert.False(vm.IsBusy);
        }
        public void BindSpecialPropertyOnExtensionsWithNotifyPropertyChanged()
        {
            // Arrange
            var bnd = new Binder();
            var customExtensionsScanner = new TypeExtensionsScanner(bnd.PropertyScanner);

            customExtensionsScanner.AdapterRegistry.Register <MockViewExtensions>();
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            bnd.PropertyScanner.Add(customExtensionsScanner);
            var ob1 = new MockView();
            var ob2 = new MockViewModel();

            _bindings = bnd.Bind(new object[] { ob1, ob2 });

            // Act
            ob2.SpecialProperty = 666;

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual(666, ob1.GetSpecialProperty());
        }
Example #23
0
        public void Tests_NotificationError()
        {
            // arrange
            var target = new MockViewModel
                         {
                             FirstName = "John",
                             LastName = "Smith"
                         };

            // act
            target.DayOfWeek = DayOfWeek.Monday;
            // この時点ではエラーでないこと。
            Assert.False(target.HasErrors);

            // ここで検証してエラーが通知されること。
            target.Validate();

            // assert
            Assert.True(target.HasPropertyError(() => target.DayOfWeek));
            ConsoleWriteErrorMessages(target);
        }
        public void CanRemoveView()
        {
            var registry  = new MockModelVisualizationRegistry();
            var view      = new MockView();
            var viewModel = new MockViewModel();

            registry.VisualizationToReturn = new MockModelVisualizer()
            {
                View = view, ViewModel = viewModel
            };

            VisualizingRegion region = new VisualizingRegion(registry);

            region.InnerRegion = new Region();

            region.Add(viewModel);
            Assert.IsTrue(region.Views.Contains(registry.VisualizationToReturn));

            region.Remove(viewModel);
            Assert.IsFalse(region.Views.Contains(registry.VisualizationToReturn));
        }
Example #25
0
        public void Tests_NotificationError()
        {
            // arrange
            var target = new MockViewModel
            {
                FirstName = "John",
                LastName  = "Smith"
            };

            // act
            target.DayOfWeek = DayOfWeek.Monday;
            // この時点ではエラーでないこと。
            Assert.False(target.HasErrors);

            // ここで検証してエラーが通知されること。
            target.Validate();

            // assert
            Assert.True(target.HasPropertyError(() => target.DayOfWeek));
            ConsoleWriteErrorMessages(target);
        }
        public void Execute()
        {
            var expectedArgument = "Test";
            var isExecuted       = false;
            var mockViewModel    = new MockViewModel();

            mockViewModel.Command = new RelayCommandAsync <string>(x =>
            {
                if (!string.IsNullOrEmpty(x) && x.Equals(expectedArgument))
                {
                    isExecuted = true;
                }

                return(Task.FromResult(0));
            });

            ((ICommand)mockViewModel.Command).Execute(null);
            Assert.IsFalse(isExecuted);

            ((ICommand)mockViewModel.Command).Execute(expectedArgument);
            Assert.IsTrue(isExecuted);
        }
Example #27
0
        public void BindViewToViewmodel()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var view = new MockView {
                Control = new MockControl("ViewOrig")
            };
            var vm = new MockViewModel();

            _bindings = bnd.Bind(new object[] { vm, view });

            // Act
            view.Control.Text = "banaan";
            view.Control.Size = 11;

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual("banaan", vm.ControlText);
            Assert.AreEqual(11, vm.ControlSize);
        }
Example #28
0
        public void SetUp()
        {
            _action    = x => x.Title = "Test";
            _viewModel = new MockViewModel();
            var navigation = new Mock <INavigation>();
            var page       = new Mock <IPage>();

            page.Setup(x => x.Navigation).Returns(navigation.Object);

            navigation.Setup(x => x.PopAsync()).ReturnsAsync(new Page {
                BindingContext = new MockViewModel()
            });
            navigation.Setup(x => x.PopModalAsync()).ReturnsAsync(new Page {
                BindingContext = new MockViewModel()
            });
            navigation.Setup(x => x.PopToRootAsync());

            var viewFactory = new Mock <IViewFactory>();

            viewFactory.Setup(x => x.Resolve <MockViewModel>(out _viewModel, _action)).Returns(new MockView());

            _navigator = new Navigator(page.Object, viewFactory.Object);
        }
Example #29
0
        public void IsValidTest()
        {
            var view      = new UserControl();
            var viewModel = new MockViewModel();

            view.DataContext = viewModel;

            Assert.IsTrue(ValidationHelper.GetIsValid(view));

            // It is not allowed to call the set method
            AssertHelper.ExpectedException <InvalidOperationException>(() => ValidationHelper.SetIsValid(view, true));

            // But we can set a binding.
            var binding = new Binding(nameof(MockViewModel.IsValid));

            // ValidationHelper.IsEnabled is false => exception
            AssertHelper.ExpectedException <InvalidOperationException>(() =>
                                                                       BindingOperations.SetBinding(view, ValidationHelper.IsValidProperty, binding));
            ClearIsValidBinding(view);

            ValidationHelper.SetIsEnabled(view, true);

            // Binding must have the mode OneWayToSource => exception
            AssertHelper.ExpectedException <InvalidOperationException>(() =>
                                                                       BindingOperations.SetBinding(view, ValidationHelper.IsValidProperty, binding));
            ClearIsValidBinding(view);

            // Now everything is correct => no exception
            binding      = new Binding(nameof(MockViewModel.IsValid));
            binding.Mode = BindingMode.OneWayToSource;
            BindingOperations.SetBinding(view, ValidationHelper.IsValidProperty, binding);


            ValidationHelper.InternalSetIsValid(view, false);
            Assert.IsFalse(ValidationHelper.GetIsValid(view));
        }
Example #30
0
        public void Tests_ValidateProperty_int()
        {
            // arrange
            var target = new MockViewModel {Age = MockViewModel.AgeMinimum};
            Assert.False(target.HasPropertyError(() => target.Age));
            
            // act
            target.Age -= 1;

            // assert
            Assert.True(target.HasPropertyError(() => target.Age));
            ConsoleWriteErrorMessages(target);

            // reset
            target.Age = MockViewModel.AgeMaximum;
            Assert.False(target.HasPropertyError(() => target.Age));

            // act
            target.Age = MockViewModel.AgeMaximum + 1;

            // assert
            Assert.True(target.HasPropertyError(() => target.Age));
            ConsoleWriteErrorMessages(target);
        }
Example #31
0
        public void Tests_ValidateProperty_string()
        {
            // arrange
            var target = new MockViewModel();

            // この時点でエラーが発生しないこと。
            // 空文字の状態でエラーになると困るので。
            // act
            // assert
            Assert.False(target.HasPropertyError(() => target.LastName));

            // 文字数制限に引っかかること。
            // act
            target.LastName = Enumerable.Repeat('A', MockViewModel.LastNameMaxLength + 1).ToString();

            // assert
            Assert.True(target.HasPropertyError(() => target.LastName));
            ConsoleWriteErrorMessages(target);

            // 一旦エラーをクリアする。
            // act
            // assert
            target.LastName = "clear";
            Assert.False(target.HasPropertyError(() => target.LastName));

            // 空文字でエラーが発生すること。
            // act
            target.LastName = string.Empty;

            // assert
            Assert.True(target.HasPropertyError(() => target.LastName));
            ConsoleWriteErrorMessages(target);
        }
Example #32
0
 internal MockViewWithParameter(MockViewModel vm)
 {
     DataContext = vm;
 }
        public async Task NavigateToView()
        {
            MockViewModel viewModel = await _navigator.PushAsync <MockViewModel>(_action);

            Assert.That(viewModel, Is.EqualTo(_viewModel));
        }
Example #34
0
        public void Tests_Validate_SubViewModel()
        {
            // arrange
            var target = new MockViewModel
                         {
                             FirstName = "Test",
                             LastName = "Mock",
                             DayOfWeek = DayOfWeek.Saturday,
                         };
            // この時点ではエラーはない。
            Assert.False(target.HasErrors);
            target.SubViewModel.Number = MockSubViewModel.NumberMinimum - 1;

            // act
            target.Validate();

            // assert
            // 子ViewModelのエラー結果を検証する。
            Assert.True(target.SubViewModel.HasErrors);
            // 親ViewModelが子ViewModelのエラー結果を保持する。
            Assert.True(target.HasErrors);

            ConsoleWriteErrorMessages(target.SubViewModel);
            ConsoleWriteErrorMessages(target);
        }
Example #35
0
        public async void NavigateToModalView()
        {
            MockViewModel viewModel = await _navigator.PushModalAsync <MockViewModel>(_action);

            Assert.That(viewModel, Is.EqualTo(_viewModel));
        }
Example #36
0
 public ViewModelBaseFixture()
 {
     _viewModel = new MockViewModel();
 }