示例#1
0
class KnownValues(unittest.TestCase):

    def setUp(self):

        self.filter = Filter()

    def test_add_filter_by_id(self):

        print('It should generate an empty filter')
        cfilter = self.filter.add_filter_by_id([], True)
        self.assertEqual(cfilter, {})

        print('It should generate a filter with a single key equal test')
        cfilter = self.filter.add_filter_by_id(['keyone'], True)
        self.assertEqual(cfilter, {'_id': {'$eq': 'keyone'}})

        print('It should generate a filter with a single key not equal test')
        cfilter = self.filter.add_filter_by_id(['keyone'], False)
        self.assertEqual(cfilter, {'_id': {'$ne': 'keyone'}})

        print(
            'It should generate a filter with a _id key with nested' +
            ' dict with noop key and given dict as value')
        value = ['keyone', 'keytwo']
        cfilter = self.filter.add_filter_by_id(value, True)
        test = {'_id': {'$in': ['keyone', 'keytwo']}}
        self.assertEqual(cfilter, test)

    def test_make_mfilter(self):

        mfilter = {'key': 'value'}
        value = ['key1', 'key2']

        print('It should return an empty filter')
        cfilter = self.filter.make_filter()
        self.assertEqual(cfilter, {})

        print('It should return given filter')
        cfilter = self.filter.make_filter(mfilter=mfilter)
        self.assertIn('key', cfilter)
        self.assertEqual(cfilter['key'], 'value')
        self.assertEqual(len(cfilter.keys()), 1)

        print('It should return an include filter')
        cfilter = self.filter.make_filter(includes=value)
        self.assertIn('_id', cfilter)
        self.assertEqual(len(cfilter.keys()), 1)
        self.assertIn('$in', cfilter['_id'])
        self.assertEqual(len(cfilter['_id'].keys()), 1)
        self.assertEqual(cfilter['_id']['$in'], value)

        print('It should return an exclude filter')
        cfilter = self.filter.make_filter(excludes=value)
        self.assertIn('_id', cfilter)
        self.assertEqual(len(cfilter.keys()), 1)
        self.assertIn('$nin', cfilter['_id'])
        self.assertEqual(len(cfilter['_id'].keys()), 1)
        self.assertEqual(cfilter['_id']['$nin'], value)

        print('It should return a compund filter between mfilter and excludes')
        cfilter = self.filter.make_filter(mfilter=mfilter, excludes=value)
        self.assertIn('$and', cfilter)
        self.assertEqual(len(cfilter['$and']), 2)
        self.assertEqual(cfilter['$and'][0], mfilter)
        self.assertEqual(cfilter['$and'][1], {'_id': {'$nin': value}})

        print('It should return a compund filter between mfilter and includes')
        cfilter = self.filter.make_filter(mfilter=mfilter, includes=value)
        self.assertIn('$or', cfilter)
        self.assertEqual(len(cfilter['$or']), 2)
        self.assertEqual(cfilter, {'$or': [mfilter, {'_id': {'$in': value}}]})

        print('It should return a compund filter between excludes includes')
        cfilter = self.filter.make_filter(
            excludes=['singlekey'],
            includes=value)
        test = {'$and': [
            {'_id': {'$in': value}},
            {'_id': {'$ne': 'singlekey'}}]}
        self.assertEqual(cfilter, test)
示例#2
0
class KnownValues(unittest.TestCase):

    def setUp(self):

        self.filter = Filter()

    def test_add_filter_by_id(self):

        print('It should generate an empty filter')
        cfilter = self.filter.add_filter_by_id([], True)
        self.assertEqual(cfilter, {})

        print('It should generate a filter with a single key equal test')
        cfilter = self.filter.add_filter_by_id(['keyone'], True)
        self.assertEqual(cfilter, {'_id': {'$eq': 'keyone'}})

        print('It should generate a filter with a single key not equal test')
        cfilter = self.filter.add_filter_by_id(['keyone'], False)
        self.assertEqual(cfilter, {'_id': {'$ne': 'keyone'}})

        print(
            'It should generate a filter with a _id key with nested' +
            ' dict with noop key and given dict as value')
        value = ['keyone', 'keytwo']
        cfilter = self.filter.add_filter_by_id(value, True)
        test = {'_id': {'$in': ['keyone', 'keytwo']}}
        self.assertEqual(cfilter, test)

    def test_make_mfilter(self):

        mfilter = {'key': 'value'}
        value = ['key1', 'key2']

        print('It should return an empty filter')
        cfilter = self.filter.make_filter()
        self.assertEqual(cfilter, {})

        print('It should return given filter')
        cfilter = self.filter.make_filter(mfilter=mfilter)
        self.assertIn('key', cfilter)
        self.assertEqual(cfilter['key'], 'value')
        self.assertEqual(len(cfilter.keys()), 1)

        print('It should return an include filter')
        cfilter = self.filter.make_filter(includes=value)
        self.assertIn('_id', cfilter)
        self.assertEqual(len(cfilter.keys()), 1)
        self.assertIn('$in', cfilter['_id'])
        self.assertEqual(len(cfilter['_id'].keys()), 1)
        self.assertEqual(cfilter['_id']['$in'], value)

        print('It should return an exclude filter')
        cfilter = self.filter.make_filter(excludes=value)
        self.assertIn('_id', cfilter)
        self.assertEqual(len(cfilter.keys()), 1)
        self.assertIn('$nin', cfilter['_id'])
        self.assertEqual(len(cfilter['_id'].keys()), 1)
        self.assertEqual(cfilter['_id']['$nin'], value)

        print('It should return a compund filter between mfilter and excludes')
        cfilter = self.filter.make_filter(mfilter=mfilter, excludes=value)
        self.assertIn('$and', cfilter)
        self.assertEqual(len(cfilter['$and']), 2)
        self.assertEqual(cfilter['$and'][0], mfilter)
        self.assertEqual(cfilter['$and'][1], {'_id': {'$nin': value}})

        print('It should return a compund filter between mfilter and includes')
        cfilter = self.filter.make_filter(mfilter=mfilter, includes=value)
        self.assertIn('$or', cfilter)
        self.assertEqual(len(cfilter['$or']), 2)
        self.assertEqual(cfilter, {'$or': [mfilter, {'_id': {'$in': value}}]})

        print('It should return a compund filter between excludes includes')
        cfilter = self.filter.make_filter(
            excludes=['singlekey'],
            includes=value)
        test = {'$and': [
            {'_id': {'$in': value}},
            {'_id': {'$ne': 'singlekey'}}]}
        self.assertEqual(cfilter, test)