def test_group_count(self): q = Query() q.group('field', count=True) assert q._pipeline[-1] == { '$group': { '_id': '$field', 'count': { '$sum': 1 } } }
def test_add_fields_set(self): q = Query() fields = {'field1', 'field2', 'field3'} q.project(fields) assert q._pipeline[-1] == { '$project': { 'field1': 1, 'field2': 1, 'field3': 1 } }
def test_group_list(self): q = Query() q.group(['field1', 'field2']) assert q._pipeline[-1] == { '$group': { '_id': { 'field1': '$field1', 'field2': '$field2' } } }
def test_group_str(self): q = Query() q.group("field") assert q._pipeline[-1] == {'$group': {"_id": "$field"}}
def test_out(self): q = Query() q.out('collection') assert q._pipeline[-1] == {'$out': 'collection'}
def test_add_fields_dict(self): q = Query() fields = {'field1': '$field1', 'field2': '$field2'} q.project(fields) assert q._pipeline[-1] == {'$project': fields}
def test_project_str(self): q = Query() q.project('name') assert q._pipeline[-1] == {'$project': {'name': 1}}
def test_add_new_field(self): q = Query() q.project([('name', 100)]) assert q._pipeline[-1] == {'$project': {'name': {'$literal': 100}}}
def test_match_range(self): q = Query() q.match_range('field', lower=15, upper=20) assert q._pipeline[-1] == \ {'$match': {'field': {'$gte': 15, '$lt': 20}}}
def test_match_neq(self): q = Query() q.match('key', 'value', False) assert q._pipeline[-1] == {'$match': {'key': {'$ne': 'value'}}}
def test_group_Group(self): g = Group().id('id') q = Query().group(g) assert q._pipeline[-1] == g.build()
def test_limit(self): q = Query() q.limit(5) assert q._pipeline[-1] == {'$limit': 5}