Esempio n. 1
0
        public void Serializable()
        {
            var decorator = new ReadOnlyCollectionDataDecorator(new DomainObjectCollectionData(new[] { _order1, _order3, _order4 }));
            var result    = Serializer.SerializeAndDeserialize(decorator);

            Assert.That(result.Count, Is.EqualTo(3));
        }
        public override void SetUp()
        {
            base.SetUp();

            _owningOrder = DomainObjectIDs.Order1.GetObject <Order> ();
            _endPointID  = RelationEndPointID.Resolve(_owningOrder, o => o.OrderItems);

            _collectionEndPointMock = MockRepository.GenerateStrictMock <ICollectionEndPoint>();
            StubCollectionEndPoint(_collectionEndPointMock, TestableClientTransaction, _owningOrder);
            _virtualEndPointProviderStub = MockRepository.GenerateStub <IVirtualEndPointProvider> ();
            _virtualEndPointProviderStub
            .Stub(stub => stub.GetOrCreateVirtualEndPoint(_endPointID))
            .Return(_collectionEndPointMock);

            _endPointDataStub      = MockRepository.GenerateStub <IDomainObjectCollectionData>();
            _endPointDataDecorator = new ReadOnlyCollectionDataDecorator(_endPointDataStub);

            _commandStub       = MockRepository.GenerateStub <IDataManagementCommand>();
            _nestedCommandMock = MockRepository.GenerateMock <IDataManagementCommand> ();
            _nestedCommandMock.Stub(stub => stub.GetAllExceptions()).Return(new Exception[0]);
            _expandedCommandFake = new ExpandedCommand(_nestedCommandMock);

            _delegatingData = new EndPointDelegatingCollectionData(_endPointID, _virtualEndPointProviderStub);

            _orderItem1 = DomainObjectIDs.OrderItem1.GetObject <OrderItem>();
            _orderItem2 = DomainObjectIDs.OrderItem2.GetObject <OrderItem>();

            ClientTransactionScope.EnterNullScope(); // no active transaction
        }
        /// <summary>
        /// Creates a stand-alone read-only collection of the given <paramref name="collectionType"/> via reflection. Read-onlyness is enforced by a
        /// <see cref="ReadOnlyCollectionDataDecorator"/>. The collection is initialized to have the given initial <paramref name="content"/>.
        /// The collection must provide a constructor that takes a single parameter of type <see cref="IDomainObjectCollectionData"/>.
        /// </summary>
        /// <param name="collectionType">The type of the collection to create.</param>
        /// <param name="content">The initial content of the collection. This must not contain duplicates or <see langword="null" /> values.</param>
        /// <returns>A stand-alone read-only instance of <paramref name="collectionType"/>.</returns>
        /// <remarks>
        /// The <see cref="DomainObjectCollection"/> returned is read-only, its content cannot be changed.
        /// </remarks>
        public DomainObjectCollection CreateReadOnlyCollection(Type collectionType, IEnumerable <DomainObject> content)
        {
            ArgumentUtility.CheckNotNull("collectionType", collectionType);
            ArgumentUtility.CheckNotNull("content", content);

            var dataStrategy = new ReadOnlyCollectionDataDecorator(new DomainObjectCollectionData(content));

            return(CreateCollection(collectionType, dataStrategy));
        }
        public void GetCollectionData()
        {
            var collectionDataStub = new ReadOnlyCollectionDataDecorator(MockRepository.GenerateStub <IDomainObjectCollectionData> ());

            _dataManagerMock.Stub(stub => stub.OriginalCollectionData).Return(collectionDataStub);

            var result = _loadState.GetOriginalData(_collectionEndPointMock);

            Assert.That(result, Is.SameAs(collectionDataStub));
        }
        public void DelegatedMembers()
        {
            var endPointID = RelationEndPointID.Create(DomainObjectIDs.Order1, typeof(Order), "OrderItems");
            var endPoint   = MockRepository.GenerateStub <IRealObjectEndPoint>();
            var readOnlyCollectionDataDecorator = new ReadOnlyCollectionDataDecorator(new DomainObjectCollectionData());
            var domainObjectCollection          = new DomainObjectCollection();
            var eventRaiser = MockRepository.GenerateStub <IDomainObjectCollectionEventRaiser>();
            var orderItem   = DomainObjectMother.CreateFakeObject <OrderItem> ();

            _listenerMock.Replay();

            _decoratorTestHelper.CheckDelegation(ep => ep.IsNull, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.IsNull, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.ClientTransaction, ClientTransaction.CreateRootTransaction());
            _decoratorTestHelper.CheckDelegation(ep => ep.ObjectID, DomainObjectIDs.Order1);
            _decoratorTestHelper.CheckDelegation(ep => ep.Definition, GetEndPointDefinition(typeof(Order), "OrderItems"));
            _decoratorTestHelper.CheckDelegation(ep => ep.RelationDefinition, GetRelationDefinition(typeof(Order), "OrderItems"));
            _decoratorTestHelper.CheckDelegation(ep => ep.HasChanged, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.HasChanged, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.HasBeenTouched, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.HasBeenTouched, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.GetDomainObject(), orderItem);
            _decoratorTestHelper.CheckDelegation(ep => ep.GetDomainObjectReference(), orderItem);
            _decoratorTestHelper.CheckDelegation(ep => ep.IsDataComplete, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.IsDataComplete, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.EnsureDataComplete());
            _decoratorTestHelper.CheckDelegation(ep => ep.IsSynchronized, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.IsSynchronized, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.IsSynchronized, null);
            _decoratorTestHelper.CheckDelegation(ep => ep.Touch());
            _decoratorTestHelper.CheckDelegation(ep => ep.ValidateMandatory());
            _decoratorTestHelper.CheckDelegation(ep => ep.GetOppositeRelationEndPointIDs(), new[] { endPointID });
            _decoratorTestHelper.CheckDelegation(ep => ep.CanBeCollected, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.CanBeCollected, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.CanBeMarkedIncomplete, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.CanBeMarkedIncomplete, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.MarkDataIncomplete());
            _decoratorTestHelper.CheckDelegation(ep => ep.RegisterOriginalOppositeEndPoint(endPoint));
            _decoratorTestHelper.CheckDelegation(ep => ep.UnregisterOriginalOppositeEndPoint(endPoint));
            _decoratorTestHelper.CheckDelegation(ep => ep.RegisterCurrentOppositeEndPoint(endPoint));
            _decoratorTestHelper.CheckDelegation(ep => ep.UnregisterCurrentOppositeEndPoint(endPoint));
            _decoratorTestHelper.CheckDelegation(ep => ep.GetData(), readOnlyCollectionDataDecorator);
            _decoratorTestHelper.CheckDelegation(ep => ep.GetOriginalData(), readOnlyCollectionDataDecorator);
            _decoratorTestHelper.CheckDelegation(ep => ep.Collection, domainObjectCollection);
            _decoratorTestHelper.CheckDelegation(ep => ep.OriginalCollection, domainObjectCollection);
            _decoratorTestHelper.CheckDelegation(ep => ep.GetCollectionEventRaiser(), eventRaiser);
            _decoratorTestHelper.CheckDelegation(ep => ep.GetCollectionWithOriginalData(), domainObjectCollection);
            _decoratorTestHelper.CheckDelegation(ep => ep.MarkDataComplete(new[] { orderItem }));

            _innerEndPointMock.BackToRecord();

            _decoratorTestHelper.CheckDelegation(ep => ep.HasChangedFast, true);
            _decoratorTestHelper.CheckDelegation(ep => ep.HasChangedFast, false);
            _decoratorTestHelper.CheckDelegation(ep => ep.HasChangedFast, null);
        }
Esempio n. 6
0
        public override void SetUp()
        {
            base.SetUp();
            _wrappedDataStub   = MockRepository.GenerateStub <IDomainObjectCollectionData>();
            _readOnlyDecorator = new ReadOnlyCollectionDataDecorator(_wrappedDataStub);

            _order1 = DomainObjectIDs.Order1.GetObject <Order> ();
            _order3 = DomainObjectIDs.Order3.GetObject <Order> ();
            _order4 = DomainObjectIDs.Order4.GetObject <Order> ();
            _order5 = DomainObjectIDs.Order5.GetObject <Order> ();
        }
Esempio n. 7
0
        public void GetOriginalData()
        {
            var fakeResult = new ReadOnlyCollectionDataDecorator(new DomainObjectCollectionData());

            _loadStateMock.Expect(mock => mock.GetOriginalData(_endPoint)).Return(fakeResult);
            _loadStateMock.Replay();

            var result = _endPoint.GetOriginalData();

            _loadStateMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(fakeResult));
        }
        public static void MakeCollectionReadOnly(DomainObjectCollection collection)
        {
            // strip off all decorators
            var checkingDecorator = GetDataStrategyAndCheckType <ModificationCheckingCollectionDataDecorator> (collection);
            var originalStrategy  = GetWrappedData(checkingDecorator);

            if (originalStrategy is EventRaisingCollectionDataDecorator)
            {
                originalStrategy = GetWrappedData((EventRaisingCollectionDataDecorator)originalStrategy);
            }

            var newStrategy = new ReadOnlyCollectionDataDecorator(originalStrategy);

            SetDataStrategy(collection, newStrategy);
        }
Esempio n. 9
0
        public void GetCollectionWithOriginalData()
        {
            var collectionDataStub = MockRepository.GenerateStub <IDomainObjectCollectionData> ();

            collectionDataStub.Stub(stub => stub.RequiredItemType).Return(typeof(Order));
            var readOnlyCollectionDataDecorator = new ReadOnlyCollectionDataDecorator(collectionDataStub);

            _loadStateMock.Stub(stub => stub.GetOriginalData(_endPoint)).Return(readOnlyCollectionDataDecorator);
            _loadStateMock.Replay();

            var result = _endPoint.GetCollectionWithOriginalData();

            Assert.That(result, Is.TypeOf(typeof(OrderCollection)));
            var actualCollectionData = DomainObjectCollectionDataTestHelper.GetDataStrategy(result);

            Assert.That(actualCollectionData, Is.SameAs(readOnlyCollectionDataDecorator));
        }
Esempio n. 10
0
        private OrderCollection CreateAssociatedCollectionWithEndPointStub()
        {
            var collectionEndPointStub = MockRepository.GenerateStub <ICollectionEndPoint> ();
            var endPointDataStub       = new ReadOnlyCollectionDataDecorator(new DomainObjectCollectionData());

            collectionEndPointStub.Stub(stub => stub.GetData()).Return(endPointDataStub);

            var virtualEndPointProviderStub = MockRepository.GenerateStub <IVirtualEndPointProvider>();
            var endPointID = RelationEndPointID.Create(DomainObjectIDs.Customer1, typeof(Customer), "Orders");

            virtualEndPointProviderStub.Stub(stub => stub.GetOrCreateVirtualEndPoint(endPointID)).Return(collectionEndPointStub);

            var delegatingStrategy   = new EndPointDelegatingCollectionData(endPointID, virtualEndPointProviderStub);
            var associatedCollection = new OrderCollection(new ModificationCheckingCollectionDataDecorator(typeof(Order), delegatingStrategy));

            Assert.That(DomainObjectCollectionDataTestHelper.GetAssociatedEndPoint(associatedCollection), Is.SameAs(collectionEndPointStub));
            return(associatedCollection);
        }