protected virtual IQuery CreateQuery( string id, StorageProviderDefinition storageProviderDefinition, string statement, CommandParameter[] commandParameters, QueryType queryType) { ArgumentUtility.CheckNotNullOrEmpty("id", id); ArgumentUtility.CheckNotNull("storageProviderDefinition", storageProviderDefinition); ArgumentUtility.CheckNotNull("statement", statement); ArgumentUtility.CheckNotNull("commandParameters", commandParameters); var queryParameters = new QueryParameterCollection(); foreach (var commandParameter in commandParameters) { queryParameters.Add(commandParameter.Name, commandParameter.Value, QueryParameterType.Value); } if (queryType == QueryType.Scalar) { return(QueryFactory.CreateScalarQuery(id, storageProviderDefinition, statement, queryParameters)); } else if (queryType == QueryType.Collection) { return(QueryFactory.CreateCollectionQuery(id, storageProviderDefinition, statement, queryParameters, typeof(DomainObjectCollection))); } else { return(QueryFactory.CreateCustomQuery(id, storageProviderDefinition, statement, queryParameters)); } }
public override void SetUp() { base.SetUp(); _query = QueryFactory.CreateCustomQuery( "CustomQuery", TestDomainStorageProviderDefinition, "SELECT String, Int16, Boolean, Enum, ExtensibleEnum FROM [TableWithAllDataTypes]", new QueryParameterCollection()); }
public void FilterCustomQueryResult_RaisedInAllHierarchyLevels() { var query = QueryFactory.CreateCustomQuery( "CustomQuery", TestDomainStorageProviderDefinition, "SELECT [OrderNo] FROM [Order] WHERE ID=@1", new QueryParameterCollection { { "@1", _order1.ID } }); var fakeQueryResultRow1 = MockRepository.GenerateStub <IQueryResultRow> (); var fakeQueryResultRow2 = MockRepository.GenerateStub <IQueryResultRow> (); var fakeQueryResultRow3 = MockRepository.GenerateStub <IQueryResultRow> (); using (ListenerDynamicMock.GetMockRepository().Ordered()) { ListenerDynamicMock .Expect( mock => mock.FilterCustomQueryResult( Arg.Is(ReadOnlyRootTransaction), Arg <IQuery> .Is.Anything, Arg <IEnumerable <IQueryResultRow> > .Matches(qrrs => qrrs.Select(qrr => qrr.GetConvertedValue <int>(0)).Single() == 1))) .Return(new[] { fakeQueryResultRow1 }) .WhenCalled(mi => Assert.That(ReadOnlyRootTransaction.IsWriteable, Is.False)); ListenerDynamicMock .Expect( mock => mock.FilterCustomQueryResult( Arg.Is(ReadOnlyMiddleTransaction), Arg <IQuery> .Is.Anything, Arg <IEnumerable <IQueryResultRow> > .List.Equal(new[] { fakeQueryResultRow1 }))) .Return(new[] { fakeQueryResultRow2 }) .WhenCalled(mi => Assert.That(ReadOnlyMiddleTransaction.IsWriteable, Is.False)); ListenerDynamicMock .Expect( mock => mock.FilterCustomQueryResult( Arg.Is(WriteableSubTransaction), Arg <IQuery> .Is.Anything, Arg <IEnumerable <IQueryResultRow> > .List.Equal(new[] { fakeQueryResultRow2 }))) .Return(new[] { fakeQueryResultRow3 }) .WhenCalled(mi => Assert.That(WriteableSubTransaction.IsWriteable, Is.True)); } ListenerDynamicMock.Replay(); InstallListenerMock(); var result = WriteableSubTransaction.QueryManager.GetCustom(query, qrr => qrr).ToList(); ListenerDynamicMock.VerifyAllExpectations(); Assert.That(result, Is.EqualTo(new[] { fakeQueryResultRow3 })); }
public void CreateCustomQuery() { var id = "id"; var statement = "stmt"; var parameterCollection = new QueryParameterCollection(); IQuery query = QueryFactory.CreateCustomQuery(id, TestDomainStorageProviderDefinition, statement, parameterCollection); Assert.That(query.ID, Is.EqualTo(id)); Assert.That(query.CollectionType, Is.Null); Assert.That(query.Parameters, Is.SameAs(parameterCollection)); Assert.That(query.QueryType, Is.EqualTo(QueryType.Custom)); Assert.That(query.Statement, Is.EqualTo(statement)); Assert.That(query.StorageProviderDefinition, Is.SameAs(TestDomainStorageProviderDefinition)); }