Add support to transform. Add pull tests for and .
This commit is contained in:
		| @@ -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() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user