|
2 | 2 | # Copyright © 2022 CloudBlue LLC. All rights reserved. |
3 | 3 | # |
4 | 4 |
|
5 | | -from django_mongoengine import Document, EmbeddedDocument, fields |
6 | 5 | from py_rql.constants import FilterLookups |
7 | 6 |
|
8 | 7 | from dj_mongoengine_rql.filter_cls import MongoengineRQLFilterClass |
9 | | - |
10 | | - |
11 | | -class EmbDoc(EmbeddedDocument): |
12 | | - str_f = fields.StringField() |
13 | | - int_f = fields.IntField(blank=True) |
14 | | - |
15 | | - |
16 | | -class Doc(Document): |
17 | | - str_f = fields.StringField(max_length=255, blank=True) |
18 | | - bl = fields.BooleanField(default=True) |
19 | | - dt = fields.DateTimeField(blank=True) |
20 | | - d = fields.DateField(blank=True) |
21 | | - dec = fields.DecimalField(blank=True) |
22 | | - flt = fields.FloatField(blank=True) |
23 | | - int_f = fields.IntField(blank=True, db_field='other_int_f') |
24 | | - |
25 | | - related_doc = fields.EmbeddedDocumentField('EmbDoc', blank=True) |
| 8 | +from tests.documents import Doc |
26 | 9 |
|
27 | 10 |
|
28 | 11 | class DocFilterClass(MongoengineRQLFilterClass): |
@@ -76,3 +59,13 @@ def test_not(): |
76 | 59 | _, qs = DocFilterClass(Doc.objects.filter(int_f=1)).apply_filters('not(eq(int_f,120))') |
77 | 60 |
|
78 | 61 | assert qs.query.q == {'$nor': [{'other_int_f': 120}], 'other_int_f': 1} |
| 62 | + |
| 63 | + |
| 64 | +def test_db_operation(is_real_mongo): |
| 65 | + if is_real_mongo: |
| 66 | + doc = Doc.objects.create(str_f='a') |
| 67 | + Doc.objects.create(str_f='b') |
| 68 | + |
| 69 | + _, qs = DocFilterClass(Doc.objects).apply_filters('str_f=a') |
| 70 | + |
| 71 | + assert list(qs.all()) == [doc] |
0 commit comments