def testConvertAllQueriesWithUnqualifiedTermFields(self): cq = ComposedQuery('coreA') cq.setCoreQuery(core='coreA', query='Q0') cq.addFilterQuery('coreA', 'Q1') cq.addFilterQuery('coreA', 'Q2') cq.setCoreQuery(core='coreB', query='Q3') cq.addFilterQuery('coreB', 'Q4') cq.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) cq.addUnite(dict(core='coreA', query='Q5'), dict(core='coreB', query='Q6')) cq.unqualifiedTermFields = [('field0', 2.0), ('field1', 3.0)] convertCoreA = lambda query, unqualifiedTermFields=None, **kwargs: "Converted_A_{0}_{1}".format( query, not unqualifiedTermFields is None) convertCoreB = lambda query, **kwargs: "Converted_B_{0}".format(query) cq.convertWith(coreA=convertCoreA, coreB=convertCoreB) self.assertEquals("Converted_A_Q0_True", cq.queryFor('coreA')) self.assertEquals(["Converted_A_Q1_True", "Converted_A_Q2_True"], cq.filterQueriesFor('coreA')) self.assertEquals("Converted_B_Q3", cq.queryFor('coreB')) self.assertEquals(["Converted_B_Q4"], cq.filterQueriesFor('coreB')) self.assertEqual(1, len(cq.unites)) uniteQueries = list(cq.unites[0].queries()) self.assertEquals('Converted_A_Q5_True', uniteQueries[0][0]['query']) self.assertEquals('Converted_B_Q6', uniteQueries[1][0]['query'])
def testConvertComposedQuery(self): q = ComposedQuery('A') q.setCoreQuery(core='A', query=parseString('valueAQ')) q.setCoreQuery(core='B', query=parseString('valueBQ')) q.addMatch(dict(core='A', uniqueKey='keyA'), dict(core='B', key='keyB')) q.addUnite(dict(core='A', query=parseString('fieldUA exact valueUA')), dict(core='B', query=parseString('fieldUB exact valueUB'))) q.validate() consume(self.dna.any.executeComposedQuery(query=q)) self.assertEquals(['executeComposedQuery'], self.observer.calledMethodNames()) self.assertEquals(repr(TermQuery(Term('fieldA', 'valueaq'))), repr(q.queryFor('A'))) self.assertEquals(repr(TermQuery(Term('fieldB', 'valuebq'))), repr(q.queryFor('B')))
def testFilterQueries(self): cq = ComposedQuery('coreA') cq.setCoreQuery(core='coreA', query='Q0') cq.addFilterQuery(core='coreA', query='Q1') cq.addFilterQuery(core='coreA', query='Q2') cq.addFacet(core='coreA', facet='F0') cq.addFacet(core='coreA', facet='F1') cq.setCoreQuery(core='coreB', query='Q3') cq.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) cq.addUnite(dict(core='coreA', query='AQuery'), dict(core='coreB', query='anotherQuery')) self.assertEquals(None, cq.stop) self.assertEquals(None, cq.start) self.assertEquals([], cq.sortKeys) cq.stop = 10 cq.start = 0 cq.sortKeys = [dict(sortBy='field', sortDescending=True)] self.assertEquals('Q0', cq.queryFor('coreA')) self.assertEquals(['Q1', 'Q2'], cq.filterQueriesFor('coreA')) self.assertEquals(['F0', 'F1'], cq.facetsFor('coreA')) self.assertEquals(10, cq.stop) self.assertEquals(0, cq.start) self.assertEquals([dict(sortBy='field', sortDescending=True)], cq.sortKeys)
def testConvertAllQueries(self): cq = ComposedQuery('coreA') cq.setCoreQuery(core='coreA', query='Q0') cq.addFilterQuery('coreA', 'Q1') cq.addFilterQuery('coreA', 'Q2') cq.setCoreQuery(core='coreB', query='Q3') cq.addFilterQuery('coreB', 'Q4') cq.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) cq.addUnite(dict(core='coreA', query='Q5'), dict(core='coreB', query='Q6')) convertCoreA = lambda query: "Converted_A_{0}".format(query) convertCoreB = lambda query: "Converted_B_{0}".format(query) cq.convertWith(coreA=convertCoreA, coreB=convertCoreB) self.assertEquals("Converted_A_Q0", cq.queryFor('coreA')) self.assertEquals(["Converted_A_Q1", "Converted_A_Q2"], cq.filterQueriesFor('coreA')) self.assertEquals("Converted_B_Q3", cq.queryFor('coreB')) self.assertEquals(["Converted_B_Q4"], cq.filterQueriesFor('coreB')) self.assertEquals([('coreA', 'Converted_A_Q5'), ('coreB', 'Converted_B_Q6')], cq.unites)
def testAddFilterQueryAfterConversion(self): cq = ComposedQuery('coreA') cq.setCoreQuery('coreA', query='A') cq.convertWith(coreA=lambda q: "converted_" + q) self.assertEquals('converted_A', cq.queryFor('coreA')) # Assert the following does not raise KeyError cq.addFilterQuery('coreA', 'field=value') cq.addFacet('coreA', 'F0') cq.addDrilldownQuery('coreA', 'drilldownQuery') cq.addOtherCoreFacetFilter('coreA', 'q')
def testConvertComposedQuery(self): q = ComposedQuery('A') q.setCoreQuery(core='A', query=cqlToExpression('valueAQ')) q.setCoreQuery(core='B', query=cqlToExpression('valueBQ')) q.addMatch(dict(core='A', uniqueKey='keyA'), dict(core='B', key='keyB')) q.addUnite( dict(core='A', query=cqlToExpression('fieldUA exact valueUA')), dict(core='B', query=cqlToExpression('fieldUB exact valueUB'))) q.validate() consume(self.dna.any.executeComposedQuery(query=q)) self.assertEquals(['executeComposedQuery'], self.observer.calledMethodNames()) self.assertEquals( "{'type': 'TermQuery', 'term': {'field': 'fieldA', 'value': u'valueaq'}, 'boost': 1.0}", repr(q.queryFor('A'))) self.assertEquals( "{'type': 'TermQuery', 'term': {'field': 'fieldB', 'value': u'valuebq'}, 'boost': 1.0}", repr(q.queryFor('B')))
def testAddFilterQueryAfterConversion(self): cq = ComposedQuery('coreA') cq.setCoreQuery('coreA', query='A') cq.convertWith(coreA=lambda q, **kwargs: "converted_" + q) self.assertEquals('converted_A', cq.queryFor('coreA')) # Assert the following does not raise KeyError cq.addFilterQuery('coreA', 'field=value') cq.addFacet('coreA', 'F0') cq.addDrilldownQuery('coreA', 'drilldownQuery') cq.addOtherCoreFacetFilter('coreA', 'q')
def testConvertAllQueriesWithUnqualifiedTermFields(self): cq = ComposedQuery('coreA') cq.setCoreQuery(core='coreA', query='Q0') cq.addFilterQuery('coreA', 'Q1') cq.addFilterQuery('coreA', 'Q2') cq.setCoreQuery(core='coreB', query='Q3') cq.addFilterQuery('coreB', 'Q4') cq.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) cq.addUnite(dict(core='coreA', query='Q5'), dict(core='coreB', query='Q6')) cq.unqualifiedTermFields = [('field0', 2.0), ('field1', 3.0)] convertCoreA = lambda query, unqualifiedTermFields=None, **kwargs: "Converted_A_{0}_{1}".format(query, not unqualifiedTermFields is None) convertCoreB = lambda query, **kwargs: "Converted_B_{0}".format(query) cq.convertWith(coreA=convertCoreA, coreB=convertCoreB) self.assertEquals("Converted_A_Q0_True", cq.queryFor('coreA')) self.assertEquals(["Converted_A_Q1_True", "Converted_A_Q2_True"], cq.filterQueriesFor('coreA')) self.assertEquals("Converted_B_Q3", cq.queryFor('coreB')) self.assertEquals(["Converted_B_Q4"], cq.filterQueriesFor('coreB')) self.assertEqual(1, len(cq.unites)) uniteQueries = list(cq.unites[0].queries()) self.assertEquals('Converted_A_Q5_True', uniteQueries[0][0]['query']) self.assertEquals('Converted_B_Q6', uniteQueries[1][0]['query'])
def testConvertComposedQuery(self): q = ComposedQuery('A') q.setCoreQuery(core='A', query=cqlToExpression('valueAQ')) q.setCoreQuery(core='B', query=cqlToExpression('valueBQ')) q.addMatch(dict(core='A', uniqueKey='keyA'), dict(core='B', key='keyB')) q.addUnite(dict(core='A', query=cqlToExpression('fieldUA exact valueUA')), dict(core='B', query=cqlToExpression('fieldUB exact valueUB'))) q.validate() consume(self.dna.any.executeComposedQuery(query=q)) self.assertEquals(['executeComposedQuery'], self.observer.calledMethodNames()) self.assertEquals("{'type': 'TermQuery', 'term': {'field': 'fieldA', 'value': u'valueaq'}, 'boost': 1.0}", repr(q.queryFor('A'))) self.assertEquals("{'type': 'TermQuery', 'term': {'field': 'fieldB', 'value': u'valuebq'}, 'boost': 1.0}", repr(q.queryFor('B')))