Add support to transform. Add pull tests for and .
This commit is contained in:
parent
58b0b18ddd
commit
b392e3102e
@ -281,7 +281,7 @@ def update(_doc_cls=None, **update):
|
|||||||
|
|
||||||
if op == 'pull':
|
if op == 'pull':
|
||||||
if field.required or value is not None:
|
if field.required or value is not None:
|
||||||
if match == 'in' and not isinstance(value, dict):
|
if match in ('in', 'nin') and not isinstance(value, dict):
|
||||||
value = _prepare_query_for_iterable(field, op, value)
|
value = _prepare_query_for_iterable(field, op, value)
|
||||||
else:
|
else:
|
||||||
value = field.prepare_query_value(op, value)
|
value = field.prepare_query_value(op, value)
|
||||||
|
@ -276,13 +276,18 @@ class TransformTest(unittest.TestCase):
|
|||||||
title = StringField()
|
title = StringField()
|
||||||
content = EmbeddedDocumentField(SubDoc)
|
content = EmbeddedDocumentField(SubDoc)
|
||||||
|
|
||||||
word = Word(word='abc', index=1)
|
# word = Word(word='abc', index=1)
|
||||||
update = transform.update(MainDoc, pull__content__text=word)
|
# update = transform.update(MainDoc, pull__content__text=word)
|
||||||
self.assertEqual(update, {'$pull': {'content.text': SON([('word', u'abc'), ('index', 1)])}})
|
# self.assertEqual(update, {'$pull': {'content.text': SON([('word', u'abc'), ('index', 1)])}})
|
||||||
|
|
||||||
update = transform.update(MainDoc, pull__content__heading='xyz')
|
# update = transform.update(MainDoc, pull__content__heading='xyz')
|
||||||
self.assertEqual(update, {'$pull': {'content.heading': 'xyz'}})
|
# self.assertEqual(update, {'$pull': {'content.heading': 'xyz'}})
|
||||||
|
|
||||||
|
# update = transform.update(MainDoc, pull__content__text__word__in=['foo', 'bar'])
|
||||||
|
# self.assertEqual(update, {'$pull': {'content.text': {'word': {'$in': ['foo', 'bar']}}}})
|
||||||
|
|
||||||
|
update = transform.update(MainDoc, pull__content__text__word__nin=['foo', 'bar'])
|
||||||
|
self.assertEqual(update, {'$pull': {'content.text': {'word': {'$nin': ['foo', 'bar']}}}})
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user