Example #1
0
        public void WHEN_viewmodel_creation_is_racing_SHOULD_create_type_once()
        {
            //Arrange
            var typeCreationFunc = new Func <IExtensionViewModel>(() =>
            {
                var vm = new ExtendedViewModel
                {
                    BaseProperty = GetRandom.String(10)
                };

                var extension = ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(vm);
                return(extension);
            });

            //Act
            var tasks = new List <Task <IExtensionViewModel> >();

            for (var i = 0; i < 100; i++)
            {
                var t = Task.Factory.StartNew(typeCreationFunc);
                tasks.Add(t);
            }
            Task.WaitAll(tasks.Cast <Task>().ToArray());

            //Assert
            tasks.Any(t => t.IsFaulted).Should().BeFalse();
        }
        public ExtendedContentControl()
        {
            if (!DesignMode.DesignModeEnabled)
            {
                DataContextChanged += (s, e) =>
                {
                    if (!ReferenceEquals(ViewModel, e.NewValue))
                    {
                        OnViewModelChanging();

                        ViewModel = e.NewValue as ExtendedViewModel;
                        if (GetType().ImplementsGenericInterface(typeof(IView <>)))
                        {
                            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IView <ExtendedViewModel> .VM)));
                        }

                        OnViewModelChanged();
                    }
                };
            }

            compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;

            Loaded += OnModalLoaded;
        }
        public PartialViewResult ExtendedView(int _transactionNumber)
        {
            //create the view model
            ExtendedViewModel vm = new ExtendedViewModel(_transactionNumber);

            //Return the view
            return(PartialView("Partials/ExtendedView", vm));
        }
        protected override void OnDisappearing()
        {
            base.OnDisappearing();

            ExtendedViewModel vm = BindingContext as ExtendedViewModel;

            if (vm != null && vm.UnloadCommand.CanExecute(null))
            {
                vm.UnloadCommand.Execute(null);
            }
        }
Example #5
0
        public void WHEN_parameter_type_does_is_not_interface_SHOULD_throw_InvalidOperationException()
        {
            // Arrange
            var viewModel = new ExtendedViewModel();

            // Act
            var exception =
                Assert.Throws <InvalidOperationException>(() => ExtensionTypeProxyFactory.Default.Create <ExtendedViewModel>(viewModel));

            // Assert
            exception.Should().NotBeNull();
        }
Example #6
0
        public void WHEN_viewModel_is_null_SHOULD_throw_ArgumentNullException()
        {
            // Arrange
            ExtendedViewModel viewModel = null;

            // Act
            var exception =
                Assert.Throws <ArgumentNullException>(() => ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(viewModel));

            // Assert
            exception.Should().NotBeNull();
        }
Example #7
0
        public void WHEN_parameter_type_is_missing_property_setter_SHOULD_throw_InvalidOperationException()
        {
            // Arrange
            var viewModel = new ExtendedViewModel();

            // Act
            var exception =
                Assert.Throws <InvalidOperationException>(
                    () => ExtensionTypeProxyFactory.Default.Create <IViewModelExtensionWithMissingPropertySetter>(viewModel));

            // Assert
            exception.Should().NotBeNull();
        }
Example #8
0
        public void WHEN_parameter_type_defines_a_method_SHOULD_throw_InvalidOperationException()
        {
            // Arrange
            var viewModel = new ExtendedViewModel();

            // Act
            var exception =
                Assert.Throws <InvalidOperationException>(
                    () => ExtensionTypeProxyFactory.Default.Create <IViewModelExtensionWithMethod>(viewModel));

            // Assert
            exception.Should().NotBeNull();
        }
Example #9
0
        WHEN_valid_extension_and_edit_custom_property_SHOULD_store_value_in_extended_model_property_bag()
        {
            // Arrange
            var viewModel           = new ExtendedViewModel();
            var extendedViewModel   = ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(viewModel);
            var customPropertyValue = 12345;

            // Act
            extendedViewModel.CustomProperty = customPropertyValue;

            // Assert
            extendedViewModel.CustomProperty.ShouldBeEquivalentTo(customPropertyValue);
            viewModel.Bag.ContainsKey("CustomProperty").Should().BeTrue();
            viewModel.Bag["CustomProperty"].Should().Be(customPropertyValue);
        }
Example #10
0
        WHEN_parameter_type_is_valid_SHOULD_return_an_instance_of_an_implementation_of_ExtensionOf_view_model_type()
        {
            // Arrange
            var basePropertyValue = "test";
            var viewModel         = new ExtendedViewModel {
                BaseProperty = basePropertyValue
            };

            // Act
            var extendedViewModel = ExtensionTypeProxyFactory.Default.Create <IExtensionViewModel>(viewModel);

            // Assert
            extendedViewModel.Should().NotBeNull();
            extendedViewModel.Model.Should().NotBeNull();
            extendedViewModel.Model.Should().BeAssignableTo <ExtendedViewModel>();
            extendedViewModel.Model.Should().BeSameAs(viewModel);
            extendedViewModel.Model.BaseProperty.ShouldBeEquivalentTo(basePropertyValue);
        }
Example #11
0
        public ExtendedMapPage()
        {
            BindingContext = new ExtendedViewModel();

            var grid = new Grid
            {
                RowDefinitions = new RowDefinitionCollection
                {
                    new RowDefinition {
                        Height = new GridLength(1, GridUnitType.Star)
                    }
                },
                ColumnDefinitions = new ColumnDefinitionCollection
                {
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    }
                }
            };

            grid.Children.Add(CreateMapContentView(), 0, 0);

            Content = grid;
        }