예제 #1
0
        public void GetObjects_LoadedObjects_Events()
        {
            ClientTransaction subTransaction = TestableClientTransaction.CreateSubTransaction();

            using (subTransaction.EnterDiscardingScope())
            {
                var eventReceiver = new ClientTransactionEventReceiver(subTransaction);
                DomainObjectIDs.Order1.GetObject <Order> ();
                DomainObjectIDs.Order3.GetObject <Order> ();
                DomainObjectIDs.OrderItem1.GetObject <OrderItem>();

                eventReceiver.Clear();

                var listenerMock = MockRepository.GenerateMock <IClientTransactionListener> ();
                PrivateInvoke.InvokeNonPublicMethod(subTransaction, "AddListener", listenerMock);

                LifetimeService.GetObjects <DomainObject> (subTransaction, DomainObjectIDs.Order1, DomainObjectIDs.Order3, DomainObjectIDs.OrderItem1);
                Assert.That(eventReceiver.LoadedDomainObjectLists, Is.Empty);

                listenerMock.AssertWasNotCalled(mock => mock.ObjectsLoading(
                                                    Arg <ClientTransaction> .Is.Anything,
                                                    Arg <ReadOnlyCollection <ObjectID> > .Is.Anything));
                listenerMock.AssertWasNotCalled(mock => mock.ObjectsLoaded(
                                                    Arg <ClientTransaction> .Is.Anything,
                                                    Arg <ReadOnlyCollection <DomainObject> > .Is.Anything));
            }
        }
        public void GetObject_Twice()
        {
            DomainObject domainObject1 = LifetimeService.GetObject(TestableClientTransaction, DomainObjectIDs.ClassWithAllDataTypes1, false);

            Assert.That(_eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(1));

            var domainObjects = _eventReceiver.LoadedDomainObjectLists[0];

            Assert.That(domainObjects.Count, Is.EqualTo(1));
            Assert.That(domainObjects[0], Is.SameAs(domainObject1));
            _eventReceiver.Clear();

            DomainObject domainObject2 = LifetimeService.GetObject(TestableClientTransaction, DomainObjectIDs.ClassWithAllDataTypes1, false);

            Assert.That(_eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(0));

            Assert.That(domainObject2, Is.SameAs(domainObject1));
        }
        public void GetRelatedObjectForAlreadyLoadedObjects()
        {
            DomainObject order       = TestableClientTransaction.GetObject(DomainObjectIDs.Order1, false);
            DomainObject orderTicket = TestableClientTransaction.GetObject(DomainObjectIDs.OrderTicket1, false);

            _eventReceiver.Clear();

            Assert.That(
                TestableClientTransaction.GetRelatedObject(
                    RelationEndPointID.Create(order.ID, "Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.OrderTicket")),
                Is.SameAs(orderTicket));

            Assert.That(_eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(0));

            Assert.That(
                TestableClientTransaction.GetRelatedObject(
                    RelationEndPointID.Create(orderTicket.ID, "Remotion.Data.DomainObjects.UnitTests.TestDomain.OrderTicket.Order")),
                Is.SameAs(order));
            Assert.That(_eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(0));
        }
예제 #4
0
        public void IsNullRelatedObjectNonVirtualEndPoint()
        {
            Order newOrder = Order.NewObject();

            Assert.That(newOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.Customer"].IsNull, Is.True);

            newOrder.Customer = Customer.NewObject();
            Assert.That(newOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.Customer"].IsNull, Is.False);

            newOrder.Customer = null;
            Assert.That(newOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.Customer"].IsNull, Is.True);

            var   eventReceiver = new ClientTransactionEventReceiver(ClientTransactionScope.CurrentTransaction);
            Order existingOrder = DomainObjectIDs.Order1.GetObject <Order> ();

            eventReceiver.Clear();
            Assert.That(eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(0));

            Assert.That(existingOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.Customer"].IsNull, Is.False);
            Assert.AreEqual(0, eventReceiver.LoadedDomainObjectLists.Count, "The IsNull check did not cause the object to be loaded.");
        }
예제 #5
0
        public void IsNullRelatedObjectVirtualEndPoint()
        {
            Order newOrder = Order.NewObject();

            Assert.That(newOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.OrderTicket"].IsNull, Is.True);

            newOrder.OrderTicket = OrderTicket.NewObject();
            Assert.That(newOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.OrderTicket"].IsNull, Is.False);

            newOrder.OrderTicket = null;
            Assert.That(newOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.OrderTicket"].IsNull, Is.True);

            var   eventReceiver = new ClientTransactionEventReceiver(ClientTransactionScope.CurrentTransaction);
            Order existingOrder = DomainObjectIDs.Order1.GetObject <Order> ();

            eventReceiver.Clear();
            Assert.That(eventReceiver.LoadedDomainObjectLists.Count, Is.EqualTo(0));

            Assert.That(existingOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.OrderTicket"].IsNull, Is.False);
            Assert.AreEqual(1, eventReceiver.LoadedDomainObjectLists.Count, "For virtual end points, the IsNull unfortunately does cause a load.");

            Assert.That(existingOrder.Properties["Remotion.Data.DomainObjects.UnitTests.TestDomain.Order.OrderTicket"].GetValue <OrderTicket> () == null, Is.False);
            Assert.AreEqual(1, eventReceiver.LoadedDomainObjectLists.Count, "An ordinary check does cause the object to be loaded.");
        }