public void SavesValuesForBoundControls_NotAllControlsCanSave_ReturnsFalse() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = null; var firstControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl> (); firstControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(firstControlMock); var secondControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl> (); secondControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(secondControlMock); firstControlMock.Expect(mock => mock.SaveValue(false)).Return(false); secondControlMock.Expect(mock => mock.SaveValue(false)).Return(true); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.False); firstControlMock.VerifyAllExpectations(); secondControlMock.VerifyAllExpectations(); }
public void SavesValuesForBoundControls_OwnBusinessObjectNotNull() { var expectedValue = MockRepository.GenerateStub <IBusinessObject>(); bool isControlSaved = false; _referencedDataSourceStub.BusinessObject.Stub(stub => stub.SetProperty(_referencePropertyStub, expectedValue)) // ReSharper disable AccessToModifiedClosure .WhenCalled(mi => Assert.That(isControlSaved, Is.True)); // ReSharper restore AccessToModifiedClosure var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = expectedValue; var firstControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl>(); firstControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(firstControlMock); var secondControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl>(); secondControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(secondControlMock); firstControlMock.Expect(mock => mock.SaveValue(false)).Return(true).WhenCalled(mi => isControlSaved = true); secondControlMock.Expect(mock => mock.SaveValue(false)).Return(true); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); firstControlMock.VerifyAllExpectations(); secondControlMock.VerifyAllExpectations(); }
public void ReferencedPropertyNull_DoesNotReadBusinessObject() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, null); referenceDataSource.BusinessObject = MockRepository.GenerateStub <IBusinessObject>(); referenceDataSource.SaveValue(false); _referencedDataSourceStub.BusinessObject.AssertWasNotCalled(stub => stub.SetProperty(null, null), options => options.IgnoreArguments()); }
public void ReferencedDataSourceNull_DoesNotReadBusinessObject_DoesNotClearHasBusinessObjectChanged() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(null, _referencePropertyStub); referenceDataSource.BusinessObject = MockRepository.GenerateStub <IBusinessObject>(); referenceDataSource.SaveValue(false); _referencedDataSourceStub.BusinessObject.AssertWasNotCalled(stub => stub.SetProperty(null, null), options => options.IgnoreArguments()); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.True); }
public void ClearsHasBusinessObjectChanged() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = MockRepository.GenerateStub <IBusinessObject>(); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.True); referenceDataSource.SaveValue(false); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); }
public void DoesNotRequireWriteBack_WithoutControls_ReturnsTrue() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); _referencedDataSourceStub.BusinessObjectClass.Stub(_ => _.RequiresWriteBack).Return(false); _referencePropertyStub.Stub(_ => _.IsReadOnly(Arg <IBusinessObject> .Is.Anything)).Return(true); // IsReadOnlyInDomain to ensure exit branch var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); }
public void SavesValueIntoBoundObject_AndReturnsTrue() { var expectedValue = MockRepository.GenerateStub <IBusinessObject>(); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = expectedValue; var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencedDataSourceStub.BusinessObject.AssertWasCalled(stub => stub.SetProperty(_referencePropertyStub, expectedValue)); }
public void HasBusinessObjectChangedFalse_BusinessObjectNull_DoesNotSaveValueIntoBoundObject_AndReturnsTrue() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); _referencedDataSourceStub.BusinessObject.Stub(stub => stub.GetProperty(_referencePropertyStub)).Return(null); referenceDataSource.LoadValue(false); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencedDataSourceStub.BusinessObject.AssertWasNotCalled(stub => stub.SetProperty(null, null), options => options.IgnoreArguments()); }
public void SupportsDefaultValueFalse_IsDefaultValueNotCalled() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(false); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; referenceDataSource.SaveValue(false); _referencePropertyStub.AssertWasNotCalled(stub => stub.IsDefaultValue(null, null, null), options => options.IgnoreArguments()); }
public void BusinessObjectNull_IgnoresDefaultValueSemantics_AndReturnsTrue() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = null; var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencePropertyStub.AssertWasNotCalled(stub => stub.SupportsDefaultValue); _referencePropertyStub.AssertWasNotCalled(stub => stub.SupportsDelete); _referencePropertyStub.AssertWasNotCalled(stub => stub.IsDefaultValue(null, null, null), options => options.IgnoreArguments()); _referencePropertyStub.AssertWasNotCalled(stub => stub.Delete(null, null), options => options.IgnoreArguments()); _referencedDataSourceStub.BusinessObject.AssertWasCalled(stub => stub.SetProperty(_referencePropertyStub, null)); }
public void PropertyIsReadOnly_DoesNotSaveValueIntoBoundObject() { var expectedValue = MockRepository.GenerateStub <IBusinessObject>(); _referencedDataSourceStub.BusinessObject.Stub(stub => stub.GetProperty(_readOnlyReferencePropertyStub)).Return(expectedValue); _readOnlyReferencePropertyStub.ReferenceClass.Stub(stub => stub.RequiresWriteBack).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _readOnlyReferencePropertyStub); referenceDataSource.LoadValue(false); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); Assert.That(() => referenceDataSource.SaveValue(false), Throws.Exception); _referencedDataSourceStub.BusinessObject.AssertWasNotCalled(stub => stub.SetProperty(null, null), options => options.IgnoreArguments()); }
public void ParentIsNull_DoesNotSaveValueIntoBoundObject_AndReturnsFalse() { var parentObjectStub = _referencedDataSourceStub.BusinessObject; _referencedDataSourceStub.BusinessObject = null; var expectedValue = MockRepository.GenerateStub <IBusinessObject> (); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = expectedValue; var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.False); parentObjectStub.AssertWasNotCalled(stub => stub.SetProperty(null, null), options => options.IgnoreArguments()); }
public void ClearsHasBusinessObjectCreated() { _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.CreateDefaultValue(_referencedDataSourceStub.BusinessObject)) .Return(MockRepository.GenerateStub <IBusinessObject> ()); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.Mode = DataSourceMode.Edit; referenceDataSource.LoadValue(false); Assert.That(referenceDataSource.HasBusinessObjectCreated, Is.True); referenceDataSource.SaveValue(false); Assert.That(referenceDataSource.HasBusinessObjectCreated, Is.False); }
public void IsDefaultValue_ClearsHasBusinessObjectChanged() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.IsDefaultValue(null, null, null)).IgnoreArguments().Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; referenceDataSource.SaveValue(false); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); }
public void PropertyIsReadOnly_SavesValuesForBoundControls_AndReturnsTrue() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _readOnlyReferencePropertyStub); var controlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl>(); controlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(controlMock); controlMock.Expect(mock => mock.SaveValue(false)).Return(true); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); controlMock.VerifyAllExpectations(); }
public void IsDefaultValue_RequiresAllBoundControlsEmpty_ContainsOnlyEmtpyControls_AndReturnsTrue() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); var firstPropertyStub = MockRepository.GenerateStub <IBusinessObjectProperty>(); var secondPropertyStub = MockRepository.GenerateStub <IBusinessObjectProperty> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub .Stub( stub => stub.IsDefaultValue(_referencedDataSourceStub.BusinessObject, referencedObject, new[] { firstPropertyStub, secondPropertyStub })) .Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; var firstControlStub = MockRepository.GenerateStub <IBusinessObjectBoundControl> (); firstControlStub.Stub(stub => stub.HasValidBinding).Return(true); firstControlStub.Stub(stub => stub.HasValue).Return(false); firstControlStub.Property = firstPropertyStub; referenceDataSource.Register(firstControlStub); var secondControlStub = MockRepository.GenerateStub <IBusinessObjectBoundControl> (); secondControlStub.Stub(stub => stub.HasValidBinding).Return(true); secondControlStub.Stub(stub => stub.HasValue).Return(false); secondControlStub.Property = secondPropertyStub; referenceDataSource.Register(secondControlStub); var thirdControlStub = MockRepository.GenerateStub <IBusinessObjectBoundControl> (); thirdControlStub.Stub(stub => stub.HasValidBinding).Return(true); thirdControlStub.Stub(stub => stub.HasValue).Return(false); thirdControlStub.Property = firstPropertyStub; referenceDataSource.Register(thirdControlStub); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencePropertyStub.AssertWasCalled(stub => stub.Delete(_referencedDataSourceStub.BusinessObject, referencedObject)); Assert.That(referenceDataSource.BusinessObject, Is.Null); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); }
public void PropertyIsReadWrite_IsDefaultValue_ClearsBusinessObject_AndReturnsTrue() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.IsDefaultValue(null, null, null)).IgnoreArguments().Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); Assert.That(referenceDataSource.BusinessObject, Is.Null); }
public void PropertyIsReadWrite_SavesValueIntoBoundObject_AndReturnsTrue() { var expectedValue = MockRepository.GenerateStub <IBusinessObject>(); _referencedDataSourceStub.BusinessObject.Stub(stub => stub.GetProperty(_referencePropertyStub)).Return(expectedValue); _referencePropertyStub.ReferenceClass.Stub(stub => stub.RequiresWriteBack).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.LoadValue(false); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencedDataSourceStub.BusinessObject.AssertWasCalled(stub => stub.SetProperty(_referencePropertyStub, expectedValue)); }
public void IsDefaultValue_SavesNullIntoBoundObject_AndReturnsTrue() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.IsDefaultValue(null, null, null)).IgnoreArguments().Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencedDataSourceStub.BusinessObject.AssertWasCalled(stub => stub.SetProperty(_referencePropertyStub, null)); }
public void HasBusinessObjectCreatedTrue_ReadsBusinessObject_SavesValueIntoBoundObject_AndReturnsTrue() { var expectedValue = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.CreateDefaultValue(_referencedDataSourceStub.BusinessObject)).Return(expectedValue); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.Mode = DataSourceMode.Edit; referenceDataSource.LoadValue(false); Assert.That(referenceDataSource.HasBusinessObjectCreated, Is.True); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencedDataSourceStub.BusinessObject.AssertWasCalled(stub => stub.SetProperty(_referencePropertyStub, expectedValue)); }
public void DoesNotRequireWriteBack_NotAllControlsCanSave_ReturnsFalse() { var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); _referencedDataSourceStub.BusinessObjectClass.Stub(_ => _.RequiresWriteBack).Return(false); _referencePropertyStub.Stub(_ => _.IsReadOnly(Arg <IBusinessObject> .Is.Anything)).Return(true); // IsReadOnlyInDomain to ensure exit branch var controlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl> (); controlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(controlMock); controlMock.Expect(mock => mock.SaveValue(false)).Return(false); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.False); controlMock.VerifyAllExpectations(); }
public void IsDefaultValueTrue_SupportsDeleteTrue_DeletesObject_AndReturnsTrue() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub .Stub(stub => stub.IsDefaultValue(_referencedDataSourceStub.BusinessObject, referencedObject, new IBusinessObjectProperty[0])) .Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencePropertyStub.AssertWasCalled(stub => stub.Delete(_referencedDataSourceStub.BusinessObject, referencedObject)); }
public void PropertyIsReadOnly_ThrowsInvalidOperationException() { var expectedValue = MockRepository.GenerateStub <IBusinessObject>(); _referencedDataSourceStub.BusinessObject.Stub(stub => stub.GetProperty(_readOnlyReferencePropertyStub)).Return(expectedValue); _readOnlyReferencePropertyStub.ReferenceClass.Stub(stub => stub.RequiresWriteBack).Return(true); _readOnlyReferencePropertyStub.Stub(stub => stub.Identifier).Return("TestProperty"); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _readOnlyReferencePropertyStub); referenceDataSource.ID = "TestDataSource"; referenceDataSource.LoadValue(false); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); Assert.That( () => referenceDataSource.SaveValue(false), Throws.InvalidOperationException.With.Message.EqualTo( "The business object of the TestDataSource could not be saved into the domain model " + "because the property 'TestProperty' is read only.")); _referencedDataSourceStub.BusinessObject.AssertWasNotCalled(stub => stub.SetProperty(null, null), options => options.IgnoreArguments()); }
public void PropertyIsReadOnly_IsDefaultValue_ThrowsInvalidOperationException() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _readOnlyReferencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _readOnlyReferencePropertyStub.Stub(stub => stub.IsDefaultValue(null, null, null)).IgnoreArguments().Return(true); _readOnlyReferencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); _readOnlyReferencePropertyStub.Stub(stub => stub.Identifier).Return("TestProperty"); _referencedDataSourceStub.BusinessObject.Stub(stub => stub.GetProperty(_readOnlyReferencePropertyStub)).Return(referencedObject); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _readOnlyReferencePropertyStub); referenceDataSource.ID = "TestDataSource"; referenceDataSource.LoadValue(false); Assert.That( () => referenceDataSource.SaveValue(false), Throws.InvalidOperationException.With.Message.EqualTo( "The TestableBusinessObjectReferenceDataSource 'TestDataSource' could not be marked as changed " + "because the bound property 'TestProperty' is read only.")); Assert.That(referenceDataSource.BusinessObject, Is.Null); }
public void IsDefaultValue_SavesValuesForBoundControls_AndReturnsTrue() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); var firstPropertyStub = MockRepository.GenerateStub <IBusinessObjectProperty> (); var secondPropertyStub = MockRepository.GenerateStub <IBusinessObjectProperty> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.IsDefaultValue(null, null, null)).IgnoreArguments().Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; var firstControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl> (); firstControlMock.Stub(stub => stub.HasValidBinding).Return(true); firstControlMock.Stub(stub => stub.HasValue).Return(false); firstControlMock.Expect(mock => mock.SaveValue(false)).Return(true); firstControlMock.Property = firstPropertyStub; referenceDataSource.Register(firstControlMock); var secondControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl> (); secondControlMock.Stub(stub => stub.HasValidBinding).Return(true); secondControlMock.Stub(stub => stub.HasValue).Return(false); secondControlMock.Expect(mock => mock.SaveValue(false)).Return(true); secondControlMock.Property = secondPropertyStub; referenceDataSource.Register(secondControlMock); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); firstControlMock.VerifyAllExpectations(); secondControlMock.VerifyAllExpectations(); }
public void IsDefaultValue_RequiresAllBoundControlsEmpty_ContainsNonEmtpyControls_AndReturnsTrue() { var referencedObject = MockRepository.GenerateStub <IBusinessObject> (); _referencePropertyStub.Stub(stub => stub.SupportsDefaultValue).Return(true); _referencePropertyStub.Stub(stub => stub.SupportsDelete).Return(true); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = referencedObject; var firstControlStub = MockRepository.GenerateStub <IBusinessObjectBoundControl> (); firstControlStub.Stub(stub => stub.HasValidBinding).Return(true); firstControlStub.Stub(stub => stub.HasValue).Return(false); referenceDataSource.Register(firstControlStub); var secondControlStub = MockRepository.GenerateStub <IBusinessObjectBoundControl> (); secondControlStub.Stub(stub => stub.HasValidBinding).Return(true); secondControlStub.Stub(stub => stub.HasValue).Return(true); referenceDataSource.Register(secondControlStub); var thirdControlStub = MockRepository.GenerateStub <IBusinessObjectBoundControl> (); thirdControlStub.Stub(stub => stub.HasValidBinding).Return(true); thirdControlStub.Stub(stub => stub.HasValue).Return(false); referenceDataSource.Register(thirdControlStub); var result = referenceDataSource.SaveValue(false); Assert.That(result, Is.True); _referencePropertyStub.AssertWasNotCalled(stub => stub.IsDefaultValue(null, null, null), options => options.IgnoreArguments()); _referencePropertyStub.AssertWasNotCalled(stub => stub.Delete(null, null), options => options.IgnoreArguments()); Assert.That(referenceDataSource.BusinessObject, Is.SameAs(referencedObject)); Assert.That(referenceDataSource.HasBusinessObjectChanged, Is.False); }
public void InterimSave_DoesNotUseDefaultValueSemantics_AndReturnsTrue() { var expectedValue = MockRepository.GenerateStub <IBusinessObject> (); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); referenceDataSource.BusinessObject = expectedValue; var firstControlMock = MockRepository.GenerateMock <IBusinessObjectBoundEditableControl> (); firstControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(firstControlMock); firstControlMock.Expect(mock => mock.SaveValue(true)).Return(true); var result = referenceDataSource.SaveValue(true); Assert.That(result, Is.True); firstControlMock.VerifyAllExpectations(); _referencePropertyStub.AssertWasNotCalled(stub => stub.SupportsDefaultValue); _referencePropertyStub.AssertWasNotCalled(stub => stub.SupportsDelete); _referencePropertyStub.AssertWasNotCalled(stub => stub.IsDefaultValue(null, null, null), options => options.IgnoreArguments()); _referencePropertyStub.AssertWasNotCalled(stub => stub.Delete(null, null), options => options.IgnoreArguments()); _referencedDataSourceStub.BusinessObject.AssertWasCalled(stub => stub.SetProperty(_referencePropertyStub, expectedValue)); }