diff --git a/app/Support/Converters/Image/JpgToPngConverter.php b/app/Support/Converters/Image/JpgToPngConverter.php new file mode 100644 index 0000000..a597748 --- /dev/null +++ b/app/Support/Converters/Image/JpgToPngConverter.php @@ -0,0 +1,67 @@ + 'resize', + 'type' => 'select', + 'label' => 'Resize', + 'default' => 'original', + 'options' => [ + ['value' => 'original', 'label' => 'Original'], + ['value' => '1920', 'label' => '1920 px'], + ['value' => '1280', 'label' => '1280 px'], + ['value' => 'custom', 'label' => 'Custom'], + ], + ], + [ + 'key' => 'remove_metadata', + 'type' => 'toggle', + 'label' => 'Remove metadata', + 'default' => true, + ], + ]; + } + + public function validateOptions(array $options): array + { + return $this->optionsValidator->validate($this->optionsSchema(), $options); + } +} diff --git a/tests/Unit/Converters/Image/JpgToPngConverterTest.php b/tests/Unit/Converters/Image/JpgToPngConverterTest.php new file mode 100644 index 0000000..4a0ec9c --- /dev/null +++ b/tests/Unit/Converters/Image/JpgToPngConverterTest.php @@ -0,0 +1,27 @@ +key())->toBe('jpg:png'); + expect($converter->sourceFormat())->toBe('jpg'); + expect($converter->targetFormat())->toBe('png'); + expect($converter->label())->toBe('PNG'); + expect($converter->description())->not->toBeEmpty(); +}); + +it('provides valid default options for jpg to png', function () { + $converter = app(JpgToPngConverter::class); + + $options = app(OptionsValidator::class)->validate( + $converter->optionsSchema(), + [] + ); + + expect($options)->toHaveKey('resize'); + expect($options)->toHaveKey('remove_metadata'); + expect($options)->not->toHaveKey('transparency'); +});