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