public void DataContainerStateUpdated_AllowedForActiveTransaction_NotInLoadMode()
        {
            Assert.That(_listener.IsInLoadMode, Is.False);
            var someDataContainer = DataContainerObjectMother.Create(DomainObjectIDs.Client1);

            Assert.That(() => _listener.DataContainerStateUpdated(_transaction, someDataContainer, StateType.Changed), Throws.Nothing);
        }
Example #2
0
        public override void SetUp()
        {
            base.SetUp();

            _mockRepository = new MockRepository();

            _eventSinkWithMock       = _mockRepository.StrictMock <IClientTransactionEventSink>();
            _persistenceStrategyMock = _mockRepository.StrictMock <IPersistenceStrategy> ();
            _dataManagerMock         = _mockRepository.StrictMock <IDataManager> ();
            _clientTransaction       = ClientTransactionObjectMother.Create();

            _agent = new CommitRollbackAgent(_clientTransaction, _eventSinkWithMock, _persistenceStrategyMock, _dataManagerMock);

            _fakeChangedDomainObject = LifetimeService.NewObject(_clientTransaction, typeof(Order), ParamList.Empty);
            _fakeNewDomainObject     = LifetimeService.NewObject(_clientTransaction, typeof(Order), ParamList.Empty);
            _fakeDeletedDomainObject = LifetimeService.NewObject(_clientTransaction, typeof(Order), ParamList.Empty);

            var fakeDataContainer1 = DataContainerObjectMother.Create();
            var fakeDataContainer2 = DataContainerObjectMother.Create();
            var fakeDataContainer3 = DataContainerObjectMother.Create();

            _fakeChangedPersistableItem = new PersistableData(_fakeChangedDomainObject, StateType.Changed, fakeDataContainer1, new IRelationEndPoint[0]);
            _fakeNewPersistableItem     = new PersistableData(_fakeNewDomainObject, StateType.New, fakeDataContainer2, new IRelationEndPoint[0]);
            _fakeDeletedPersistableItem = new PersistableData(_fakeDeletedDomainObject, StateType.Deleted, fakeDataContainer3, new IRelationEndPoint[0]);
        }
Example #3
0
        public void EndRegisterIfRequired_RaisesEndEvent_EvenWhenRegistrationThrows()
        {
            var dataContainer1 = DataContainerObjectMother.Create(DomainObjectIDs.Order1);
            var dataContainer2 = DataContainerObjectMother.Create(DomainObjectIDs.Order3);
            var collector      = CreateCollectorAndPrepare(dataContainer1, dataContainer2);

            var exception = new Exception("Test");

            using (_mockRepository.Ordered())
            {
                var loadedObjectIDs = new[] { dataContainer1.ID, dataContainer2.ID };
                _registrationListenerMock.Expect(mock => mock.OnBeforeObjectRegistration(Arg <ReadOnlyCollection <ObjectID> > .List.Equal(loadedObjectIDs)));

                _dataManagerMock.Expect(mock => mock.RegisterDataContainer(dataContainer1));
                _dataManagerMock.Expect(mock => mock.RegisterDataContainer(dataContainer2)).Throw(exception);

                _registrationListenerMock
                .Expect(mock => mock.OnAfterObjectRegistration(
                            Arg <ReadOnlyCollection <ObjectID> > .List.Equal(new[] { dataContainer1.ID, dataContainer2.ID }),
                            Arg <ReadOnlyCollection <DomainObject> > .List.Equal(new[] { dataContainer1.DomainObject })));
            }
            _mockRepository.ReplayAll();

            Assert.That(() => _agent.EndRegisterIfRequired(collector), Throws.Exception.SameAs(exception));

            _mockRepository.VerifyAll();
        }
Example #4
0
        public void EndRegisterIfRequired_RegistersDataContainers_AndRaisesEvents()
        {
            var dataContainer1 = DataContainerObjectMother.Create(DomainObjectIDs.Order1);
            var dataContainer2 = DataContainerObjectMother.Create(DomainObjectIDs.Order3);
            var collector      = CreateCollectorAndPrepare(dataContainer1, dataContainer2);

            using (_mockRepository.Ordered())
            {
                var loadedObjectIDs = new[] { dataContainer1.ID, dataContainer2.ID };
                _registrationListenerMock.Expect(mock => mock.OnBeforeObjectRegistration(Arg <ReadOnlyCollection <ObjectID> > .List.Equal(loadedObjectIDs)));

                _dataManagerMock.Expect(mock => mock.RegisterDataContainer(dataContainer1));
                _dataManagerMock.Expect(mock => mock.RegisterDataContainer(dataContainer2));

                _registrationListenerMock
                .Expect(mock => mock.OnAfterObjectRegistration(
                            Arg <ReadOnlyCollection <ObjectID> > .List.Equal(new[] { dataContainer1.ID, dataContainer2.ID }),
                            Arg <ReadOnlyCollection <DomainObject> > .List.Equal(new[] { dataContainer1.DomainObject, dataContainer2.DomainObject })));
            }
            _mockRepository.ReplayAll();

            _agent.EndRegisterIfRequired(collector);

            _mockRepository.VerifyAll();
        }
Example #5
0
        public void RaiseDataContainerMapUnregisteringEvent()
        {
            var dataContainer = DataContainerObjectMother.Create(Order.NewObject());

            CheckEventWithListenersOnly(
                s => s.RaiseDataContainerMapUnregisteringEvent(dataContainer),
                l => l.DataContainerMapUnregistering(_clientTransaction, dataContainer));
        }
Example #6
0
        public void RaiseDataContainerStateUpdatedEvent()
        {
            var dataContainer         = DataContainerObjectMother.Create(Order.NewObject());
            var newDataContainerState = StateType.New;

            CheckEventWithListenersOnly(
                s => s.RaiseDataContainerStateUpdatedEvent(dataContainer, newDataContainerState),
                l => l.DataContainerStateUpdated(_clientTransaction, dataContainer, newDataContainerState));
        }
        public void DataContainerStateUpdated_ForbiddenWhenTransactionReadOnly()
        {
            ClientTransactionTestHelper.SetIsWriteable(_transaction, false);
            Assert.That(_listener.IsInLoadMode, Is.False);
            var someDataContainer = DataContainerObjectMother.Create(DomainObjectIDs.Client1);

            Assert.That(
                () => _listener.DataContainerStateUpdated(_transaction, someDataContainer, StateType.Changed),
                Throws.TypeOf <ClientTransactionReadOnlyException> ());
        }
        public void DataContainerStateUpdated_LoadedObject_AllowedInLoadMode()
        {
            ClientTransactionTestHelper.SetIsWriteable(_transaction, false);

            _listener.AddCurrentlyLoadingObjectIDs(new[] { DomainObjectIDs.Client1 });
            Assert.That(_listener.IsInLoadMode, Is.True);

            var someDataContainer = DataContainerObjectMother.Create(DomainObjectIDs.Client1);

            Assert.That(() => _listener.DataContainerStateUpdated(_transaction, someDataContainer, StateType.Changed), Throws.Nothing);
        }
Example #9
0
        public override void SetUp()
        {
            base.SetUp();

            _commandStub      = MockRepository.GenerateStub <IStorageProviderCommand <IEnumerable <DataContainer>, IRdbmsProviderCommandExecutionContext> >();
            _executionContext = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();

            _order1Container = DataContainerObjectMother.Create(DomainObjectIDs.Order1);
            _order2Container = DataContainerObjectMother.Create(DomainObjectIDs.Order3);
            _order3Container = DataContainerObjectMother.Create(DomainObjectIDs.Order4);
        }
Example #10
0
        public void Execute_NonMatchingDataContainer()
        {
            var dataContainer = DataContainerObjectMother.Create(DomainObjectIDs.Order3);

            _innerCommandMock.Expect(mock => mock.Execute(_fakeContext)).Return(dataContainer);

            Assert.That(
                () => _associateCommand.Execute(_fakeContext),
                Throws.TypeOf <PersistenceException> ().With.Message.EqualTo(
                    "The ObjectID of the loaded DataContainer 'Order|83445473-844a-4d3f-a8c3-c27f8d98e8ba|System.Guid' and the expected ObjectID "
                    + "'Order|5682f032-2f0b-494b-a31c-c97f02b89c36|System.Guid' differ."));
        }
Example #11
0
        public void Execute_MatchingDataContainer()
        {
            var dataContainer = DataContainerObjectMother.Create(_expectedID);

            _innerCommandMock.Expect(mock => mock.Execute(_fakeContext)).Return(dataContainer);

            var result = _associateCommand.Execute(_fakeContext);

            _innerCommandMock.VerifyAllExpectations();
            Assert.That(result.ObjectID, Is.EqualTo(_expectedID));
            Assert.That(result.LocatedObject, Is.SameAs(dataContainer));
        }
        public void DataContainerStateUpdated_SomeObject_ForbiddenInLoadMode()
        {
            ClientTransactionTestHelper.SetIsWriteable(_transaction, false);

            _listener.AddCurrentlyLoadingObjectIDs(new[] { DomainObjectIDs.Client1 });
            Assert.That(_listener.IsInLoadMode, Is.True);

            var someDataContainer = DataContainerObjectMother.Create(DomainObjectIDs.Client2);

            Assert.That(
                () => _listener.DataContainerStateUpdated(_transaction, someDataContainer, StateType.Changed),
                Throws.TypeOf <ClientTransactionReadOnlyException>());
        }
Example #13
0
        public void Execute_DuplicatedDataContainer()
        {
            var command = new MultiDataContainerAssociateWithIDsCommand(new[] { DomainObjectIDs.Order1 }, _commandStub);

            var otherOrder1DataContainer = DataContainerObjectMother.Create(_order1Container.ID);

            _commandStub.Stub(stub => stub.Execute(_executionContext)).Return(new[] { _order1Container, otherOrder1DataContainer });

            var result = command.Execute(_executionContext).ToList();

            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result[0].LocatedObject, Is.SameAs(otherOrder1DataContainer));
            Assert.That(result[0].ObjectID, Is.EqualTo(DomainObjectIDs.Order1));
        }
Example #14
0
 public static FreshlyLoadedObjectData CreateFreshlyLoadedObjectData(ObjectID objectID)
 {
     return(new FreshlyLoadedObjectData(DataContainerObjectMother.Create(objectID)));
 }