Beispiel #1
0
 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_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)
Beispiel #8
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))
Beispiel #10
0
 def test_calculate__landscape_to_portrait_rounding(self):
     fit = Fit(width=180, height=300)
     self.assertEqual(fit.calculate((399, 666)), (180, 300))
Beispiel #11
0
 def test_calculate__portrait_to_landscape_rounding(self):
     fit = Fit(width=300, height=180)
     self.assertEqual(fit.calculate((666, 399)), (300, 180))
Beispiel #12
0
 def test_calculate__smallest(self):
     fit = Fit(width=60, height=50)
     self.assertEqual(fit.calculate((100, 100)), (50, 50))
Beispiel #13
0
 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|')
Beispiel #14
0
 def test_calculate__height(self):
     fit = Fit(height=50)
     self.assertEqual(fit.calculate((100, 100)), (50, 50))
 def test_calculate__width(self):
     fit = Fit(width=50)
     self.assertEqual(fit.calculate((100, 100)), (50, 50))
 def test_calculate__height(self):
     fit = Fit(height=50)
     self.assertEqual(fit.calculate((100, 100)), (50, 50))
 def test_calculate__portrait_to_landscape_rounding(self):
     fit = Fit(width=300, height=180)
     self.assertEqual(fit.calculate((666, 399)), (300, 180))
 def test_calculate__landscape_to_portrait_rounding(self):
     fit = Fit(width=180, height=300)
     self.assertEqual(fit.calculate((399, 666)), (180, 300))
Beispiel #19
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)