ImagickRenderingTest.php
73 lines
| 1 | <?php |
| 2 | declare(strict_types = 1); |
| 3 | |
| 4 | namespace BaconQrCodeTest\Integration; |
| 5 | |
| 6 | use BaconQrCode\Renderer\Color\Rgb; |
| 7 | use BaconQrCode\Renderer\Eye\SquareEye; |
| 8 | use BaconQrCode\Renderer\Image\ImagickImageBackEnd; |
| 9 | use BaconQrCode\Renderer\ImageRenderer; |
| 10 | use BaconQrCode\Renderer\Module\SquareModule; |
| 11 | use BaconQrCode\Renderer\RendererStyle\EyeFill; |
| 12 | use BaconQrCode\Renderer\RendererStyle\Fill; |
| 13 | use BaconQrCode\Renderer\RendererStyle\Gradient; |
| 14 | use BaconQrCode\Renderer\RendererStyle\GradientType; |
| 15 | use BaconQrCode\Renderer\RendererStyle\RendererStyle; |
| 16 | use BaconQrCode\Writer; |
| 17 | use PHPUnit\Framework\TestCase; |
| 18 | use Spatie\Snapshots\MatchesSnapshots; |
| 19 | |
| 20 | /** |
| 21 | * @group integration |
| 22 | */ |
| 23 | final class ImagickRenderingTest extends TestCase |
| 24 | { |
| 25 | use MatchesSnapshots; |
| 26 | |
| 27 | /** |
| 28 | * @requires extension imagick |
| 29 | */ |
| 30 | public function testGenericQrCode() : void |
| 31 | { |
| 32 | $renderer = new ImageRenderer( |
| 33 | new RendererStyle(400), |
| 34 | new ImagickImageBackEnd() |
| 35 | ); |
| 36 | $writer = new Writer($renderer); |
| 37 | $tempName = tempnam(sys_get_temp_dir(), 'test') . '.png'; |
| 38 | $writer->writeFile('Hello World!', $tempName); |
| 39 | |
| 40 | $this->assertMatchesFileSnapshot($tempName); |
| 41 | unlink($tempName); |
| 42 | } |
| 43 | |
| 44 | /** |
| 45 | * @requires extension imagick |
| 46 | */ |
| 47 | public function testIssue79() : void |
| 48 | { |
| 49 | $eye = SquareEye::instance(); |
| 50 | $squareModule = SquareModule::instance(); |
| 51 | |
| 52 | $eyeFill = new EyeFill(new Rgb(100, 100, 55), new Rgb(100, 100, 255)); |
| 53 | $gradient = new Gradient(new Rgb(100, 100, 55), new Rgb(100, 100, 255), GradientType::HORIZONTAL()); |
| 54 | |
| 55 | $renderer = new ImageRenderer( |
| 56 | new RendererStyle( |
| 57 | 400, |
| 58 | 2, |
| 59 | $squareModule, |
| 60 | $eye, |
| 61 | Fill::withForegroundGradient(new Rgb(255, 255, 255), $gradient, $eyeFill, $eyeFill, $eyeFill) |
| 62 | ), |
| 63 | new ImagickImageBackEnd() |
| 64 | ); |
| 65 | $writer = new Writer($renderer); |
| 66 | $tempName = tempnam(sys_get_temp_dir(), 'test') . '.png'; |
| 67 | $writer->writeFile('https://apiroad.net/very-long-url', $tempName); |
| 68 | |
| 69 | $this->assertMatchesFileSnapshot($tempName); |
| 70 | unlink($tempName); |
| 71 | } |
| 72 | } |
| 73 |