def test_image_optimization(self): instance = IconFactory.build() instance.image.file = self._build_in_memory_uploaded_file() with patch('snippets.base.models.subprocess.run', wraps=subprocess.run) as run_mock: instance.clean() self.assertTrue(run_mock.called)
def test_invalid_size(self): instance = IconFactory.build() instance.image.file = self._build_in_memory_uploaded_file() try: instance.clean() except ValidationError as e: self.assertEqual( e.message_dict['image'], ['Upload an image less than 0 KiB. This image is 0 KiB.'])
def test_invalid_dimensions(self): instance = IconFactory.build() instance.image.file = self._build_in_memory_uploaded_file() try: instance.clean() except ValidationError as e: self.assertEqual( e.message_dict['image'], ['Upload an image at most 20x20. This image is 30x30.'])
def test_update_icon_generate_new_filename(self): icon = IconFactory() old_name = icon.image.name # Simplest way to test with a new image is to create a new Icon with # IconFactory new_icon = IconFactory() icon.image = File(new_icon.image.file.open()) icon.save() icon.refresh_from_db() self.assertNotEqual(icon.image.name, old_name)
def test_modified_date_updates_when_icon_updates(self): snippet = ASRSnippetFactory() old_modified = snippet.modified template = snippet.template_ng template.icon = IconFactory() template.save() snippet.refresh_from_db() new_modified = snippet.modified self.assertNotEqual(old_modified, new_modified)
def test_modified_date_updates_when_icon_updates(self): snippet = ASRSnippetFactory() # Must refresh from db to get the actual datetime stored in db which # may be different by milliseconds from the original python datetime. snippet.refresh_from_db() old_modified = snippet.modified template = snippet.template_ng template.icon = IconFactory() template.save() snippet.refresh_from_db() new_modified = snippet.modified self.assertNotEqual(old_modified, new_modified)
def test_invalid_image(self): instance = IconFactory.build() img = Image.new('RGB', (30, 30), color='red') fle = io.BytesIO() img.save(fle, 'JPEG') fle.seek(0) size = len(fle.read()) fle.seek(0) instance.image.file = InMemoryUploadedFile(fle, 'ImageField', 'foo.jpeg', 'image/jpeg', size, None) try: instance.clean() except ValidationError as e: self.assertEqual(e.message_dict['image'], ['Upload only PNG images.'])
def test_valid_image_png(self): instance = IconFactory.build() instance.image.file = self._build_in_memory_uploaded_file() self.assertIsNone(instance.clean())
def test_size_test_disabled(self): instance = IconFactory.build() instance.image.file = self._build_in_memory_uploaded_file() self.assertIsNone(instance.clean())
def test_dont_process_when_setting_off(self): instance = IconFactory() instance.image.file = self._build_in_memory_uploaded_file() with patch('snippets.base.models.subprocess.run') as run_mock: instance.clean() self.assertFalse(run_mock.called)
def test_dont_process_existing_files(self): instance = IconFactory.build() with patch('snippets.base.models.subprocess.run') as run_mock: instance.clean() self.assertFalse(run_mock.called)
def test_generate_new_filename(self, uuid_mock): uuid_mock.uuid4.return_value = 'bar' icon = IconFactory(image__filename='upload.png') self.assertEqual(icon.image.name, 'filesroot/bar.png')