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); }
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); }
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 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(); }
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); }
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); }
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); }
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); }
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 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); }
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); }
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); }
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(); }