public void FlattenedSerializable()
        {
            var state = new CompleteCollectionEndPointLoadState(
                new SerializableCollectionEndPointDataManagerFake(),
                new SerializableRelationEndPointProviderFake(),
                new SerializableClientTransactionEventSinkFake());

            var oppositeEndPoint = new SerializableRealObjectEndPointFake(null, _relatedObject);

            AddUnsynchronizedOppositeEndPoint(state, oppositeEndPoint);

            var result = FlattenedSerializer.SerializeAndDeserialize(state);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.DataManager, Is.Not.Null);
            Assert.That(result.TransactionEventSink, Is.Not.Null);
            Assert.That(result.EndPointProvider, Is.Not.Null);
            Assert.That(result.UnsynchronizedOppositeEndPoints.Count, Is.EqualTo(1));
        }
        public void SetDataFromSubTransaction()
        {
            var counter = new OrderedExpectationCounter();

            _collectionEndPointMock.Stub(stub => stub.GetCollectionEventRaiser()).Return(_eventRaiserMock);

            var sourceDataManager = MockRepository.GenerateStub <ICollectionEndPointDataManager> ();
            var sourceLoadState   = new CompleteCollectionEndPointLoadState(sourceDataManager, _endPointProviderStub, _transactionEventSinkStub);

            _dataManagerMock.Expect(mock => mock.SetDataFromSubTransaction(sourceDataManager, _endPointProviderStub)).Ordered(counter);
            _dataManagerMock.Replay();

            _eventRaiserMock.Expect(mock => mock.WithinReplaceData()).Ordered(counter);
            _eventRaiserMock.Replay();

            _loadState.SetDataFromSubTransaction(_collectionEndPointMock, sourceLoadState);

            _dataManagerMock.VerifyAllExpectations();
            _eventRaiserMock.VerifyAllExpectations();
        }
        public override void SetUp()
        {
            base.SetUp();

            _definition = Configuration.GetTypeDefinition(typeof(Customer)).GetRelationEndPointDefinition(typeof(Customer).FullName + ".Orders");

            _collectionEndPointMock = MockRepository.GenerateStrictMock <ICollectionEndPoint>();
            _dataManagerMock        = MockRepository.GenerateStrictMock <ICollectionEndPointDataManager>();
            _dataManagerMock.Stub(stub => stub.EndPointID).Return(RelationEndPointID.Create(DomainObjectIDs.Customer1, _definition));
            _endPointProviderStub     = MockRepository.GenerateStub <IRelationEndPointProvider> ();
            _transactionEventSinkStub = MockRepository.GenerateStub <IClientTransactionEventSink> ();
            _eventRaiserMock          = MockRepository.GenerateStrictMock <IDomainObjectCollectionEventRaiser>();

            _loadState = new CompleteCollectionEndPointLoadState(_dataManagerMock, _endPointProviderStub, _transactionEventSinkStub);

            _relatedObject       = DomainObjectMother.CreateFakeObject <Order> (DomainObjectIDs.Order1);
            _relatedEndPointStub = MockRepository.GenerateStub <IRealObjectEndPoint> ();
            _relatedEndPointStub.Stub(stub => stub.GetDomainObjectReference()).Return(_relatedObject);
            _relatedEndPointStub.Stub(stub => stub.ObjectID).Return(_relatedObject.ID);
            _owningObject          = DomainObjectMother.CreateFakeObject <Customer>();
            _collectionManagerStub = MockRepository.GenerateStub <ICollectionEndPointCollectionManager> ();
        }
        private void AddUnsynchronizedOppositeEndPoint(CompleteCollectionEndPointLoadState loadState, IRealObjectEndPoint oppositeEndPoint)
        {
            var dictionary = (Dictionary <ObjectID, IRealObjectEndPoint>)PrivateInvoke.GetNonPublicField(loadState, "_unsynchronizedOppositeEndPoints");

            dictionary.Add(oppositeEndPoint.ObjectID, oppositeEndPoint);
        }