public void AllowRichText()
        {
            // arrange
            var vm = Mock.Create<ProcessFieldTextOptionsStepViewModel>(Constructor.Mocked, Behavior.CallOriginal);

            var data = new TextOptionsStepEdit();
            Mock.Arrange(() => vm.Data).Returns(data);

            var parentField = Mock.Create<FieldEdit>(Constructor.Mocked, Behavior.Loose);
            var parentFieldViewModel = Mock.Create<ProcessFieldViewModel>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => parentFieldViewModel.Model).Returns(parentField);

            Mock.Arrange(() => vm.ParentField).Returns(parentFieldViewModel);

            var eventAggregatorCalled = false;
            vm.EventAggregator = Mock.Create<IEventAggregator>(Behavior.CallOriginal);
            Mock.Arrange(() => vm.EventAggregator.Publish(Arg.IsAny<IsRichTextAllowedChangedEvent>())).DoInstead(() => eventAggregatorCalled = true);

            var allowRichTextRaises = false;
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "AllowRichText").DoInstead(() => { allowRichTextRaises = true; });

            var isMaskOptionsAvailableRaises = false;
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "IsMaskOptionsAvailable").DoInstead(() => { isMaskOptionsAvailableRaises = true; });

            // act
            vm.AllowRichText = true;

            // assert
            Assert.IsTrue(data.AllowRichText);
            Assert.IsTrue(eventAggregatorCalled);
            Assert.IsTrue(allowRichTextRaises);
            Assert.IsTrue(isMaskOptionsAvailableRaises);
            Assert.AreEqual(2000, vm.NumberOfCharacters);
        }
        public void Ctor()
        {
            // arrange
            var textOptionsStepEdit = new TextOptionsStepEdit();
            var stepInfo = new StepInfo(1);
            var processFieldViewModel = new ProcessFieldViewModel(null, null);

            // act
            var vm = new ProcessFieldTextOptionsStepViewModel(textOptionsStepEdit, stepInfo, processFieldViewModel);

            // assert
            Assert.IsNotNull(vm);
        }
        public void NumberOfCharacters()
        {
            // arrange
            var vm = Mock.Create<ProcessFieldTextOptionsStepViewModel>(Constructor.Mocked, Behavior.CallOriginal);

            var data = new TextOptionsStepEdit();
            Mock.Arrange(() => vm.Data).Returns(data);

            var raises = false;
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "NumberOfCharacters").DoInstead(() => { raises = true; });

            // act
            vm.NumberOfCharacters = 1;

            // assert
            Assert.AreEqual(1, data.NumberOfCharacters);
            Assert.AreEqual(1, vm.NumberOfCharacters);
            Assert.IsTrue(raises);

            // arrange
            var privateAccessor = new PrivateAccessor(vm);
            privateAccessor.SetField("_numberOfCharacters", TextOptionsStepEdit.NumberOfCharactersProperty.DefaultValue);

            // act
            var numberOfCharacters = vm.NumberOfCharacters;

            // assert
            Assert.AreEqual(TextOptionsStepEdit.NumberOfCharactersProperty.DefaultValue, numberOfCharacters);

            // arrange
            Mock.Arrange(() => vm.AllowRichText).Returns(true);

            // act
            numberOfCharacters = vm.NumberOfCharacters;

            // assert
            Assert.AreEqual(2000, numberOfCharacters);
        }
        public void WhenAllowRichTextIsEnabled_AllowLocalizedDataIsDisabled()
        {
            // Arrange.
            var vm = Mock.Create<ProcessFieldTextOptionsStepViewModel>(Constructor.Mocked, Behavior.CallOriginal);
            vm.EventAggregator = Mock.Create<IEventAggregator>(Behavior.Loose);

            var data = new TextOptionsStepEdit();
            Mock.Arrange(() => vm.Data).Returns(data);

            var parentField = Mock.Create<FieldEdit>(Constructor.Mocked, Behavior.Loose);
            parentField.AllowLocalizedData = true;

            var parentFieldViewModel = Mock.Create<ProcessFieldViewModel>(Constructor.Mocked, Behavior.Loose);
            Mock.Arrange(() => parentFieldViewModel.Model).Returns(parentField);

            Mock.Arrange(() => vm.ParentField).Returns(parentFieldViewModel);

            // Act.
            vm.AllowRichText = true;

            // Assert.
            Assert.IsFalse(parentField.AllowLocalizedData);
        }