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());
        }
Пример #3
0
        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 }));
        }
Пример #4
0
        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));
        }