def testObjectScope(self): o1 = object() tx = Transaction('transactionScopeName') tx.objectScope(o1)['key'] = 'value' self.assertEquals({'key': 'value'}, tx.objectScope(o1)) o2 = object() self.assertEquals({}, tx.objectScope(o2))
def setUp(self): SeecrTestCase.setUp(self) ctx = CallTrace('CTX') tx = Transaction('TX') tx.locals = {'id': 'iden&tifier'} tx.name = "tsName" self.fxf = Fields2SolrDoc("tsName", "fields-partname") self.fxf.ctx = ctx self.fxf.ctx.tx = tx self.observer = CallTrace(methods={'add': add}) self.fxf.addObserver(self.observer)
def testJoinOnlyOnce(self): commitCalled = [] class MockResourceManager(object): def commit(self, id): commitCalled.append(id) tx = Transaction('name') resource = MockResourceManager() tx.join(resource) tx.join(resource) list(tx.commit()) self.assertEquals(1, len(commitCalled)) self.assertEquals(tx.getId(), commitCalled[0])
def testSingularValueFields(self): __callstack_var_tx__ = Transaction('name') __callstack_var_tx__.locals['id'] = 'identifier' observer = CallTrace('observer', emptyGeneratorMethods=['add']) fxf = Fields2SolrDoc('name', 'partname', singularValueFields=['once']) fxf.addObserver(observer) fxf.begin(name='name') fxf.addField('once', 'one') fxf.addField('once', 'two') fxf.addField('twice', 'one') fxf.addField('twice', 'two') list(compose(fxf.commit(__callstack_var_tx__.getId()))) method = observer.calledMethods[0] self.assertEquals({'__id__': ['identifier'], 'once':['one'], 'twice': ['one', 'two']}, todict(method.kwargs['data']))
def testSingularValueFields(self): __callstack_var_tx__ = Transaction('name') __callstack_var_tx__.locals['id'] = 'identifier' observer = CallTrace('observer', emptyGeneratorMethods=['add']) fxf = Fields2SolrDoc('name', 'partname', singularValueFields=['once']) fxf.addObserver(observer) fxf.begin(name='name') fxf.addField('once', 'one') fxf.addField('once', 'two') fxf.addField('twice', 'one') fxf.addField('twice', 'two') list(compose(fxf.commit(__callstack_var_tx__.getId()))) method = observer.calledMethods[0] self.assertEquals( { '__id__': ['identifier'], 'once': ['one'], 'twice': ['one', 'two'] }, todict(method.kwargs['data']))
def testEmptyNamespace(self): ctx = CallTrace('CTX') tx = Transaction('TX') tx.locals = {'id': 'identifier'} tx.name = "tsName" fxf = Fields2XmlFields("tsName", "fields-partname") fxf.ctx = ctx fxf.ctx.tx = tx observer = CallTrace(methods={'add': add}) fxf.addObserver(observer) fxf.begin(name='tsName') fxf.addField("key.sub", "value") list(compose(fxf.commit(tx.getId()))) self.assertEquals(['add'], [m.name for m in observer.calledMethods]) self.assertEqualsWS("""<fields> <field name="key.sub">value</field> </fields>""", observer.calledMethods[0].kwargs['data'])
def testEmptyNamespace(self): ctx = CallTrace('CTX') tx = Transaction('TX') tx.locals = {'id': 'identifier'} tx.name = "tsName" fxf = Fields2XmlFields("tsName", "fields-partname") fxf.ctx = ctx fxf.ctx.tx = tx observer = CallTrace(methods={'add': add}) fxf.addObserver(observer) fxf.begin(name='tsName') fxf.addField("key.sub", "value") list(compose(fxf.commit(tx.getId()))) self.assertEqual(['add'], [m.name for m in observer.calledMethods]) self.assertEqualsWS("""<fields> <field name="key.sub">value</field> </fields>""", observer.calledMethods[0].kwargs['data'])
def testAddDocument(self): fields2LuceneDoc = Fields2LuceneDoc('tsname', fieldRegistry=FieldRegistry()) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' fields2LuceneDoc.addField('field', 'value') consume(fields2LuceneDoc.commit('unused')) self.assertEquals(['addDocument'], observer.calledMethodNames()) self.assertEquals('identifier', observer.calledMethods[0].kwargs['identifier'])
def testObjectScope(self): o1 = object() tx = Transaction('transactionScopeName') tx.objectScope(o1)['key'] = 'value' self.assertEqual({'key': 'value'}, tx.objectScope(o1)) o2 = object() self.assertEqual({}, tx.objectScope(o2))
def testCreateFacet(self): fields = { 'field1': ['value1'], 'sorted.field3': ['value3'], 'untokenized.field4': ['value4'], 'untokenized.field5': ['value5', 'value6'], 'untokenized.field6': ['value5/value6'], 'untokenized.field7': ['valuex'], 'untokenized.field8': [['grandparent', 'parent', 'child'], ['parent2', 'child']] } fields2LuceneDoc = Fields2LuceneDoc( 'tsname', fieldRegistry=FieldRegistry(drilldownFields=[ DrilldownField('untokenized.field4'), DrilldownField('untokenized.field5'), DrilldownField('untokenized.field6'), DrilldownField('untokenized.field8', hierarchical=True), ])) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' for field, values in fields.items(): for value in values: fields2LuceneDoc.addField(field, value) consume(fields2LuceneDoc.commit('unused')) document = observer.calledMethods[0].kwargs['document'] searchFields = [ f for f in document.getFields() if not FacetField.instance_(f) ] self.assertEquals(['field1', 'sorted.field3', 'untokenized.field7'], [f.name() for f in searchFields]) facetsFields = [ FacetField.cast_(f) for f in document.getFields() if FacetField.instance_(f) ] self.assertEquals(6, len(facetsFields)) self.assertEquals([ ('untokenized.field8', ['grandparent', 'parent', 'child']), ('untokenized.field8', ['parent2', 'child']), ('untokenized.field6', ['value5/value6']), ('untokenized.field4', ['value4']), ('untokenized.field5', ['value5']), ('untokenized.field5', ['value6']), ], [(f.dim, list(f.path)) for f in facetsFields]) # Note: a FacetField doesn't have a name
def testOnlyOneSortValueAllowed(self): fields2LuceneDoc = Fields2LuceneDoc('tsname', fieldRegistry=FieldRegistry() ) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' fields2LuceneDoc.addField('sorted.field', 'value1') fields2LuceneDoc.addField('sorted.field', 'value2') consume(fields2LuceneDoc.commit('unused')) fields = observer.calledMethods[0].kwargs['fields'] self.assertEquals(1, len(fields)) self.assertEqual({'sort': True, 'type': 'StringField', 'name': 'sorted.field', 'value': 'value1'}, fields[0])
def testRewriteFields(self): def rewriteFields(fields): fields['keys'] = list(sorted(fields.keys())) return fields fields2LuceneDoc = Fields2LuceneDoc('tsname', rewriteFields=rewriteFields, fieldRegistry=FieldRegistry()) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' fields2LuceneDoc.addField('field1', 'value1') fields2LuceneDoc.addField('field2', 'value2') consume(fields2LuceneDoc.commit('unused')) self.assertEquals(['addDocument'], observer.calledMethodNames()) fields = observer.calledMethods[0].kwargs['fields'] self.assertEquals(set(['field1', 'field2', 'keys']), set([f['name'] for f in fields])) self.assertEquals(['field1', 'field2'], [f['value'] for f in fields if f['name'] == 'keys'])
def testAddFacetField(self): fields2LuceneDoc = Fields2LuceneDoc('tsname', fieldRegistry=FieldRegistry(drilldownFields=[ DrilldownField('untokenized.field'), ]) ) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' fields2LuceneDoc.addField('field', 'value') fields2LuceneDoc.addFacetField('untokenized.field', 'untokenized value') consume(fields2LuceneDoc.commit('unused')) fields = observer.calledMethods[0].kwargs['fields'] facetsFields = [f for f in fields if "path" in f] self.assertEquals(1, len(facetsFields))
def testCreateFacet(self): fields = { 'field1': ['value1'], 'sorted.field3': ['value3'], 'untokenized.field4': ['value4'], 'untokenized.field5': ['value5', 'value6'], 'untokenized.field6': ['value5/value6'], 'untokenized.field7': ['valuex'], 'untokenized.field8': [['grandparent', 'parent', 'child'], ['parent2', 'child']] } fields2LuceneDoc = Fields2LuceneDoc('tsname', fieldRegistry=FieldRegistry(drilldownFields=[ DrilldownField('untokenized.field4'), DrilldownField('untokenized.field5'), DrilldownField('untokenized.field6'), DrilldownField('untokenized.field8', hierarchical=True), ]) ) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' for field, values in fields.items(): for value in values: fields2LuceneDoc.addField(field, value) consume(fields2LuceneDoc.commit('unused')) fields = observer.calledMethods[0].kwargs['fields'] searchFields = [f for f in fields if not "path" in f] self.assertEquals(['field1', 'sorted.field3', 'untokenized.field7'], [f['name'] for f in searchFields]) facetsFields = [f for f in fields if "path" in f] self.assertEquals(6, len(facetsFields)) self.assertEquals([ ('untokenized.field8', ['grandparent', 'parent', 'child']), ('untokenized.field8', ['parent2', 'child']), ('untokenized.field6', ['value5/value6']), ('untokenized.field4', ['value4']), ('untokenized.field5', ['value5']), ('untokenized.field5', ['value6']), ], [(f['name'], f['path']) for f in facetsFields])
def testJoinOnlyOnce(self): commitCalled = [] class MockResourceManager(object): def commit(self, id): commitCalled.append(id) tx = Transaction('name') resource = MockResourceManager() tx.join(resource) tx.join(resource) list(tx.commit()) self.assertEqual(1, len(commitCalled)) self.assertEqual(tx.getId(), commitCalled[0])
def testAddFacetField(self): fields2LuceneDoc = Fields2LuceneDoc( 'tsname', fieldRegistry=FieldRegistry(drilldownFields=[ DrilldownField('untokenized.field'), ])) observer = CallTrace() fields2LuceneDoc.addObserver(observer) fields2LuceneDoc.ctx.tx = Transaction('tsname') fields2LuceneDoc.ctx.tx.locals['id'] = 'identifier' fields2LuceneDoc.addField('field', 'value') fields2LuceneDoc.addFacetField('untokenized.field', 'untokenized value') consume(fields2LuceneDoc.commit('unused')) document = observer.calledMethods[0].kwargs['document'] facetsFields = [ FacetField.cast_(f) for f in document.getFields() if FacetField.instance_(f) ] self.assertEquals(1, len(facetsFields))
def testTransactionLocals(self): tx = Transaction('name') tx.locals['myvar'] = 'value' self.assertEquals('value', tx.locals['myvar'])
def testTransactionLocals(self): tx = Transaction('name') tx.locals['myvar'] = 'value' self.assertEqual('value', tx.locals['myvar'])