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 LoadsValuesForBoundControls() { var referencedObject = MockRepository.GenerateStub <IBusinessObject>(); _referencedDataSourceStub.BusinessObject.Stub(stub => stub.GetProperty(_referencePropertyStub)).Return(referencedObject); var referenceDataSource = new TestableBusinessObjectReferenceDataSource(_referencedDataSourceStub, _referencePropertyStub); var firstControlMock = MockRepository.GenerateMock <IBusinessObjectBoundControl>(); firstControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(firstControlMock); var secondControlMock = MockRepository.GenerateMock <IBusinessObjectBoundControl>(); secondControlMock.Stub(stub => stub.HasValidBinding).Return(true); referenceDataSource.Register(secondControlMock); firstControlMock.Expect(mock => mock.LoadValue(false)) .WhenCalled(mi => Assert.That(referenceDataSource.BusinessObject, Is.SameAs(referencedObject))); secondControlMock.Expect(mock => mock.LoadValue(false)) .WhenCalled(mi => Assert.That(referenceDataSource.BusinessObject, Is.SameAs(referencedObject))); referenceDataSource.LoadValue(false); firstControlMock.VerifyAllExpectations(); secondControlMock.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 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 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 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 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 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)); }