def test_facets(self): p = cbft.Params() f = cbft.NumericFacet('numfield') self.assertRaises(ValueError, p.facets.__setitem__, 'facetName', f) self.assertRaises(TypeError, f.add_range, 'range1') p.facets['facetName'] = f.add_range('range1', min=123, max=321) self.assertTrue('facetName' in p.facets) f = cbft.DateFacet('datefield') f.add_range('r1', start='2012', end='2013') f.add_range('r2', start='2014') f.add_range('r3', end='2015') exp = { 'field': 'datefield', 'date_ranges': [{ 'name': 'r1', 'start': '2012', 'end': '2013' }, { 'name': 'r2', 'start': '2014' }, { 'name': 'r3', 'end': '2015' }] } self.assertEqual(exp, f.encodable) f = cbft.TermFacet('termfield') self.assertEqual({'field': 'termfield'}, f.encodable) f.limit = 10 self.assertEqual({'field': 'termfield', 'size': 10}, f.encodable)
def test_params(self): self.assertEqual({}, cbft.Params().as_encodable('ix')) self.assertEqual({'size': 10}, cbft.Params(limit=10).as_encodable('ix')) self.assertEqual({'from': 100}, cbft.Params(skip=100).as_encodable('ix')) self.assertEqual({'explain': True}, cbft.Params(explain=True).as_encodable('ix')) self.assertEqual({'highlight': {'style': 'html'}}, cbft.Params(highlight_style='html').as_encodable('ix')) self.assertEqual({'highlight': {'style': 'ansi', 'fields': ['foo', 'bar', 'baz']}}, cbft.Params(highlight_style='ansi', highlight_fields=['foo', 'bar', 'baz']) .as_encodable('ix')) self.assertEqual({'fields': ['foo', 'bar', 'baz']}, cbft.Params(fields=['foo', 'bar', 'baz'] ).as_encodable('ix')) self.assertEqual({'sort': ['f1', 'f2', '-_score']}, cbft.Params(sort=['f1', 'f2', '-_score'] ).as_encodable('ix')) p = cbft.Params(facets={ 'term': cbft.TermFacet('somefield', limit=10), 'dr': cbft.DateFacet('datefield').add_range('name', 'start', 'end'), 'nr': cbft.NumericFacet('numfield').add_range('name2', 0.0, 99.99) }) exp = { 'facets': { 'term': { 'field': 'somefield', 'size': 10 }, 'dr': { 'field': 'datefield', 'date_ranges': [{ 'name': 'name', 'start': 'start', 'end': 'end' }] }, 'nr': { 'field': 'numfield', 'numeric_ranges': [{ 'name': 'name2', 'min': 0.0, 'max': 99.99 }] }, } } self.assertEqual(exp, p.as_encodable('ix'))