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)); }
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(); }