|
1 | | -from datetime import datetime |
2 | | -from django.db.utils import DatabaseError |
3 | 1 | from django_mongodb_engine.query import A |
4 | 2 |
|
5 | 3 | from .utils import TestCase, get_collection |
6 | 4 | from .models import * |
7 | 5 |
|
8 | 6 | class EmbeddedModelFieldTestCase(TestCase): |
9 | | - def test_field_docstring(self): |
10 | | - # This is a 1:1 copy of EmbeddedModelField's doctest |
11 | | - bob = Customer( |
12 | | - name='Bob', last_name='Laxley', |
13 | | - address=Address(street='Behind the Mountains 23', |
14 | | - postal_code=1337, city='Blurginson') |
15 | | - ) |
16 | | - self.assertEqual(bob.address.postal_code, 1337) |
17 | | - bob.save() |
18 | | - bob_from_db = Customer.objects.get(name='Bob') |
19 | | - self.assertEqual(bob.address.city, 'Blurginson') |
20 | | - |
21 | | - def test_empty(self): |
22 | | - obj = Model(x=5) |
23 | | - self.assertRaises(DatabaseError, obj.save) |
24 | | - |
25 | | - def test_empty_embedded(self): |
26 | | - obj = Model(x=5) |
27 | | - self.assertRaises(DatabaseError, obj.save) |
28 | | - |
29 | | - def test_simple(self): |
30 | | - obj = Model(x=5, em=EmbeddedModel(charfield='foo')) |
31 | | - assert obj.em |
32 | | - obj.save() |
33 | | - obj = Model.objects.get() |
34 | | - self.assertTrue(isinstance(obj.em, EmbeddedModel)) |
35 | | - self.assertEqual(obj.em.charfield, 'foo') |
36 | | - self.assertNotEqual(obj.em.datetime_auto_now, None) |
37 | | - self.assertNotEqual(obj.em.datetime_auto_now_add, None) |
38 | | - obj.save() |
39 | | - auto_now_before = obj.em.datetime_auto_now |
40 | | - obj = Model.objects.get() |
41 | | - self.assertNotEqual(obj.em.datetime_auto_now, |
42 | | - auto_now_before) |
43 | | - |
44 | | - def test_in_dictfield(self): |
45 | | - foodate = datetime(year=2003, month=9, day=23) |
46 | | - obj = Model( |
47 | | - x=5, |
48 | | - em=EmbeddedModel(charfield='hello', datetime=foodate), |
49 | | - dict_emb={'blah' : EmbeddedModel(charfield='blurg')} |
50 | | - ) |
51 | | - obj.dict_emb['lala'] = EmbeddedModel(charfield='blubb', |
52 | | - datetime=foodate) |
53 | | - obj.save() |
54 | | - obj = Model.objects.get() |
55 | | - self.assertEqual(obj.em.datetime, foodate) |
56 | | - self.assertEqual(obj.dict_emb['blah'].charfield, 'blurg') |
57 | | - self.assertEqual(obj.dict_emb['lala'].datetime, foodate) |
58 | | - obj.dict_emb['blah'].charfield = "Some Change" |
59 | | - obj.dict_emb['foo'] = EmbeddedModel(charfield='bar') |
60 | | - obj.save() |
61 | | - obj = Model.objects.get() |
62 | | - self.assertEqual(obj.dict_emb['blah'].charfield, 'Some Change') |
63 | | - self.assertNotEqual(obj.dict_emb['blah'].datetime_auto_now_add, obj.dict_emb['blah'].datetime_auto_now) |
64 | | - self.assertEqual(obj.dict_emb['foo'].charfield, 'bar') |
65 | | - |
66 | 7 | def test_legacy_field(self): |
67 | 8 | # LegacyModelField should behave like EmbeddedLegacyModelField for |
68 | 9 | # "new-style" data sets |
|
0 commit comments