public virtual IDataManager CreateDataManager( ClientTransaction constructedTransaction, IClientTransactionEventSink eventSink, IInvalidDomainObjectManager invalidDomainObjectManager, IPersistenceStrategy persistenceStrategy, ITransactionHierarchyManager hierarchyManager) { ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction); ArgumentUtility.CheckNotNull("eventSink", eventSink); ArgumentUtility.CheckNotNull("invalidDomainObjectManager", invalidDomainObjectManager); ArgumentUtility.CheckNotNull("persistenceStrategy", persistenceStrategy); ArgumentUtility.CheckNotNull("hierarchyManager", hierarchyManager); var dataContainerEventListener = CreateDataContainerEventListener(eventSink); var delegatingDataManager = new DelegatingDataManager(); var objectLoader = CreateObjectLoader( constructedTransaction, eventSink, persistenceStrategy, invalidDomainObjectManager, delegatingDataManager, hierarchyManager); var endPointManager = CreateRelationEndPointManager( constructedTransaction, GetEndPointProvider(delegatingDataManager), GetLazyLoader(delegatingDataManager), eventSink); var dataManager = new DataManager( constructedTransaction, eventSink, dataContainerEventListener, invalidDomainObjectManager, objectLoader, endPointManager); delegatingDataManager.InnerDataManager = dataManager; return(dataManager); }
private void CheckDelegation(Action <IDataManager> action) { var innerMock = MockRepository.GenerateStrictMock <IDataManager> (); var delegatingDataManager = new DelegatingDataManager(); delegatingDataManager.InnerDataManager = innerMock; var helper = new DecoratorTestHelper <IDataManager> (delegatingDataManager, innerMock); helper.CheckDelegation(action); delegatingDataManager.InnerDataManager = null; Assert.That( () => action(delegatingDataManager), Throws.InvalidOperationException.With.Message.EqualTo("InnerDataManager property must be set before it can be used.")); }
public void CreateDataManager() { var fakeEventSink = MockRepository.GenerateStub <IClientTransactionEventSink> (); var fakeInvalidDomainObjectManager = MockRepository.GenerateStub <IInvalidDomainObjectManager> (); var fakePersistenceStrategy = MockRepository.GenerateStub <IPersistenceStrategy>(); var fakeDataContainerEventListener = MockRepository.GenerateStub <IDataContainerEventListener> (); var fakeEndPointProvider = MockRepository.GenerateStub <IRelationEndPointProvider> (); var fakeLazyLoader = MockRepository.GenerateStub <ILazyLoader> (); var fakeRelationEndPointManager = MockRepository.GenerateStub <IRelationEndPointManager> (); var fakeObjectLoader = MockRepository.GenerateStub <IObjectLoader> (); var fakeHierarchyManager = MockRepository.GenerateStub <ITransactionHierarchyManager> (); DelegatingDataManager endPointProviderDataManager = null; DelegatingDataManager lazyLoaderDataManager = null; DelegatingDataManager objectLoaderDataManager = null; var factoryPartialMock = MockRepository.GeneratePartialMock <TestableClientTransactionComponentFactoryBase>(); factoryPartialMock .Expect(mock => mock.CallCreateDataContainerEventListener(fakeEventSink)) .Return(fakeDataContainerEventListener); factoryPartialMock .Expect(mock => mock.CallGetEndPointProvider(Arg <DelegatingDataManager> .Is.TypeOf)) .Return(fakeEndPointProvider) .WhenCalled(mi => endPointProviderDataManager = (DelegatingDataManager)mi.Arguments[0]); factoryPartialMock .Expect(mock => mock.CallGetLazyLoader(Arg <DelegatingDataManager> .Is.TypeOf)) .Return(fakeLazyLoader) .WhenCalled(mi => lazyLoaderDataManager = (DelegatingDataManager)mi.Arguments[0]); factoryPartialMock .Expect( mock => mock.CallCreateRelationEndPointManager(_fakeConstructedTransaction, fakeEndPointProvider, fakeLazyLoader, fakeEventSink)) .Return(fakeRelationEndPointManager); factoryPartialMock .Expect( mock => mock.CallCreateObjectLoader( Arg.Is(_fakeConstructedTransaction), Arg.Is(fakeEventSink), Arg.Is(fakePersistenceStrategy), Arg.Is(fakeInvalidDomainObjectManager), Arg <DelegatingDataManager> .Is.TypeOf, Arg.Is(fakeHierarchyManager))) .Return(fakeObjectLoader) .WhenCalled(mi => objectLoaderDataManager = (DelegatingDataManager)mi.Arguments[4]); factoryPartialMock.Replay(); var dataManager = (DataManager)factoryPartialMock.CreateDataManager( _fakeConstructedTransaction, fakeEventSink, fakeInvalidDomainObjectManager, fakePersistenceStrategy, fakeHierarchyManager); factoryPartialMock.VerifyAllExpectations(); Assert.That(endPointProviderDataManager.InnerDataManager, Is.SameAs(dataManager)); Assert.That(lazyLoaderDataManager.InnerDataManager, Is.SameAs(dataManager)); Assert.That(objectLoaderDataManager.InnerDataManager, Is.SameAs(dataManager)); Assert.That(dataManager.ClientTransaction, Is.SameAs(_fakeConstructedTransaction)); Assert.That(dataManager.TransactionEventSink, Is.SameAs(fakeEventSink)); Assert.That(dataManager.DataContainerEventListener, Is.SameAs(fakeDataContainerEventListener)); Assert.That(DataManagerTestHelper.GetInvalidDomainObjectManager(dataManager), Is.SameAs(fakeInvalidDomainObjectManager)); Assert.That(DataManagerTestHelper.GetObjectLoader(dataManager), Is.SameAs(fakeObjectLoader)); Assert.That(DataManagerTestHelper.GetRelationEndPointManager(dataManager), Is.SameAs(fakeRelationEndPointManager)); }