Laravel Uploads

PHP MIT

Secure file upload and storage management for Laravel with Eloquent integration, private and public URLs, upload metadata tracking, and Laravel Storage support.

Stars
18
Forks
2
Downloads
2,356
Open Issues
0
Files main

Repository Files

Loading file structure...
tests/Unit/LaravelUploadsManagerResizeTest.php
<?php

namespace GhostCompiler\LaravelUploads\Tests\Unit;

use GhostCompiler\LaravelUploads\Services\LaravelUploadsManager;
use GhostCompiler\LaravelUploads\Tests\TestCase;

class LaravelUploadsManagerResizeTest extends TestCase
{
    public function test_it_calculates_height_from_width_while_preserving_aspect_ratio(): void
    {
        config()->set('laravel-uploads.image_optimization.max_width', 1600);
        config()->set('laravel-uploads.image_optimization.max_height', null);

        [$width, $height] = $this->manager()->exposedTargetImageDimensions(4000, 2000);

        $this->assertSame(1600, $width);
        $this->assertSame(800, $height);
    }

    public function test_it_calculates_width_from_height_while_preserving_aspect_ratio(): void
    {
        config()->set('laravel-uploads.image_optimization.max_width', null);
        config()->set('laravel-uploads.image_optimization.max_height', 900);

        [$width, $height] = $this->manager()->exposedTargetImageDimensions(2000, 4000);

        $this->assertSame(450, $width);
        $this->assertSame(900, $height);
    }

    public function test_it_does_not_upscale_images_when_resize_limits_are_larger_than_original(): void
    {
        config()->set('laravel-uploads.image_optimization.max_width', 1600);
        config()->set('laravel-uploads.image_optimization.max_height', 1600);

        [$width, $height] = $this->manager()->exposedTargetImageDimensions(800, 600);

        $this->assertSame(800, $width);
        $this->assertSame(600, $height);
    }

    protected function manager(): TestableLaravelUploadsManager
    {
        return new TestableLaravelUploadsManager();
    }
}

class TestableLaravelUploadsManager extends LaravelUploadsManager
{
    public function exposedTargetImageDimensions(int $width, int $height): array
    {
        return $this->targetImageDimensions($width, $height);
    }
}