def test_union_of_queries_when_only_or_exclude_called(self): query1 = QueryFieldList( fields=['name.last', 'email'], value=QueryFieldList.ONLY, _only_called=True ) query2 = QueryFieldList( fields=['name.first'], value=QueryFieldList.ONLY, _only_called=True ) query3 = QueryFieldList( fields=['email'], value=QueryFieldList.EXCLUDE ) query = query1 + query2 expect(query.as_dict()).to_be_like({ 'name.last': 1, 'email': 1, 'name.first': 1 }) query = query + query3 expect(query.as_dict()).to_be_like({ 'name.last': 1, 'name.first': 1 }) # try again exclude 'email' that is not in the fields now query = query + QueryFieldList(['email'], value=QueryFieldList.EXCLUDE) expect(query.as_dict()).to_be_like({ 'name.last': 1, 'name.first': 1 }) # the same but exclude first now query = QueryFieldList(['email'], value=QueryFieldList.EXCLUDE) + query expect(query.as_dict()).to_be_like({ 'name.last': 1, 'name.first': 1 }) # exclude first field present in fields query = ( QueryFieldList(['name.last'], value=QueryFieldList.EXCLUDE) + query ) expect(query.as_dict()).to_be_like({ 'name.first': 1 }) # exclude works only with full names not with prefixes query = ( QueryFieldList(['name'], value=QueryFieldList.EXCLUDE) + query ) expect(query.as_dict()).to_be_like({ 'name.first': 1 })
def test_only_query_field_list(self): query = QueryFieldList(['name', 'email'], value=QueryFieldList.ONLY) expect(bool(query)).to_be_true() expect(query.as_dict()).to_be_like({'name': 1, 'email': 1}) expect(query.to_query(User)).to_be_like({ 'name': 1, 'email_address': 1 }) query.reset() expect(query.as_dict()).to_be_like({})
def test_exclude_query_field_list(self): query = QueryFieldList(fields=['name.last', 'email'], value=QueryFieldList.EXCLUDE) expect(bool(query)).to_be_true() expect(query.as_dict()).to_be_like({'name.last': 0, 'email': 0}) expect(query.to_query(User)).to_be_like({ 'name.last_name': 0, 'email_address': 0 }) query.reset() expect(query.as_dict()).to_be_like({})
def test_always_include(self): query = QueryFieldList(always_include=['email']) query += QueryFieldList(['name'], value=QueryFieldList.ONLY, _only_called=True) expect(query.as_dict()).to_be_like({'name': 1, 'email': 1}) query = QueryFieldList(always_include=['email', 'name'], value=QueryFieldList.EXCLUDE) query += QueryFieldList(['email'], value=QueryFieldList.EXCLUDE) expect(query.as_dict()).to_be_like({})
def test_only_query_field_list(self): query = QueryFieldList(['name', 'email'], value=QueryFieldList.ONLY) expect(bool(query)).to_be_true() expect(query.as_dict()).to_be_like({ 'name': 1, 'email': 1 }) expect(query.to_query(User)).to_be_like({ 'name': 1, 'email_address': 1 }) query.reset() expect(query.as_dict()).to_be_like({})
def test_always_include(self): query = QueryFieldList(always_include=['email']) query += QueryFieldList( ['name'], value=QueryFieldList.ONLY, _only_called=True ) expect(query.as_dict()).to_be_like({'name': 1, 'email': 1}) query = QueryFieldList( always_include=['email', 'name'], value=QueryFieldList.EXCLUDE ) query += QueryFieldList(['email'], value=QueryFieldList.EXCLUDE) expect(query.as_dict()).to_be_like({})
def test_only_query_field_list_and_exclude_id(self): query = QueryFieldList(['name'], value=QueryFieldList.ONLY, _only_called=True) + QueryFieldList( ['_id'], value=QueryFieldList.EXCLUDE) expect(query.as_dict()).to_be_like({'_id': 0, 'name': 1})
def test_exclude_query_field_list(self): query = QueryFieldList( fields=['name.last', 'email'], value=QueryFieldList.EXCLUDE ) expect(bool(query)).to_be_true() expect(query.as_dict()).to_be_like({ 'name.last': 0, 'email': 0 }) expect(query.to_query(User)).to_be_like({ 'name.last_name': 0, 'email_address': 0 }) query.reset() expect(query.as_dict()).to_be_like({})
def test_slice_query_field_list(self): query = QueryFieldList( ['numbers'], value={'$slice': 10}, _only_called=False ) expect(query.as_dict()).to_be_like({ 'numbers': {'$slice': 10} })
def test_only_query_field_list_and_exclude_id(self): query = QueryFieldList( ['name'], value=QueryFieldList.ONLY, _only_called=True ) + QueryFieldList(['_id'], value=QueryFieldList.EXCLUDE) expect(query.as_dict()).to_be_like({ '_id': 0, 'name': 1 })
def test_union_of_queries_when_only_or_exclude_called(self): query1 = QueryFieldList(fields=['name.last', 'email'], value=QueryFieldList.ONLY, _only_called=True) query2 = QueryFieldList(fields=['name.first'], value=QueryFieldList.ONLY, _only_called=True) query3 = QueryFieldList(fields=['email'], value=QueryFieldList.EXCLUDE) query = query1 + query2 expect(query.as_dict()).to_be_like({ 'name.last': 1, 'email': 1, 'name.first': 1 }) query = query + query3 expect(query.as_dict()).to_be_like({'name.last': 1, 'name.first': 1}) # try again exclude 'email' that is not in the fields now query = query + QueryFieldList(['email'], value=QueryFieldList.EXCLUDE) expect(query.as_dict()).to_be_like({'name.last': 1, 'name.first': 1}) # the same but exclude first now query = QueryFieldList(['email'], value=QueryFieldList.EXCLUDE) + query expect(query.as_dict()).to_be_like({'name.last': 1, 'name.first': 1}) # exclude first field present in fields query = (QueryFieldList(['name.last'], value=QueryFieldList.EXCLUDE) + query) expect(query.as_dict()).to_be_like({'name.first': 1}) # exclude works only with full names not with prefixes query = (QueryFieldList(['name'], value=QueryFieldList.EXCLUDE) + query) expect(query.as_dict()).to_be_like({'name.first': 1})
def test_slice_query_field_list(self): query = QueryFieldList(['numbers'], value={'$slice': 10}, _only_called=False) expect(query.as_dict()).to_be_like({'numbers': {'$slice': 10}})