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 testAddOtherCoreFacetFilter(self): cq = ComposedQuery('coreA') cq.addOtherCoreFacetFilter('coreB', 'field=value') self.assertValidateRaisesValueError(cq, "No match set for cores ('coreA', 'coreB')") cq.addMatch(dict(core='coreA', uniqueKey='kA'), dict(core='coreB', key='kB')) self.assertEquals(['field=value'], cq.otherCoreFacetFiltersFor('coreB')) cq.convertWith(coreB=lambda q: "converted_" + q) self.assertEquals(['converted_field=value'], cq.otherCoreFacetFiltersFor('coreB'))
def testAddDrilldownQuery(self): cq = ComposedQuery('coreA') cq.addDrilldownQuery('coreB', ('field', ['value'])) self.assertValidateRaisesValueError(cq, "No match set for cores ('coreA', 'coreB')") cq.addMatch(dict(core='coreA', uniqueKey='kA'), dict(core='coreB', key='kB')) self.assertEquals([('field', ['value'])], cq.drilldownQueriesFor('coreB')) cq.convertWith(coreB=lambda q: "converted_" + q) self.assertEquals([('field', ['value'])], cq.drilldownQueriesFor('coreB'))
def testAddRankQuery(self): cq = ComposedQuery('coreA') cq.setRankQuery('coreB', 'qB') self.assertValidateRaisesValueError(cq, "No match set for cores ('coreA', 'coreB')") cq.addMatch(dict(core='coreA', uniqueKey='kA'), dict(core='coreB', key='kB')) self.assertEquals('qB', cq.rankQueryFor('coreB')) cq.convertWith(coreB=lambda q: "converted_" + q) self.assertEquals('converted_qB', cq.rankQueryFor('coreB'))
def testAddDrilldownQuery(self): cq = ComposedQuery('coreA') cq.addDrilldownQuery('coreB', ('field', ['value'])) self.assertValidateRaisesValueError(cq, "No match set for cores ('coreA', 'coreB')") cq.addMatch(dict(core='coreA', uniqueKey='kA'), dict(core='coreB', key='kB')) self.assertEquals([('field', ['value'])], cq.drilldownQueriesFor('coreB')) cq.convertWith(coreB=lambda q: "converted_" + q) self.assertEquals([('field', ['value'])], cq.drilldownQueriesFor('coreB'))
def testAddRankQuery(self): cq = ComposedQuery('coreA') cq.setRankQuery('coreB', 'qB') self.assertValidateRaisesValueError(cq, "No match set for cores ('coreA', 'coreB')") cq.addMatch(dict(core='coreA', uniqueKey='kA'), dict(core='coreB', key='kB')) self.assertEquals('qB', cq.rankQueryFor('coreB')) cq.convertWith(coreB=lambda q: "converted_" + q) self.assertEquals('converted_qB', cq.rankQueryFor('coreB'))
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 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 testAddOtherCoreFacetFilter(self): cq = ComposedQuery('coreA') cq.addOtherCoreFacetFilter('coreB', 'field=value') self.assertValidateRaisesValueError( cq, "No match set for cores ('coreA', 'coreB')") cq.addMatch(dict(core='coreA', uniqueKey='kA'), dict(core='coreB', key='kB')) self.assertEquals(['field=value'], cq.otherCoreFacetFiltersFor('coreB')) cq.convertWith(coreB=lambda q: "converted_" + q) self.assertEquals(['converted_field=value'], cq.otherCoreFacetFiltersFor('coreB'))
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 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'])