Example #1
0
        public void EditorsValidityStateIsInitializedAtInsertion()
        {
            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);

            // 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
            validatedEditorB.Received().UpdateValidationState(state);
        }
Example #2
0
        public void ManagersValidityStateIsUpdatedOnSingleEditorUpdate()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

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

            var validator = CreateValidator();

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

            _sut.EditableTarget = target;

            // act
            _sut.MonitorEvents();

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

            editorB.EditableTarget = updatedTarget;

            var args = EventArgs.Empty;

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

            // assert
            _sut.ShouldRaise("ValidationStateUpdated")
            .WithSender(_sut)
            .WithArgs <EventArgs>(a => a == EventArgs.Empty);
        }
Example #3
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();
        }
Example #4
0
        public void AllEditorsTargetsAreSynchronizedOnSingleEditorUpdate()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

            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 = target;

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

            editorB.EditableTarget = updatedTarget;

            var args = EventArgs.Empty;

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

            // assert
            _comparer.Equals(editorA.EditableTarget, updatedTarget).Should().BeTrue();
            _comparer.Equals(_sut.EditableTarget, updatedTarget).Should().BeTrue();
        }
Example #5
0
        public void EditorsValidityStateIsUpdatedWhenManagersTargetIsUpdated()
        {
            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
            };

            // act
            _sut.EditableTarget = target;

            // assert
            validatedEditorB.Received().UpdateValidationState(state);
        }
Example #6
0
        public void ValueUpdateChangeReportedOnTargetUpdate()
        {
            var target = new EditableClass {
                Text = "Initial"
            };
            var editorComponent = new EditorComponentVM <string>();
            var propertyAdapter = EditableClassMetadata.TextProperty;
            var sut             = new ScalarPropertyDataEditor <EditableClass, string, EditorComponentVM <string> >(propertyAdapter, editorComponent);

            // act
            sut.Component.MonitorEvents();

            sut.EditableTarget = target;

            // assert
            sut.Component.ShouldRaisePropertyChangeFor(x => x.Value);
            sut.Component.Value.Should().Be(target.Text);
        }
        public void PropertyValueIsUpdatedCorrectly()
        {
            var sut = new ClassTypeGenericPropertyAdapter <EditableClass, string>(_ => _.Text, (t, v) => t.Text = v);

            const string initialText = "Initial";
            const string updatedText = "Updated";

            // act
            var target = new EditableClass {
                Text = initialText
            };

            sut.SetValue(target, updatedText);

            // assert
            sut.IsReadOnly.Should().BeFalse();
            target.Text.Should().Be(updatedText);
        }
Example #8
0
        public void ManagersValidityStateIsUpdatedOnTargetUpdate()
        {
            var target = new EditableClass {
                Text = "Initial"
            };

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

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

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

            // assert
            _sut.ShouldRaise("ValidationStateUpdated")
            .WithSender(_sut)
            .WithArgs <EventArgs>(args => args == EventArgs.Empty);
        }
Example #9
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);
        }
Example #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();
        }
Example #11
0
        public void ValidatedEditorsValidationStateIsUpdatedOnSingleEditorUpdate()
        {
            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
            editorB.ClearReceivedCalls();

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

            editorB.EditableTarget = updatedTarget;

            var args = EventArgs.Empty;

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

            // assert
            validatedEditorB.Received().UpdateValidationState(state);
        }
Example #12
0
        public void ComponentErrorIsUpdatedOnlyWithItsPropertyErrors()
        {
            const string message = "Error";

            var target = new EditableClass {
                Text = "Invalid"
            };

            var editorComponent = Substitute.For <IEditorComponent <string> >();
            var propertyAdapter = EditableClassMetadata.TextProperty;
            var sut             = new PropertyDataEditor <EditableClass, string, ValidationState>(propertyAdapter, editorComponent, ValidationStateAdapter.GetPropertyError)
            {
                EditableTarget = target
            };

            // act
            sut.UpdateValidationState(new ValidationState(new Dictionary <string, string>
            {
                { "Some property", message }
            }));

            // assert
            editorComponent.DidNotReceive().SetError(message);
        }
Example #13
0
        public void ValueChangeUpdatesTargetProperty()
        {
            const string updatedValue = "Updated";

            var target = new EditableClass {
                Text = "Initial"
            };
            var editorComponent = new EditorComponentVM <string>();
            var propertyAdapter = EditableClassMetadata.TextProperty;
            var sut             = new ScalarPropertyDataEditor <EditableClass, string, EditorComponentVM <string> >(propertyAdapter, editorComponent);

            // act
            sut.MonitorEvents();

            sut.EditableTarget = target;

            sut.Component.Value = updatedValue;

            // assert
            sut.ShouldRaise("TargetUpdated")
            .WithSender(sut);

            sut.Component.Value.Should().Be(updatedValue);
        }
Example #14
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 void NullValueIsCorrectlyDetected()
        {
            EditableClass target = null;

            ReferenceTypeNullableCheck <EditableClass> .Instance.IsNull(target).Should().BeTrue();
        }
        public void NotNullValueIsCorrectlyDetected()
        {
            var target = new EditableClass();

            ReferenceTypeNullableCheck <EditableClass> .Instance.IsNull(target).Should().BeFalse();
        }