public void PerformEagerFetching_WithExceptionInAgent()
        {
            var fetchQueries = new EagerFetchQueryCollection {
                { _orderTicketEndPointDefinition, _fetchQueryStub1 }
            };

            var originatingObjectsData = new[] { _originatingOrderData1, _originatingOrderData2 };
            var relatedObjectsData     = new[] { _fetchedOrderItemData1, _fetchedOrderItemData2, _fetchedOrderItemData3 };

            _fetchResultLoaderMock
            .Expect(mock => mock.GetOrLoadFetchQueryResult(_fetchQueryStub1, _pendingRegistrationCollector))
            .Return(relatedObjectsData);
            _fetchResultLoaderMock.Replay();

            var invalidOperationException = new InvalidOperationException("There was a problem registering stuff.");

            _registrationAgentMock
            .Expect(mock => mock.GroupAndRegisterRelatedObjects(_orderTicketEndPointDefinition, originatingObjectsData, relatedObjectsData))
            .Throw(invalidOperationException);
            _registrationAgentMock.Replay();

            Assert.That(
                () =>
                _eagerFetcher.PerformEagerFetching(originatingObjectsData, fetchQueries, _fetchResultLoaderMock, _pendingRegistrationCollector),
                Throws.Exception.TypeOf <UnexpectedQueryResultException> ()
                .And.With.InnerException.SameAs(invalidOperationException)
                .And.With.Message.EqualTo("Eager fetching encountered an unexpected query result: There was a problem registering stuff."));

            _fetchResultLoaderMock.VerifyAllExpectations();
            _registrationAgentMock.VerifyAllExpectations();
        }
        public void PerformEagerFetching()
        {
            var fetchQueries = new EagerFetchQueryCollection
            {
                { _orderTicketEndPointDefinition, _fetchQueryStub1 },
                { _customerEndPointDefinition, _fetchQueryStub2 }
            };

            var originatingObjectsData = new[] { _originatingOrderData1, _originatingOrderData2 };
            var relatedObjectsData1    = new[] { _fetchedOrderItemData1, _fetchedOrderItemData2, _fetchedOrderItemData3 };
            var relatedObjectsData2    = new[] { _fetchedCustomerData };

            _fetchResultLoaderMock
            .Expect(mock => mock.GetOrLoadFetchQueryResult(_fetchQueryStub1, _pendingRegistrationCollector))
            .Return(relatedObjectsData1);
            _fetchResultLoaderMock
            .Expect(mock => mock.GetOrLoadFetchQueryResult(_fetchQueryStub2, _pendingRegistrationCollector))
            .Return(relatedObjectsData2);
            _fetchResultLoaderMock.Replay();

            _registrationAgentMock
            .Expect(mock => mock.GroupAndRegisterRelatedObjects(_orderTicketEndPointDefinition, originatingObjectsData, relatedObjectsData1));
            _registrationAgentMock
            .Expect(mock => mock.GroupAndRegisterRelatedObjects(_customerEndPointDefinition, originatingObjectsData, relatedObjectsData2));
            _registrationAgentMock.Replay();

            _eagerFetcher.PerformEagerFetching(originatingObjectsData, fetchQueries, _fetchResultLoaderMock, _pendingRegistrationCollector);

            _fetchResultLoaderMock.VerifyAllExpectations();
            _registrationAgentMock.VerifyAllExpectations();
        }
        public void PerformEagerFetching_NestedEagerFetching_NotHandled()
        {
            var fetchQueries = new EagerFetchQueryCollection {
                { _customerEndPointDefinition, _fetchQueryStub1 }
            };

            _fetchQueryStub1
            .Stub(stub => stub.EagerFetchQueries)
            .Return(new EagerFetchQueryCollection {
                { _industrialSectorEndPointDefinition, _fetchQueryStub2 }
            });

            var originatingObjectsData = new[] { _originatingOrderData1, _originatingOrderData2 };
            var relatedObjectsData     = new[] { _fetchedCustomerData };

            _fetchResultLoaderMock
            .Expect(mock => mock.GetOrLoadFetchQueryResult(_fetchQueryStub1, _pendingRegistrationCollector))
            .Return(relatedObjectsData);
            _fetchResultLoaderMock.Replay();

            _registrationAgentMock
            .Expect(mock => mock.GroupAndRegisterRelatedObjects(_customerEndPointDefinition, originatingObjectsData, relatedObjectsData));
            _registrationAgentMock.Replay();

            _eagerFetcher.PerformEagerFetching(originatingObjectsData, fetchQueries, _fetchResultLoaderMock, _pendingRegistrationCollector);

            _fetchResultLoaderMock.VerifyAllExpectations();
            _registrationAgentMock.VerifyAllExpectations();
        }
Exemplo n.º 4
0
        private void CheckSingleFetchRequest(
            EagerFetchQueryCollection fetchQueryCollection, Type sourceType, string fetchedProperty, string expectedFetchQueryText)
        {
            var relationEndPointDefinition = GetEndPointDefinition(sourceType, fetchedProperty);

            CheckSingleFetchRequest(fetchQueryCollection, relationEndPointDefinition, expectedFetchQueryText);
        }
Exemplo n.º 5
0
        private static void CheckSingleFetchRequest(
            EagerFetchQueryCollection fetchQueryCollection, IRelationEndPointDefinition relationEndPointDefinition, string expectedFetchQueryText)
        {
            Assert.That(fetchQueryCollection.Count, Is.EqualTo(1));
            var fetchQuery = fetchQueryCollection.Single();

            Assert.That(fetchQuery.Key, Is.EqualTo(relationEndPointDefinition));
            Assert.That(fetchQuery.Value.Statement, Is.EqualTo(expectedFetchQueryText));
        }
        public override void SetUp()
        {
            base.SetUp();

            _query1 = QueryFactory.CreateQuery(TestQueryFactory.CreateOrderSumQueryDefinition());
            _query2 = QueryFactory.CreateQuery(TestQueryFactory.CreateOrderQueryWithCustomCollectionType());

            _endPointDefinition1 = DomainObjectIDs.Order1.ClassDefinition.GetMandatoryRelationEndPointDefinition(typeof(Order).FullName + ".OrderItems");
            _endPointDefinition2 = DomainObjectIDs.Customer1.ClassDefinition.GetMandatoryRelationEndPointDefinition(typeof(Customer).FullName + ".Orders");

            _objectEndPointDefinition = DomainObjectIDs.Order1.ClassDefinition.GetMandatoryRelationEndPointDefinition(typeof(Order).FullName + ".OrderTicket");

            _collection = new EagerFetchQueryCollection();
        }
        public void PerformEagerFetching_NoOriginatingObjects()
        {
            var fetchQueries = new EagerFetchQueryCollection {
                { _orderTicketEndPointDefinition, _fetchQueryStub1 }
            };

            var originatingObjectsData = new ILoadedObjectData[0];

            _fetchResultLoaderMock.Replay();
            _registrationAgentMock.Replay();

            _eagerFetcher.PerformEagerFetching(originatingObjectsData, fetchQueries, _fetchResultLoaderMock, _pendingRegistrationCollector);

            _fetchResultLoaderMock.AssertWasNotCalled(mock => mock.GetOrLoadFetchQueryResult(_fetchQueryStub1, _pendingRegistrationCollector));

            _fetchResultLoaderMock.VerifyAllExpectations();
            _registrationAgentMock.VerifyAllExpectations();
        }
        public void DelegatedMembers()
        {
            var testHelper = new DecoratorTestHelper <IQuery> (_queryAdapterBase, _queryMock);

            var parameterCollection = new QueryParameterCollection {
                { "p1", 7 }
            };
            var eagerFetchQueries =
                new EagerFetchQueryCollection {
                { GetEndPointDefinition(typeof(Order), "OrderTicket"), MockRepository.GenerateStub <IQuery>() }
            };

            testHelper.CheckDelegation(q => q.ID, "Some ID");
            testHelper.CheckDelegation(q => q.Statement, "Some Statement");
            testHelper.CheckDelegation(q => q.StorageProviderDefinition, TestDomainStorageProviderDefinition);
            testHelper.CheckDelegation(q => q.CollectionType, typeof(OrderCollection));
            testHelper.CheckDelegation(q => q.QueryType, QueryType.Collection);
            testHelper.CheckDelegation(q => q.Parameters, parameterCollection);
            testHelper.CheckDelegation(q => q.EagerFetchQueries, eagerFetchQueries);
        }