register($pipeline); $asset = AssetTestHelpers::createAsset($this->clock, mime: MimeType::IMAGE_JPEG); $found = $registry->getPipelineForAsset($asset); expect($found)->toBe($pipeline); }); it('returns null for unsupported format', function () { $registry = new DerivatPipelineRegistry(); $pipeline = new ImageDerivatPipeline(BucketName::fromString('variants')); $registry->register($pipeline); $asset = AssetTestHelpers::createAsset($this->clock, mime: MimeType::VIDEO_MP4); $found = $registry->getPipelineForAsset($asset); expect($found)->toBeNull(); }); it('can register multiple pipelines', function () { $registry = new DerivatPipelineRegistry(); $imagePipeline = new ImageDerivatPipeline(BucketName::fromString('variants')); $registry->register($imagePipeline); $all = $registry->getAllPipelines(); expect($all)->toContain($imagePipeline); }); it('overwrites pipeline when same format is registered twice', function () { $registry = new DerivatPipelineRegistry(); $pipeline1 = new ImageDerivatPipeline(BucketName::fromString('variants')); $pipeline2 = new ImageDerivatPipeline(BucketName::fromString('custom-variants')); $registry->register($pipeline1); $registry->register($pipeline2); $asset = AssetTestHelpers::createAsset($this->clock, mime: MimeType::IMAGE_JPEG); $found = $registry->getPipelineForAsset($asset); expect($found)->toBe($pipeline2); }); });