diff --git a/Classes/Service/LanguageService.php b/Classes/Service/LanguageService.php index efd4570..e486ba1 100644 --- a/Classes/Service/LanguageService.php +++ b/Classes/Service/LanguageService.php @@ -13,8 +13,7 @@ public function getTargetLanguageForRephrasing(SiteInterface $site, int $targetL { $targetLanguage = $site->getLanguageById($targetLanguage); $targetLanguageConfiguration = $targetLanguage->toArray(); - $deeplWriteLanguage = $targetLanguageConfiguration['deeplWriteLanguage']; - + $deeplWriteLanguage = (string)($targetLanguageConfiguration['deeplWriteLanguage'] ?? ''); return RephraseSupportedDeepLLanguage::tryFrom($deeplWriteLanguage); } } diff --git a/Tests/Functional/Service/DeeplServiceTest.php b/Tests/Functional/Service/DeeplServiceTest.php index c8908ad..bf04cc4 100644 --- a/Tests/Functional/Service/DeeplServiceTest.php +++ b/Tests/Functional/Service/DeeplServiceTest.php @@ -10,6 +10,10 @@ final class DeeplServiceTest extends AbstractDeepLTestCase { + protected array $coreExtensionsToLoad = [ + 'typo3/cms-setup', + ]; + protected array $testExtensionsToLoad = [ 'web-vision/deepl-base', 'web-vision/deepl-write', diff --git a/Tests/Functional/Service/LanguageServiceTest.php b/Tests/Functional/Service/LanguageServiceTest.php new file mode 100644 index 0000000..5953a7a --- /dev/null +++ b/Tests/Functional/Service/LanguageServiceTest.php @@ -0,0 +1,164 @@ + [ + 'deepl_write' => [ + 'apiKey' => 'mock_server', + ], + ], + ]; + + #[Test] + public function getTargetLanguageForRephrasingReturnsNullIfDeeplWriteLanguageDoesNotExistsInSiteConfig(): void + { + $site = new Site( + identifier: 'dummy', + rootPageId: 1, + configuration: [ + 'languages' => [ + [ + 'languageId' => 0, + 'enabled' => true, + 'title' => 'English', + 'base' => '/', + 'locale' => 'en_US.UTF-8', + 'navigationTitle' => 'English', + 'flag' => 'us', + 'typo3Language' => 'default', + 'iso-639-1' => 'en', + 'hreflang' => 'en-us', + 'direction' => 'ltr', + 'websiteTitle' => '', + ], + [ + 'languageId' => 1, + 'enabled' => true, + 'title' => 'Deutsch', + 'base' => '/de/', + 'locale' => 'de_DE.UTF-8', + 'navigationTitle' => 'English', + 'flag' => 'us', + 'typo3Language' => 'de', + 'iso-639-1' => 'de', + 'hreflang' => 'de-de', + 'direction' => 'ltr', + 'websiteTitle' => '', + ], + ], + ], + settings: null, + ); + $targetSite = $this->get(LanguageService::class)->getTargetLanguageForRephrasing($site, 1); + static::assertNull($targetSite); + } + + #[Test] + public function getTargetLanguageForRephasingReturnsNullForInvalidConfiguredDeeplWriteLanguage(): void + { + $site = new Site( + identifier: 'dummy', + rootPageId: 1, + configuration: [ + 'languages' => [ + [ + 'languageId' => 0, + 'enabled' => true, + 'title' => 'English', + 'base' => '/', + 'locale' => 'en_US.UTF-8', + 'navigationTitle' => 'English', + 'flag' => 'us', + 'typo3Language' => 'default', + 'iso-639-1' => 'en', + 'hreflang' => 'en-us', + 'direction' => 'ltr', + 'websiteTitle' => '', + ], + [ + 'languageId' => 1, + 'enabled' => true, + 'title' => 'Deutsch', + 'base' => '/de/', + 'locale' => 'de_DE.UTF-8', + 'navigationTitle' => 'English', + 'flag' => 'us', + 'typo3Language' => 'de', + 'iso-639-1' => 'de', + 'hreflang' => 'de-de', + 'direction' => 'ltr', + 'websiteTitle' => '', + 'deeplWriteLanguage' => 'RU', + ], + ], + ], + settings: null, + ); + $targetSite = $this->get(LanguageService::class)->getTargetLanguageForRephrasing($site, 1); + static::assertNull($targetSite); + } + + #[Test] + public function getTargetLanguageForRephrasingReturnsValidConfiguredDeeplWriteLanguage(): void + { + $site = new Site( + identifier: 'dummy', + rootPageId: 1, + configuration: [ + 'languages' => [ + [ + 'languageId' => 0, + 'enabled' => true, + 'title' => 'English', + 'base' => '/', + 'locale' => 'en_US.UTF-8', + 'navigationTitle' => 'English', + 'flag' => 'us', + 'typo3Language' => 'default', + 'iso-639-1' => 'en', + 'hreflang' => 'en-us', + 'direction' => 'ltr', + 'websiteTitle' => '', + ], + [ + 'languageId' => 1, + 'enabled' => true, + 'title' => 'Deutsch', + 'base' => '/de/', + 'locale' => 'de_DE.UTF-8', + 'navigationTitle' => 'English', + 'flag' => 'us', + 'typo3Language' => 'de', + 'iso-639-1' => 'de', + 'hreflang' => 'de-de', + 'direction' => 'ltr', + 'websiteTitle' => '', + 'deeplWriteLanguage' => 'DE', + ], + ], + ], + settings: null, + ); + $targetSite = $this->get(LanguageService::class)->getTargetLanguageForRephrasing($site, 1); + static::assertSame('DE', $targetSite); + } +}