Пример #1
0
        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();
        }
Пример #2
0
        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();
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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();
        }
Пример #7
0
        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();
        }
Пример #8
0
        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();
        }
Пример #9
0
        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));
        }