setType($packageData['type']); $package->setExtra($packageData['extra'] ?? []); $extensionKey = ExtensionKeyResolver::resolve($package); self::assertSame($expectedExtensionKey, $extensionKey); } public static function resolveDataProvider(): \Generator { yield 'extension' => [ 'packageData' => [ 'name' => 'somevendor/somepackage-extension', 'type' => 'typo3-cms-extension', 'extra' => [ 'typo3/cms' => [ 'extension-key' => 'extension_with_key', ], ], ], 'expectedExtensionKey' => 'extension_with_key', ]; yield 'composer package' => [ 'packageData' => [ 'name' => 'somevendor/somepackage-extension', 'type' => 'library', 'extra' => [ 'typo3/cms' => [ 'extension-key' => 'extension_with_key', ], ], ], 'expectedExtensionKey' => 'extension_with_key', ]; yield 'composer package without extra' => [ 'packageData' => [ 'name' => 'somevendor/somepackage-extension', 'type' => 'library', ], 'expectedExtensionKey' => 'somevendor/somepackage-extension', ]; } #[Test] public function extensionKeyResolvingThrowsExceptionIfKeyNotSetInExtra(): void { $this->expectException(\RuntimeException::class); $package = new Package('foo/bar', 'dev-develop', 'dev-develop'); $package->setType('typo3-cms-extension'); ExtensionKeyResolver::resolve($package); } }