diff options
author | Hasan Ramezani <hasan.r67@gmail.com> | 2019-11-07 15:35:33 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-11-08 10:59:24 +0100 |
commit | 153c7956f84ef4bd203e750f8669f70b6f7fa3f7 (patch) | |
tree | a153af9b3d98e9da47bebc843e07b48ae41a2b63 /tests/postgres_tests/test_array.py | |
parent | 8058d9d7adb189fec75a4b57565f225996c7b22c (diff) | |
download | django-153c7956f84ef4bd203e750f8669f70b6f7fa3f7.tar.gz |
Fixed #24858 -- Added support for get_FOO_display() to ArrayField and RangeFields.
_get_FIELD_display() crashed when Field.choices was unhashable.
Diffstat (limited to 'tests/postgres_tests/test_array.py')
-rw-r--r-- | tests/postgres_tests/test_array.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index 7b7793f6c1..481d93f830 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -37,6 +37,53 @@ except ImportError: pass +@isolate_apps('postgres_tests') +class BasicTests(PostgreSQLSimpleTestCase): + def test_get_field_display(self): + class MyModel(PostgreSQLModel): + field = ArrayField( + models.CharField(max_length=16), + choices=[ + ['Media', [(['vinyl', 'cd'], 'Audio')]], + (('mp3', 'mp4'), 'Digital'), + ], + ) + + tests = ( + (['vinyl', 'cd'], 'Audio'), + (('mp3', 'mp4'), 'Digital'), + (('a', 'b'), "('a', 'b')"), + (['c', 'd'], "['c', 'd']"), + ) + for value, display in tests: + with self.subTest(value=value, display=display): + instance = MyModel(field=value) + self.assertEqual(instance.get_field_display(), display) + + def test_get_field_display_nested_array(self): + class MyModel(PostgreSQLModel): + field = ArrayField( + ArrayField(models.CharField(max_length=16)), + choices=[ + [ + 'Media', + [([['vinyl', 'cd'], ('x',)], 'Audio')], + ], + ((['mp3'], ('mp4',)), 'Digital'), + ], + ) + tests = ( + ([['vinyl', 'cd'], ('x',)], 'Audio'), + ((['mp3'], ('mp4',)), 'Digital'), + ((('a', 'b'), ('c',)), "(('a', 'b'), ('c',))"), + ([['a', 'b'], ['c']], "[['a', 'b'], ['c']]"), + ) + for value, display in tests: + with self.subTest(value=value, display=display): + instance = MyModel(field=value) + self.assertEqual(instance.get_field_display(), display) + + class TestSaveLoad(PostgreSQLTestCase): def test_integer(self): |