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
        })
Пример #2
0
    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({})
Пример #3
0
    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({})
Пример #4
0
    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({})
Пример #7
0
    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
        })
Пример #11
0
    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})
Пример #12
0
    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}})