diff options
author | Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com> | 2014-04-05 17:58:05 +0200 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-02-04 09:05:23 -0500 |
commit | 2be621e44c1b5b68c895383f3e20b1f17ddb447a (patch) | |
tree | 54680894c5dda782bba0f5edced04143adf126f7 /tests/admin_widgets/tests.py | |
parent | 5bc5ddd8b5d787c5e744efead184d46c55d03687 (diff) | |
download | django-2be621e44c1b5b68c895383f3e20b1f17ddb447a.tar.gz |
Fixed #14497 -- Improved admin widget for "read only" FileFields
Based on patch by Adam J Forster, Paul Collins, and Julien.
Diffstat (limited to 'tests/admin_widgets/tests.py')
-rw-r--r-- | tests/admin_widgets/tests.py | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index c2855bb237..37ca50794c 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -350,26 +350,55 @@ class AdminURLWidgetTest(DjangoTestCase): ) -class AdminFileWidgetTest(DjangoTestCase): - def test_render(self): +@override_settings( + PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'], + ROOT_URLCONF='admin_widgets.urls', +) +class AdminFileWidgetTests(DjangoTestCase): + fixtures = ['admin-widgets-users.xml'] + + def setUp(self): band = models.Band.objects.create(name='Linkin Park') - album = band.album_set.create( + self.album = band.album_set.create( name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg' ) + def test_render(self): w = widgets.AdminFileWidget() self.assertHTMLEqual( - w.render('test', album.cover_art), - '<p class="file-upload">Currently: <a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">albums\hybrid_theory.jpg</a> <span class="clearable-file-input"><input type="checkbox" name="test-clear" id="test-clear_id" /> <label for="test-clear_id">Clear</label></span><br />Change: <input type="file" name="test" /></p>' % { - 'STORAGE_URL': default_storage.url('') + w.render('test', self.album.cover_art), + '<p class="file-upload">Currently: <a href="%(STORAGE_URL)salbums/' + 'hybrid_theory.jpg">albums\hybrid_theory.jpg</a> ' + '<span class="clearable-file-input">' + '<input type="checkbox" name="test-clear" id="test-clear_id" /> ' + '<label for="test-clear_id">Clear</label></span><br />' + 'Change: <input type="file" name="test" /></p>' % { + 'STORAGE_URL': default_storage.url(''), }, ) - self.assertHTMLEqual( w.render('test', SimpleUploadedFile('test', b'content')), '<input type="file" name="test" />', ) + def test_readonly_fields(self): + """ + File widgets should render as a link when they're marked "read only." + """ + self.client.login(username="super", password="secret") + response = self.client.get('/admin_widgets/album/%s/' % self.album.id) + self.assertContains( + response, + '<p><a href="%(STORAGE_URL)salbums/hybrid_theory.jpg">' + 'albums\hybrid_theory.jpg</a></p>' % {'STORAGE_URL': default_storage.url('')}, + html=True, + ) + self.assertNotContains( + response, + '<input type="file" name="cover_art" id="id_cover_art" />', + html=True, + ) + @override_settings(ROOT_URLCONF='admin_widgets.urls') class ForeignKeyRawIdWidgetTest(DjangoTestCase): |