def testUniteMakesItTwoCoreQuery(self): cq = ComposedQuery('coreA') cq.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) cq.setCoreQuery('coreA', query='A') cq.addUnite(dict(core='coreA', query='Q5'), dict(core='coreB', query='Q6')) cq.validate() self.assertEquals(set(['coreA', 'coreB']), cq.cores)
def testUniqueKeyDoesntMatchResultsFrom(self): composedQuery = ComposedQuery('coreA', query='A').setCoreQuery('coreB', query='bQ') self.assertRaises(ValueError, lambda: composedQuery.addMatch(dict(core='coreA', key='keyA'), dict(core='coreB', key='keyB'))) self.assertRaises(ValueError, lambda: composedQuery.addMatch(dict(core='coreA', key='keyA'), dict(core='coreB', uniqueKey='keyB'))) composedQuery.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) composedQuery.validate() composedQuery.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', uniqueKey='keyB')) composedQuery.validate()
def testValidateComposedQueryForInvalidJson(self): composedQuery = ComposedQuery('coreA', query='Q0') composedQuery.relationalFilterJson = 'not JSON' self.assertValidateRaisesValueError( composedQuery, "Value 'not JSON' for 'relationalFilterJson' can not be parsed as JSON." ) composedQuery.relationalFilterJson = '{"type": "MockJoinQuery"}' composedQuery.validate()
def testValidateComposedQuery(self): composedQuery = ComposedQuery('coreA') composedQuery.setCoreQuery(core='coreA', query='Q0') composedQuery.setCoreQuery(core='coreB', query='Q1') self.assertValidateRaisesValueError(composedQuery, "No match set for cores ('coreA', 'coreB')") composedQuery = ComposedQuery('coreA', query="A") composedQuery.addMatch(dict(core='coreA', uniqueKey='keyA'), dict(core='coreB', key='keyB')) composedQuery.validate() self.assertEquals(1, composedQuery.numberOfUsedCores)
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 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 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 testSingleCoreQuery(self): cq = ComposedQuery('coreA') cq.setCoreQuery(core='coreA', query='Q0') cq.validate() self.assertEquals(1, cq.numberOfUsedCores)
def testValidateComposedQueryForInvalidJson(self): composedQuery = ComposedQuery('coreA', query='Q0') composedQuery.relationalFilterJson = 'not JSON' self.assertValidateRaisesValueError(composedQuery, "Value 'not JSON' for 'relationalFilterJson' can not be parsed as JSON.") composedQuery.relationalFilterJson = '{"type": "MockJoinQuery"}' composedQuery.validate()