|
1 | | -from decimal import Decimal |
2 | | - |
3 | 1 | from django.core.exceptions import ValidationError |
| 2 | +from django.db import models |
4 | 3 | from django.test import SimpleTestCase, TestCase |
| 4 | +from django.test.utils import isolate_apps |
5 | 5 |
|
6 | 6 | from django_mongodb_backend.fields import EmbeddedModelField |
7 | 7 |
|
8 | 8 | from .models import ( |
9 | 9 | Address, |
10 | 10 | Author, |
11 | 11 | Book, |
12 | | - DecimalKey, |
13 | | - DecimalParent, |
14 | 12 | EmbeddedModel, |
15 | 13 | EmbeddedModelFieldModel, |
16 | | - Target, |
17 | 14 | ) |
18 | 15 |
|
19 | 16 |
|
@@ -82,19 +79,6 @@ def test_pre_save(self): |
82 | 79 | self.assertEqual(obj.simple.auto_now_add, auto_now_add) |
83 | 80 | self.assertGreater(obj.simple.auto_now, auto_now_two) |
84 | 81 |
|
85 | | - def test_foreign_key_in_embedded_object(self): |
86 | | - simple = EmbeddedModel(some_relation=Target.objects.create(index=1)) |
87 | | - obj = EmbeddedModelFieldModel.objects.create(simple=simple) |
88 | | - simple = EmbeddedModelFieldModel.objects.get().simple |
89 | | - self.assertNotIn("some_relation", simple.__dict__) |
90 | | - self.assertIsInstance(simple.__dict__["some_relation_id"], type(obj.id)) |
91 | | - self.assertIsInstance(simple.some_relation, Target) |
92 | | - |
93 | | - def test_embedded_field_with_foreign_conversion(self): |
94 | | - decimal = DecimalKey.objects.create(decimal=Decimal("1.5")) |
95 | | - decimal_parent = DecimalParent.objects.create(child=decimal) |
96 | | - EmbeddedModelFieldModel.objects.create(decimal_parent=decimal_parent) |
97 | | - |
98 | 82 |
|
99 | 83 | class QueryingTests(TestCase): |
100 | 84 | @classmethod |
@@ -134,3 +118,21 @@ def test_nested(self): |
134 | 118 | author=Author(name="Shakespeare", age=55, address=Address(city="NYC", state="NY")) |
135 | 119 | ) |
136 | 120 | self.assertCountEqual(Book.objects.filter(author__address__city="NYC"), [obj]) |
| 121 | + |
| 122 | + |
| 123 | +@isolate_apps("model_fields_") |
| 124 | +class CheckTests(SimpleTestCase): |
| 125 | + def test_no_relational_fields(self): |
| 126 | + class Target(models.Model): |
| 127 | + key = models.ForeignKey("MyModel", models.CASCADE) |
| 128 | + |
| 129 | + class MyModel(models.Model): |
| 130 | + field = EmbeddedModelField(Target) |
| 131 | + |
| 132 | + model = MyModel() |
| 133 | + errors = model.check() |
| 134 | + self.assertEqual(len(errors), 1) |
| 135 | + # The inner CharField has a non-positive max_length. |
| 136 | + self.assertEqual(errors[0].id, "django_mongodb.embedded_model.E001") |
| 137 | + msg = errors[0].msg |
| 138 | + self.assertEqual(msg, "Embedded models cannot have relational fields.") |
0 commit comments