Files
fotospiel-app/tests/Unit/Support/WatermarkConfigResolverTest.php
2026-01-21 12:48:34 +01:00

127 lines
4.0 KiB
PHP

<?php
namespace Tests\Unit\Support;
use App\Models\Event;
use App\Models\EventPackage;
use App\Models\Package;
use App\Support\WatermarkConfigResolver;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class WatermarkConfigResolverTest extends TestCase
{
use RefreshDatabase;
public function test_watermark_falls_back_to_base_when_package_blocks_it(): void
{
$package = Package::factory()->create([
'watermark_allowed' => false,
'branding_allowed' => true,
]);
$event = Event::factory()->create([
'settings' => [
'watermark' => [
'mode' => 'custom',
'asset' => 'branding/custom.png',
],
],
]);
EventPackage::create([
'event_id' => $event->id,
'package_id' => $package->id,
'purchased_price' => $package->price,
'purchased_at' => now(),
]);
$event->load('eventPackages.package');
$event->setRelation('eventPackage', $event->eventPackages->first());
$config = WatermarkConfigResolver::resolve($event);
$this->assertSame('base', $config['type']);
$this->assertSame(config('watermark.base.asset'), $config['asset']);
$this->assertSame(config('watermark.base.position'), $config['position']);
}
public function test_branding_locked_forces_base_watermark(): void
{
$package = Package::factory()->create([
'watermark_allowed' => true,
'branding_allowed' => false,
]);
$event = Event::factory()->create([
'settings' => [
'watermark' => [
'mode' => 'custom',
'asset' => 'branding/custom.png',
'position' => 'top-left',
],
],
]);
EventPackage::create([
'event_id' => $event->id,
'package_id' => $package->id,
'purchased_price' => $package->price,
'purchased_at' => now(),
]);
$event->load('eventPackages.package');
$event->setRelation('eventPackage', $event->eventPackages->first());
$config = WatermarkConfigResolver::resolve($event);
$this->assertSame('base', $config['type']);
$this->assertSame(config('watermark.base.asset'), $config['asset']);
$this->assertSame(config('watermark.base.position'), $config['position']);
}
public function test_custom_watermark_is_returned_when_allowed(): void
{
$package = Package::factory()->create([
'watermark_allowed' => true,
'branding_allowed' => true,
]);
$event = Event::factory()->create([
'settings' => [
'watermark' => [
'mode' => 'custom',
'asset' => 'branding/custom.png',
'position' => 'top-center',
'opacity' => 0.8,
'scale' => 0.5,
'padding' => 24,
'offset_x' => 10,
'offset_y' => -5,
],
],
]);
EventPackage::create([
'event_id' => $event->id,
'package_id' => $package->id,
'purchased_price' => $package->price,
'purchased_at' => now(),
]);
$event->load('eventPackages.package');
$event->setRelation('eventPackage', $event->eventPackages->first());
$config = WatermarkConfigResolver::resolve($event);
$this->assertSame('custom', $config['type']);
$this->assertSame('top-center', $config['position']);
$this->assertSame('branding/custom.png', $config['asset']);
$this->assertEquals(0.8, $config['opacity']);
$this->assertEquals(0.5, $config['scale']);
$this->assertEquals(24, $config['padding']);
$this->assertEquals(10, $config['offset_x']);
$this->assertEquals(-5, $config['offset_y']);
}
}