public void AccessObjectInFilterQueryResult()
        {
            using (TestableClientTransaction.CreateSubTransaction().EnterDiscardingScope())
            {
                var extensionMock = MockRepository.GenerateMock <IClientTransactionExtension> ();

                DomainObjectIDs.Order1.GetObject <Order> ();
                extensionMock.Stub(stub => stub.Key).Return("stub");
                extensionMock.Replay();
                TestableClientTransaction.Extensions.Add(extensionMock);
                try
                {
                    extensionMock.BackToRecord();

                    var query = QueryFactory.CreateQueryFromConfiguration("OrderQuery");
                    query.Parameters.Add("@customerID", DomainObjectIDs.Customer3);

                    var newQueryResult = TestQueryFactory.CreateTestQueryResult <DomainObject> ();

                    extensionMock
                    .Expect(mock => mock.FilterQueryResult(Arg <ClientTransaction> .Is.Anything, Arg <QueryResult <DomainObject> > .Is.Anything))
                    .WhenCalled(mi => DomainObjectIDs.Order1.GetObject <Order> ())
                    .Return(newQueryResult);

                    extensionMock.Replay();
                    ClientTransaction.Current.QueryManager.GetCollection(query);
                    extensionMock.VerifyAllExpectations();
                }
                finally
                {
                    TestableClientTransaction.Extensions.Remove("stub");
                }
            }
        }
        public void CollectionQuery_CallsFilterQueryResult_AndAllowsGetObjectDuringFiltering()
        {
            var listenerMock = MockRepository.GenerateMock <IClientTransactionListener> ();

            listenerMock
            .Expect(mock => mock.FilterQueryResult(Arg.Is(TestableClientTransaction), Arg <QueryResult <DomainObject> > .Is.Anything))
            .Return(TestQueryFactory.CreateTestQueryResult <DomainObject> ())
            .WhenCalled(mi => DomainObjectIDs.OrderItem1.GetObject <OrderItem>());
            TestableClientTransaction.AddListener(listenerMock);

            var query = QueryFactory.CreateQueryFromConfiguration("OrderQuery");

            query.Parameters.Add("customerID", DomainObjectIDs.Customer1);
            TestableClientTransaction.QueryManager.GetCollection(query);

            listenerMock.VerifyAllExpectations();
            listenerMock.BackToRecord(); // For Discarding
        }
Example #3
0
        public void LinqQuery_CallsFilterQueryResult()
        {
            var extensionKey  = "LinqQuery_CallsFilterQueryResult_Key";
            var extensionMock = MockRepository.GenerateMock <IClientTransactionExtension>();

            extensionMock.Stub(stub => stub.Key).Return(extensionKey);
            extensionMock
            .Expect(mock => mock.FilterQueryResult(Arg.Is(TestableClientTransaction), Arg <QueryResult <DomainObject> > .Is.Anything))
            .Return(TestQueryFactory.CreateTestQueryResult <DomainObject>());

            TestableClientTransaction.Extensions.Add(extensionMock);
            try
            {
                var query = from o in QueryFactory.CreateLinqQuery <Order>() where o.Customer.ID == DomainObjectIDs.Customer1 select o;
                query.ToArray();

                extensionMock.VerifyAllExpectations();
            }
            finally
            {
                TestableClientTransaction.Extensions.Remove(extensionKey);
            }
        }