Reuse existing files as previews, icons or featured images #161
@ -479,6 +479,68 @@ class UpdateTest(CheckFilePropertiesMixin, TestCase):
|
|||||||
size_bytes=30177,
|
size_bytes=30177,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_update_icon_existing_file_linked(self):
|
||||||
|
file = FileFactory(
|
||||||
|
type=File.TYPES.IMAGE,
|
||||||
|
original_hash='sha256:ee3a015c51e35a237755713ec578334efa9ed8870af65b708f591f9254ff4472',
|
||||||
|
hash='sha256:ee3a015c51e35a237755713ec578334efa9ed8870af65b708f591f9254ff4472',
|
||||||
|
source='test_icon_0001.png',
|
||||||
|
)
|
||||||
|
extension = create_approved_version().extension
|
||||||
|
images_count_before = File.objects.filter(type=File.TYPES.IMAGE).count()
|
||||||
|
self.assertIsNone(extension.icon)
|
||||||
|
self.assertEqual(file.icon_of.count(), 0)
|
||||||
|
old_user = file.user
|
||||||
|
|
||||||
|
url = extension.get_manage_url()
|
||||||
|
user = extension.authors.first()
|
||||||
|
self.client.force_login(user)
|
||||||
|
with open(TEST_FILES_DIR / 'test_icon_0001.png', 'rb') as fp:
|
||||||
|
files = {'icon-source': fp}
|
||||||
|
response = self.client.post(url, {**POST_DATA, **files})
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 302)
|
||||||
|
# No new files were created: the existing one was linked to the extension instead
|
||||||
|
self.assertEqual(File.objects.filter(type=File.TYPES.IMAGE).count(), images_count_before)
|
||||||
|
extension.refresh_from_db()
|
||||||
|
self.assertEqual(extension.icon, file)
|
||||||
|
self.assertEqual(file.icon_of.count(), 1)
|
||||||
|
file.refresh_from_db()
|
||||||
|
self.assertEqual(file.user, old_user)
|
||||||
|
|
||||||
|
def test_update_icon_existing_file_linked_to_multiple_extensions(self):
|
||||||
|
file = FileFactory(
|
||||||
|
type=File.TYPES.IMAGE,
|
||||||
|
original_hash='sha256:ee3a015c51e35a237755713ec578334efa9ed8870af65b708f591f9254ff4472',
|
||||||
|
hash='sha256:ee3a015c51e35a237755713ec578334efa9ed8870af65b708f591f9254ff4472',
|
||||||
|
source='test_icon_0001.png',
|
||||||
|
)
|
||||||
|
extension = create_approved_version().extension
|
||||||
|
another_extension = create_approved_version(extension__icon=file).extension
|
||||||
|
images_count_before = File.objects.filter(type=File.TYPES.IMAGE).count()
|
||||||
|
self.assertIsNone(extension.icon)
|
||||||
|
self.assertEqual(another_extension.icon_id, file.pk)
|
||||||
|
old_user = file.user
|
||||||
|
|
||||||
|
url = extension.get_manage_url()
|
||||||
|
user = extension.authors.first()
|
||||||
|
self.client.force_login(user)
|
||||||
|
with open(TEST_FILES_DIR / 'test_icon_0001.png', 'rb') as fp:
|
||||||
|
files = {'icon-source': fp}
|
||||||
|
response = self.client.post(url, {**POST_DATA, **files})
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 302)
|
||||||
|
# No new files were created: the existing one was linked to the extension instead
|
||||||
|
self.assertEqual(File.objects.filter(type=File.TYPES.IMAGE).count(), images_count_before)
|
||||||
|
extension.refresh_from_db()
|
||||||
|
another_extension.refresh_from_db()
|
||||||
|
self.assertEqual(extension.icon, file)
|
||||||
|
self.assertEqual(another_extension.icon, file)
|
||||||
|
# File is referenced as a preview by both extensions
|
||||||
|
self.assertEqual(file.icon_of.count(), 2)
|
||||||
|
file.refresh_from_db()
|
||||||
|
self.assertEqual(file.user, old_user)
|
||||||
|
|
||||||
def test_update_featured_image_changes_expected_file_fields(self):
|
def test_update_featured_image_changes_expected_file_fields(self):
|
||||||
extension = create_approved_version(
|
extension = create_approved_version(
|
||||||
extension__featured_image=ImageFactory(
|
extension__featured_image=ImageFactory(
|
||||||
|
Loading…
Reference in New Issue
Block a user