def test_adjust__smallest(self): im = Image.open(self._data_path('100x100.png')) fit = Fit(width=60, height=50) adjusted = fit.adjust(im) self.assertEqual(adjusted.size, (50, 50)) expected = Image.open(self._data_path('50x50_fit.png')) self.assertImageEqual(adjusted, expected)
def test_get_helpers__queryset(self): preadjust = Preadjust() qs = AdjustedImage.objects.all() dp = ((qs, [Fit(width=50)], 'storage_path'), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) self.assertTrue(qs._result_cache is None)
def test_get_helpers__iterable(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') adjusted = AdjustedImage.objects.create(storage_path=storage_path, adjusted=storage_path) def _iter(): yield adjusted dp = ((_iter(), [Fit(width=50)], 'storage_path'), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1)
def test_preadjust__generate(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') self.assertEqual(AdjustedImage.objects.count(), 0) preadjust.stdout = mock.MagicMock() dp = (([storage_path], [Fit(width=50)], None), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): preadjust._preadjust() preadjust.stdout.write.assert_has_calls([ mock.call('Skipped 0 empty paths.\n'), mock.call('Skipped 0 paths which have already been adjusted.\n'), mock.call('Adjusting 1 path... '), mock.call('Done.\n'), ]) self.assertEqual(AdjustedImage.objects.count(), 1)
def test_preadjust__generate__failed(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') self.assertEqual(AdjustedImage.objects.count(), 0) preadjust.stdout = mock.MagicMock() dp = (([storage_path], [Fit(width=50)], None), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): with mock.patch('daguerre.helpers.save_image', side_effect=IOError): preadjust._preadjust() preadjust.stdout.write.assert_has_calls([ mock.call('Skipped 0 empty paths.\n'), mock.call('Skipped 0 paths which have already been adjusted.\n'), mock.call('Adjusting 1 path... '), mock.call('Done.\n'), mock.call('1 path failed due to I/O errors.') ]) self.assertEqual(AdjustedImage.objects.count(), 0)
class PreadjustTestCase(BaseTestCase): @override_settings() def test_get_helpers__no_setting(self): try: del settings.DAGUERRE_PREADJUSTMENTS except AttributeError: pass preadjust = Preadjust() self.assertRaisesMessage(CommandError, NO_ADJUSTMENTS, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=(('model', [Fit(width=50)], None), )) def test_get_helpers__bad_string(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=(('app.model', [Fit(width=50)], None), )) def test_get_helpers__bad_model(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=(1, 2, 3)) def test_get_helpers__not_tuples(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=(('daguerre.adjustedimage', [], 'storage_path'), )) def test_get_helpers__no_adjustments(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=(('daguerre.adjustedimage', [Fit(width=50) ], 'storage_path'), )) def test_get_helpers__good_string(self): preadjust = Preadjust() helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) @override_settings(DAGUERRE_PREADJUSTMENTS=((AdjustedImage, [Fit(width=50) ], 'storage_path'), )) def test_get_helpers__model(self): preadjust = Preadjust() helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) def test_get_helpers__queryset(self): preadjust = Preadjust() qs = AdjustedImage.objects.all() dp = ((qs, [Fit(width=50)], 'storage_path'), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) self.assertTrue(qs._result_cache is None) def test_get_helpers__iterable(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') adjusted = AdjustedImage.objects.create(storage_path=storage_path, adjusted=storage_path) def _iter(): yield adjusted dp = ((_iter(), [Fit(width=50)], 'storage_path'), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) @override_settings(DAGUERRE_PREADJUSTMENTS=((AdjustedImage, [Fit(width=50) ], 'storage_path'), )) def test_preadjust__empty(self): preadjust = Preadjust() storage_path = 'does_not_exist.png' AdjustedImage.objects.create(storage_path=storage_path, adjusted=storage_path) self.assertEqual(AdjustedImage.objects.count(), 1) preadjust.stdout = mock.MagicMock() preadjust._preadjust() preadjust.stdout.write.assert_has_calls([ mock.call('Skipped 1 empty path.\n'), mock.call('Skipped 0 paths which have already been adjusted.\n'), mock.call('No paths remaining to adjust.\n'), ]) self.assertEqual(AdjustedImage.objects.count(), 1) @override_settings(DAGUERRE_PREADJUSTMENTS=((AdjustedImage, [Fit(width=50) ], 'storage_path'), )) def test_preadjust__skipped(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') AdjustedImage.objects.create(storage_path=storage_path, adjusted=storage_path, requested='fit|50|') self.assertEqual(AdjustedImage.objects.count(), 1) preadjust.stdout = mock.MagicMock() preadjust._preadjust() preadjust.stdout.write.assert_has_calls([ mock.call('Skipped 0 empty paths.\n'), mock.call('Skipped 1 path which has already been adjusted.\n'), mock.call('No paths remaining to adjust.\n'), ]) self.assertEqual(AdjustedImage.objects.count(), 1) def test_preadjust__generate(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') self.assertEqual(AdjustedImage.objects.count(), 0) preadjust.stdout = mock.MagicMock() dp = (([storage_path], [Fit(width=50)], None), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): preadjust._preadjust() preadjust.stdout.write.assert_has_calls([ mock.call('Skipped 0 empty paths.\n'), mock.call('Skipped 0 paths which have already been adjusted.\n'), mock.call('Adjusting 1 path... '), mock.call('Done.\n'), ]) self.assertEqual(AdjustedImage.objects.count(), 1) def test_preadjust__generate__failed(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') self.assertEqual(AdjustedImage.objects.count(), 0) preadjust.stdout = mock.MagicMock() dp = (([storage_path], [Fit(width=50)], None), ) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): with mock.patch('daguerre.helpers.save_image', side_effect=IOError): preadjust._preadjust() preadjust.stdout.write.assert_has_calls([ mock.call('Skipped 0 empty paths.\n'), mock.call('Skipped 0 paths which have already been adjusted.\n'), mock.call('Adjusting 1 path... '), mock.call('Done.\n'), mock.call('1 path failed due to I/O errors.') ]) self.assertEqual(AdjustedImage.objects.count(), 0)
def test_calculate__width(self): fit = Fit(width=50) self.assertEqual(fit.calculate((100, 100)), (50, 50))
def test_calculate__smallest(self): fit = Fit(width=60, height=50) self.assertEqual(fit.calculate((100, 100)), (50, 50))
def test_calculate__landscape_to_portrait_rounding(self): fit = Fit(width=180, height=300) self.assertEqual(fit.calculate((399, 666)), (180, 300))
def test_calculate__portrait_to_landscape_rounding(self): fit = Fit(width=300, height=180) self.assertEqual(fit.calculate((666, 399)), (300, 180))
def test_serialize(self): adjustments = [Fit(width=25, height=50), Crop(width=25)] requested = AdjustmentHelper._serialize_requested(adjustments) self.assertEqual(requested, 'fit|25|50>crop|25|')
def test_calculate__height(self): fit = Fit(height=50) self.assertEqual(fit.calculate((100, 100)), (50, 50))
class PreadjustTestCase(BaseTestCase): @override_settings() def test_get_helpers__no_setting(self): try: del settings.DAGUERRE_PREADJUSTMENTS except AttributeError: pass preadjust = Preadjust() self.assertRaisesMessage(CommandError, NO_ADJUSTMENTS, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=( ('model', [Fit(width=50)], None),)) def test_get_helpers__bad_string(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=( ('app.model', [Fit(width=50)], None),)) def test_get_helpers__bad_model(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=(1, 2, 3)) def test_get_helpers__not_tuples(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=( ('daguerre.adjustedimage', [], 'storage_path'),)) def test_get_helpers__no_adjustments(self): preadjust = Preadjust() self.assertRaisesMessage(CommandError, BAD_STRUCTURE, preadjust._get_helpers) @override_settings(DAGUERRE_PREADJUSTMENTS=( ('daguerre.adjustedimage', [Fit(width=50)], 'storage_path'),)) def test_get_helpers__good_string(self): preadjust = Preadjust() helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) @override_settings(DAGUERRE_PREADJUSTMENTS=( (AdjustedImage, [Fit(width=50)], 'storage_path'),)) def test_get_helpers__model(self): preadjust = Preadjust() helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) def test_get_helpers__queryset(self): preadjust = Preadjust() qs = AdjustedImage.objects.all() dp = ((qs, [Fit(width=50)], 'storage_path'),) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1) self.assertTrue(qs._result_cache is None) def test_get_helpers__iterable(self): preadjust = Preadjust() storage_path = self.create_image('100x100.png') adjusted = AdjustedImage.objects.create(storage_path=storage_path, adjusted=storage_path) def _iter(): yield adjusted dp = ((_iter(), [Fit(width=50)], 'storage_path'),) with override_settings(DAGUERRE_PREADJUSTMENTS=dp): helpers = preadjust._get_helpers() self.assertEqual(len(helpers), 1)