def test_update_query(self):
        qb = Builder(collection=None)

        qb.update(multi=True) \
            .field('foo').equals('bar').set('buzz') \
            .field('totals').gt(10) \
            .field('counter').inc(1) \
            .field('some_list').push({'name': 'testing', 'value': 'cool'})

        query_parts = qb.build().query

        assert {'foo': 'bar', 'totals': {'$gt': 10}} == query_parts['query']

        assert {
            '$set': {
                'foo': 'buzz'
            },
            '$inc': {
                'counter': 1
            },
            '$push': {
                'some_list': {
                    'name': 'testing',
                    'value': 'cool'
                }
            }
        } == query_parts['newObj']
    def test_count_query(self):
        qb = Builder(collection=None)

        qb.count() \
            .field('name').ne('awesome') \
            .field('age').lte(45)

        query_list = qb.get_query_list()

        assert {'name': {'$ne': 'awesome'}, 'age': {'$lte': 45}} == query_list

        assert qb.build().query['type'] == QueryTypes.TYPE_COUNT
    def test_count_query(self):
        qb = Builder(collection=None)

        qb.count() \
            .field('name').ne('awesome') \
            .field('age').lte(45)

        query_list = qb.get_query_list()

        assert {'name': {'$ne': 'awesome'},
                'age': {'$lte': 45}} == query_list

        assert qb.build().query['type'] == QueryTypes.TYPE_COUNT
    def test_insert_query(self):
        qb = Builder(collection=None)

        qb.insert() \
            .field('name').set('awesome') \
            .field('age').set(21) \
            .field('attributes').set([0, 1, 2, 3])

        insert_query = qb.build().query['newObj']

        assert {'name': 'awesome',
                'age': 21,
                'attributes': [0, 1, 2, 3]} == insert_query
    def test_insert_query(self):
        qb = Builder(collection=None)

        qb.insert() \
            .field('name').set('awesome') \
            .field('age').set(21) \
            .field('attributes').set([0, 1, 2, 3])

        insert_query = qb.build().query['newObj']

        assert {
            'name': 'awesome',
            'age': 21,
            'attributes': [0, 1, 2, 3]
        } == insert_query
    def test_update_query(self):
        qb = Builder(collection=None)

        qb.update(multi=True) \
            .field('foo').equals('bar').set('buzz') \
            .field('totals').gt(10) \
            .field('counter').inc(1) \
            .field('some_list').push({'name': 'testing', 'value': 'cool'})

        query_parts = qb.build().query

        assert {'foo': 'bar',
                'totals': {'$gt': 10}} == query_parts['query']

        assert {'$set': {'foo': 'buzz'},
                '$inc': {'counter': 1},
                '$push': {'some_list': {'name': 'testing', 'value': 'cool'}}} == query_parts['newObj']