|
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