Esempio n. 1
0
        private ClientTransaction CreateTransactionWithStubbedLoading(DataContainer loadableDataContainer)
        {
            var persistenceStrategyStub = MockRepository.GenerateStub <IFetchEnabledPersistenceStrategy>();

            persistenceStrategyStub.Stub(stub => stub.LoadObjectData(loadableDataContainer.ID)).Return(new FreshlyLoadedObjectData(loadableDataContainer));
            persistenceStrategyStub
            .Stub(stub => stub.LoadObjectData(Arg <IEnumerable <ObjectID> > .List.Equal(new[] { loadableDataContainer.ID })))
            .Return(new[] { new FreshlyLoadedObjectData(loadableDataContainer) });
            return(ClientTransactionObjectMother.CreateTransactionWithPersistenceStrategy <ClientTransaction> (persistenceStrategyStub));
        }
Esempio n. 2
0
        public void EagerFetching_OnlyExecutesQueryOnce()
        {
            var outerQuery = QueryFactory.CreateCollectionQuery(
                "test",
                TestDomainStorageProviderDefinition,
                "outerQuery",
                new QueryParameterCollection(),
                typeof(DomainObjectCollection));

            var relationEndPointDefinition = GetEndPointDefinition(typeof(Customer), "Orders");

            var fetchQuery = QueryFactory.CreateCollectionQuery(
                "test fetch",
                TestDomainStorageProviderDefinition,
                "fetchQuery",
                new QueryParameterCollection(),
                typeof(DomainObjectCollection));

            outerQuery.EagerFetchQueries.Add(relationEndPointDefinition, fetchQuery);

            var persistenceStrategyMock = MockRepository.GenerateStrictMock <IFetchEnabledPersistenceStrategy>();
            var customerDataContainer   = TestDataContainerObjectMother.CreateCustomer1DataContainer();
            var orderDataContainer      = TestDataContainerObjectMother.CreateOrder1DataContainer();

            persistenceStrategyMock
            .Expect(mock => mock.ExecuteCollectionQuery(Arg.Is(outerQuery), Arg <ILoadedObjectDataProvider> .Is.Anything))
            .Return(new[] { new FreshlyLoadedObjectData(customerDataContainer) });
            persistenceStrategyMock
            .Expect(mock => mock.ExecuteFetchQuery(Arg.Is(fetchQuery), Arg <ILoadedObjectDataProvider> .Is.Anything))
            .Return(new[] { new LoadedObjectDataWithDataSourceData(new FreshlyLoadedObjectData(orderDataContainer), orderDataContainer) })
            .Repeat.Once();
            persistenceStrategyMock.Replay();

            var clientTransaction = ClientTransactionObjectMother.CreateTransactionWithPersistenceStrategy <ClientTransaction> (persistenceStrategyMock);

            using (clientTransaction.CreateSubTransaction().EnterDiscardingScope())
            {
                var result = ClientTransaction.Current.QueryManager.GetCollection <Customer> (outerQuery).ToArray();
                Assert.That(result, Is.EquivalentTo(new[] { DomainObjectIDs.Customer1.GetObject <Customer>() }));
                Assert.That(result[0].Orders, Is.EquivalentTo(new[] { DomainObjectIDs.Order1.GetObject <Order>() }));
            }

            persistenceStrategyMock.VerifyAllExpectations();
        }