diff options
| author | Anssi Kääriäinen <akaariai@gmail.com> | 2013-08-14 11:05:01 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2013-08-22 17:24:07 +0300 |
| commit | 6af05e7a0f0e4604d6a67899acaa99d73ec0dfaa (patch) | |
| tree | de9bc5025ba6062a3ff71cb234c6e0c84a9daf9c /tests/basic/tests.py | |
| parent | 768bbf3efe0c412bced1e865e90139a0f07dc613 (diff) | |
Fixed model.__eq__ and __hash__ for no pk value cases
The __eq__ method now considers two instances without primary key value
equal only when they have same id(). The __hash__ method raises
TypeError for no primary key case.
Fixed #18864, fixed #18250
Thanks to Tim Graham for docs review.
Diffstat (limited to 'tests/basic/tests.py')
| -rw-r--r-- | tests/basic/tests.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/basic/tests.py b/tests/basic/tests.py index 2b051621ef..611944902a 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -708,9 +708,20 @@ class ModelTest(TestCase): SelfRef.objects.get(selfref=sr) def test_eq(self): + self.assertEqual(Article(id=1), Article(id=1)) self.assertNotEqual(Article(id=1), object()) self.assertNotEqual(object(), Article(id=1)) + a = Article() + self.assertEqual(a, a) + self.assertNotEqual(Article(), a) + def test_hash(self): + # Value based on PK + self.assertEqual(hash(Article(id=1)), hash(1)) + with self.assertRaises(TypeError): + # No PK value -> unhashable (because save() would then change + # hash) + hash(Article()) class ConcurrentSaveTests(TransactionTestCase): |
