protected virtual RelationEndPointFactory CreateRelationEndPointFactory(
            ClientTransaction constructedTransaction,
            IRelationEndPointProvider endPointProvider,
            ILazyLoader lazyLoader,
            IClientTransactionEventSink eventSink,
            IVirtualObjectEndPointDataManagerFactory virtualObjectEndPointDataManagerFactory,
            ICollectionEndPointDataManagerFactory collectionEndPointDataManagerFactory)
        {
            ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction);
            ArgumentUtility.CheckNotNull("endPointProvider", endPointProvider);
            ArgumentUtility.CheckNotNull("lazyLoader", lazyLoader);
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            ArgumentUtility.CheckNotNull("virtualObjectEndPointDataManagerFactory", virtualObjectEndPointDataManagerFactory);
            ArgumentUtility.CheckNotNull("collectionEndPointDataManagerFactory", collectionEndPointDataManagerFactory);

            var associatedCollectionDataStrategyFactory = new AssociatedCollectionDataStrategyFactory(endPointProvider);
            var collectionEndPointCollectionProvider    = new CollectionEndPointCollectionProvider(associatedCollectionDataStrategyFactory);

            return(new RelationEndPointFactory(
                       constructedTransaction,
                       endPointProvider,
                       lazyLoader,
                       eventSink,
                       virtualObjectEndPointDataManagerFactory,
                       collectionEndPointDataManagerFactory,
                       collectionEndPointCollectionProvider,
                       associatedCollectionDataStrategyFactory));
        }
        public void Serialization()
        {
            var instance = new CollectionEndPointCollectionProvider(new SerializableAssociatedCollectionDataStrategyFactoryFake());

            var deserializedInstance = Serializer.SerializeAndDeserialize(instance);

            Assert.That(deserializedInstance.DataStrategyFactory, Is.Not.Null);
        }
        public override void SetUp()
        {
            base.SetUp();

            _associatedCollectionDataStrategyFactoryMock = MockRepository.GenerateStrictMock <IAssociatedCollectionDataStrategyFactory> ();

            _provider = new CollectionEndPointCollectionProvider(_associatedCollectionDataStrategyFactoryMock);

            _endPointID = RelationEndPointID.Create(DomainObjectIDs.Customer1, typeof(Customer), "Orders");

            _dataStrategyStub = MockRepository.GenerateStub <IDomainObjectCollectionData> ();
            _dataStrategyStub.Stub(stub => stub.RequiredItemType).Return(typeof(Order));
        }