Пример #1
0
        public override void SetUp()
        {
            base.SetUp();

            _transaction       = ClientTransactionObjectMother.Create();
            _eventSinkWithMock = MockRepository.GenerateStrictMock <IClientTransactionEventSink>();
            _invalidDomainObjectManagerMock = MockRepository.GenerateStrictMock <IInvalidDomainObjectManager> ();
            _dataManagerMock = MockRepository.GenerateStrictMock <IDataManager> ();
            _enlistedDomainObjectManagerMock = MockRepository.GenerateStrictMock <IEnlistedDomainObjectManager> ();
            _persistenceStrategyMock         = MockRepository.GenerateStrictMock <IPersistenceStrategy>();

            _agent = new ObjectLifetimeAgent(
                _transaction,
                _eventSinkWithMock,
                _invalidDomainObjectManagerMock,
                _dataManagerMock,
                _enlistedDomainObjectManagerMock,
                _persistenceStrategyMock);

            _objectID1      = DomainObjectIDs.Order1;
            _domainObject1  = DomainObjectMother.CreateFakeObject(_objectID1);
            _dataContainer1 = DataContainerObjectMother.CreateExisting(_domainObject1);

            _objectID2      = DomainObjectIDs.Order3;
            _domainObject2  = DomainObjectMother.CreateFakeObject(_objectID2);
            _dataContainer2 = DataContainerObjectMother.CreateExisting(_domainObject2);

            _domainObjectCreatorMock       = MockRepository.GenerateStrictMock <IDomainObjectCreator>();
            _typeDefinitionWithCreatorMock = ClassDefinitionObjectMother.CreateClassDefinitionWithTable(
                TestDomainStorageProviderDefinition,
                classType: typeof(OrderItem),
                instanceCreator: _domainObjectCreatorMock);

            _objectIDWithCreatorMock = new ObjectID(_typeDefinitionWithCreatorMock, Guid.NewGuid());
        }
Пример #2
0
        public void GetObjectReference_UnknownObject_WithSubTransaction_PutsRootTransactionIntoContext()
        {
            var subTransaction = _transaction.CreateSubTransaction();
            var agent          = new ObjectLifetimeAgent(
                subTransaction,
                _eventSinkWithMock,
                _invalidDomainObjectManagerMock,
                _dataManagerMock,
                _enlistedDomainObjectManagerMock,
                _persistenceStrategyMock);

            _invalidDomainObjectManagerMock.Stub(stub => stub.IsInvalid(_objectIDWithCreatorMock)).Return(false);
            _enlistedDomainObjectManagerMock.Stub(stub => stub.GetEnlistedDomainObject(_objectIDWithCreatorMock)).Return(null);

            _domainObjectCreatorMock
            .Expect(mock => mock.CreateObjectReference(Arg <ObjectReferenceInitializationContext> .Is.TypeOf, Arg.Is(subTransaction)))
            .Return(_domainObject1)
            .WhenCalled(
                mi => CheckInitializationContext <ObjectReferenceInitializationContext> (mi.Arguments[0], _objectIDWithCreatorMock, _transaction));

            var result = agent.GetObjectReference(_objectIDWithCreatorMock);

            _domainObjectCreatorMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(_domainObject1));
        }
Пример #3
0
        public void Serialization()
        {
            var instance = new ObjectLifetimeAgent(
                _transaction,
                new SerializableClientTransactionEventSinkFake(),
                new SerializableInvalidDomainObjectManagerFake(),
                new SerializableDataManagerFake(),
                new SerializableEnlistedDomainObjectManagerFake(),
                new SerializablePersistenceStrategyFake());

            var deserializedInstance = Serializer.SerializeAndDeserialize(instance);

            Assert.That(deserializedInstance.ClientTransaction, Is.Not.Null);
            Assert.That(deserializedInstance.EventSink, Is.Not.Null);
            Assert.That(deserializedInstance.InvalidDomainObjectManager, Is.Not.Null);
            Assert.That(deserializedInstance.DataManager, Is.Not.Null);
            Assert.That(deserializedInstance.EnlistedDomainObjectManager, Is.Not.Null);
            Assert.That(deserializedInstance.PersistenceStrategy, Is.Not.Null);
        }
Пример #4
0
        public void NewObject_WithSubTransaction()
        {
            var subTransaction = _transaction.CreateSubTransaction();
            var agent          = new ObjectLifetimeAgent(
                subTransaction,
                _eventSinkWithMock,
                _invalidDomainObjectManagerMock,
                _dataManagerMock,
                _enlistedDomainObjectManagerMock,
                _persistenceStrategyMock);

            _eventSinkWithMock.Stub(mock => mock.RaiseNewObjectCreatingEvent(Arg <Type> .Is.Anything));
            _persistenceStrategyMock.Stub(mock => mock.CreateNewObjectID(Arg <ClassDefinition> .Is.Anything)).Return(_objectID1);
            _domainObjectCreatorMock
            .Expect(mock => mock.CreateNewObject(Arg <IObjectInitializationContext> .Is.Anything, Arg.Is(ParamList.Empty), Arg.Is(subTransaction)))
            .WhenCalled(mi => CheckInitializationContext <NewObjectInitializationContext> (mi.Arguments[0], _objectID1, _transaction))
            .Return(_domainObject1);

            agent.NewObject(_typeDefinitionWithCreatorMock, ParamList.Empty);

            _domainObjectCreatorMock.VerifyAllExpectations();
        }