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']); } }