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 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 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 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 testAddFilterQueriesIncremental(self):
        cq = ComposedQuery('coreA')
        cq.addFilterQuery(core='coreA', query='Q1')
        cq.addFilterQuery(core='coreA', query='Q2')

        self.assertEquals(['Q1', 'Q2'], cq.filterQueriesFor('coreA'))
    def testAddFilterQueriesIncremental(self):
        cq = ComposedQuery('coreA')
        cq.addFilterQuery(core='coreA', query='Q1')
        cq.addFilterQuery(core='coreA', query='Q2')

        self.assertEquals(['Q1', 'Q2'], cq.filterQueriesFor('coreA'))