public void EditorsValidityStateIsInitializedAtInsertion()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var editorA          = Substitute.For <IDataEditor <EditableStruct> >();
            var editorB          = Substitute.For <IDataEditor <EditableStruct>, IValidatedComponent <ValidationState> >();
            var validatedEditorB = (IValidatedComponent <ValidationState>)editorB;

            var state     = ValidationState.Valid;
            var validator = CreateValidator(state);

            // given
            _comparer.Equals(editorA.EditableTarget, target).Should().BeFalse();
            _comparer.Equals(editorB.EditableTarget, target).Should().BeFalse();

            // act
            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator)
            {
                EditableTarget = target
            };

            _sut.Add(editorA);
            _sut.Add(editorB);

            // assert
            validatedEditorB.Received().UpdateValidationState(state);
        }
        public void EditorsTargetIsUpdatedWhenManagersIsUpdated()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var editorA = Substitute.For <IDataEditor <EditableStruct> >();
            var editorB = Substitute.For <IDataEditor <EditableStruct> >();

            var validator = CreateValidator();

            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator)
            {
                editorA,
                editorB
            };

            // given
            _comparer.Equals(editorA.EditableTarget, target).Should().BeFalse();
            _comparer.Equals(editorB.EditableTarget, target).Should().BeFalse();

            // act
            _sut.EditableTarget = target;

            // assert
            _comparer.Equals(editorA.EditableTarget, target).Should().BeTrue();
            _comparer.Equals(editorB.EditableTarget, target).Should().BeTrue();
        }
        public void ManagersValidityStateIsUpdatedOnSingleEditorUpdate()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var editorB = Substitute.For <IDataEditor <EditableStruct> >();

            var validator = CreateValidator();

            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator)
            {
                editorB
            };

            _sut.EditableTarget = target;

            // act
            _sut.MonitorEvents();

            var updatedTarget = new EditableStruct {
                Text = "Updated"
            };

            editorB.EditableTarget = updatedTarget;

            editorB.TargetUpdated += Raise.EventWith(EventArgs.Empty);

            // assert
            _sut.ShouldRaise("ValidationStateUpdated")
            .WithSender(_sut)
            .WithArgs <EventArgs>(a => a == EventArgs.Empty);
        }
Exemple #4
0
        public void EditorsTargetIsInitializedAtInsertion()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

            var editorA = Substitute.For <IDataEditor <EditableClass> >();
            var editorB = Substitute.For <IDataEditor <EditableClass> >();

            var validator = CreateValidator();

            // given
            _comparer.Equals(editorA.EditableTarget, target).Should().BeFalse();
            _comparer.Equals(editorB.EditableTarget, target).Should().BeFalse();

            // act
            _sut = new DataEditorsManager <EditableClass, ValidationState>(validator)
            {
                EditableTarget = target
            };

            _sut.Add(editorA);
            _sut.Add(editorB);

            // assert
            _comparer.Equals(editorA.EditableTarget, target).Should().BeTrue();
            _comparer.Equals(editorB.EditableTarget, target).Should().BeTrue();
        }
        public void AllEditorsTargetsAreSynchronizedOnSingleEditorUpdate()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var editorA = Substitute.For <IDataEditor <EditableStruct> >();
            var editorB = Substitute.For <IDataEditor <EditableStruct> >();

            var validator = CreateValidator();

            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator)
            {
                editorA,
                editorB
            };

            _sut.EditableTarget = target;

            // act
            var updatedTarget = new EditableStruct {
                Text = "Updated"
            };

            editorB.EditableTarget = updatedTarget;

            editorB.TargetUpdated += Raise.EventWith(EventArgs.Empty);

            // assert
            _comparer.Equals(editorA.EditableTarget, updatedTarget).Should().BeTrue();
            _comparer.Equals(_sut.EditableTarget, updatedTarget).Should().BeTrue();
        }
        public void EditorsValidityStateIsUpdatedWhenManagersTargetIsUpdated()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var editorA          = Substitute.For <IDataEditor <EditableStruct> >();
            var editorB          = Substitute.For <IDataEditor <EditableStruct>, IValidatedComponent <ValidationState> >();
            var validatedEditorB = (IValidatedComponent <ValidationState>)editorB;

            var state     = ValidationState.Valid;
            var validator = CreateValidator(state);

            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator)
            {
                editorA,
                editorB
            };

            // act
            _sut.EditableTarget = target;

            // assert
            validatedEditorB.Received().UpdateValidationState(state);
        }
        public void ManagersValidityStateIsUpdatedOnTargetUpdate()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var state     = ValidationState.Valid;
            var validator = CreateValidator(state);

            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator);

            // act
            _sut.MonitorEvents();
            _sut.EditableTarget = target;

            // assert
            _sut.ShouldRaise("ValidationStateUpdated")
            .WithSender(_sut)
            .WithArgs <EventArgs>(args => args == EventArgs.Empty);
        }
Exemple #8
0
        public void RemovedEditorIsManagedNoMore()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

            var editorA          = Substitute.For <IDataEditor <EditableClass> >();
            var editorB          = Substitute.For <IDataEditor <EditableClass>, IValidatedComponent <ValidationState> >();
            var validatedEditorB = (IValidatedComponent <ValidationState>)editorB;

            var state     = ValidationState.Valid;
            var validator = CreateValidator(state);

            _sut = new DataEditorsManager <EditableClass, ValidationState>(validator)
            {
                editorA,
                editorB
            };

            _sut.EditableTarget = target;

            // act
            var updatedTarget = new EditableClass {
                Text = "Updated"
            };

            _sut.Remove(editorB);
            editorB.ClearReceivedCalls();

            _sut.EditableTarget = updatedTarget;

            var args = EventArgs.Empty;

            editorB.TargetUpdated += Raise.EventWith(args);

            // assert
            _comparer.Equals(editorB.EditableTarget, target).Should().BeTrue();
            _comparer.Equals(_sut.EditableTarget, updatedTarget).Should().BeTrue();

            validatedEditorB.DidNotReceiveWithAnyArgs().UpdateValidationState(state);
        }
Exemple #9
0
        public void AnyEditorTargetUpdateIsIgnoredWhenTargetIsNull()
        {
            var editorA = Substitute.For <IDataEditor <EditableClass> >();
            var editorB = Substitute.For <IDataEditor <EditableClass> >();

            var validator = CreateValidator();

            _sut = new DataEditorsManager <EditableClass, ValidationState>(validator)
            {
                editorA,
                editorB
            };

            _sut.EditableTarget = null;

            // act
            editorB.TargetUpdated += Raise.EventWith(EventArgs.Empty);

            // assert
            editorA.EditableTarget.Should().BeNull();
        }
Exemple #10
0
        public void NullTargetIsAssignedAtInsertion()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

            var editorA = Substitute.For <IDataEditor <EditableClass> >();

            editorA.EditableTarget = target;

            var validator = CreateValidator();

            // act
            _sut = new DataEditorsManager <EditableClass, ValidationState>(validator)
            {
                EditableTarget = null
            };

            _sut.Add(editorA);

            // assert
            editorA.EditableTarget.Should().BeNull();
        }
        public void ValidatedEditorsValidationStateIsUpdatedOnSingleEditorUpdate()
        {
            var target = new EditableStruct {
                Text = "Initial"
            };

            var editorA          = Substitute.For <IDataEditor <EditableStruct> >();
            var editorB          = Substitute.For <IDataEditor <EditableStruct>, IValidatedComponent <ValidationState> >();
            var validatedEditorB = (IValidatedComponent <ValidationState>)editorB;

            var state     = ValidationState.Valid;
            var validator = CreateValidator(state);

            _sut = new DataEditorsManager <EditableStruct, ValidationState>(validator)
            {
                editorA,
                editorB
            };

            _sut.EditableTarget = target;

            // act
            editorB.ClearReceivedCalls();

            var updatedTarget = new EditableStruct {
                Text = "Updated"
            };

            editorB.EditableTarget = updatedTarget;

            var args = EventArgs.Empty;

            editorB.TargetUpdated += Raise.EventWith(args);

            // assert
            validatedEditorB.Received().UpdateValidationState(state);
        }
Exemple #12
0
        public void EditorsTargetIsNulledWhenManagersIsNulled()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

            var editorA = Substitute.For <IDataEditor <EditableClass> >();

            editorA.EditableTarget = target;

            var validator = CreateValidator();

            // act
            _sut = new DataEditorsManager <EditableClass, ValidationState>(validator)
            {
                editorA
            };

            _sut.EditableTarget = target;
            _sut.EditableTarget = null;

            // assert
            editorA.EditableTarget.Should().BeNull();
        }
        public SampleUserEditorViewModel()
        {
            _editors = new DataEditorsManager <SampleUser, ValidationState>(new SampleUserValidator());

            InitializeEditors();
        }