diff --git a/app/src/Exceptions/InvalidConfiguration.php b/app/src/Exceptions/InvalidConfiguration.php new file mode 100644 index 0000000..fce9a5e --- /dev/null +++ b/app/src/Exceptions/InvalidConfiguration.php @@ -0,0 +1,23 @@ +sort($sortOrder); } else { if (! array_key_exists($sortOrder, $this->container->get('sort_methods'))) { - throw new RuntimeException("Invalid sort option '{$sortOrder}'"); + throw InvalidConfiguration::fromConfig('sort_order', $sortOrder); } $this->container->call($this->container->get('sort_methods')[$sortOrder], [$finder]); diff --git a/app/src/Factories/TranslationFactory.php b/app/src/Factories/TranslationFactory.php index f6220a8..d8fa96e 100644 --- a/app/src/Factories/TranslationFactory.php +++ b/app/src/Factories/TranslationFactory.php @@ -2,8 +2,8 @@ namespace App\Factories; +use App\Exceptions\InvalidConfiguration; use DI\Container; -use RuntimeException; use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; use Symfony\Component\Translation\Loader\YamlFileLoader; @@ -37,16 +37,17 @@ class TranslationFactory */ public function __invoke(): TranslatorInterface { - $language = $this->container->get('language'); - - if (! in_array($language, $this->container->get('translations'))) { - throw new RuntimeException("Invalid language option '{$language}'"); + if (! in_array( + $language = $this->container->get('language'), + $translations = $this->translations()) + ) { + throw InvalidConfiguration::fromConfig('language', $language); } $translator = new Translator($language); $translator->addLoader('yaml', new YamlFileLoader()); - foreach ($this->container->get('translations') as $language) { + foreach ($translations as $language) { $translator->addResource('yaml', sprintf( '%s/%s.yaml', $this->container->get('translations_path'), $language ), $language); diff --git a/tests/Factories/FinderFactoryTest.php b/tests/Factories/FinderFactoryTest.php index e6d404e..8c3c622 100644 --- a/tests/Factories/FinderFactoryTest.php +++ b/tests/Factories/FinderFactoryTest.php @@ -2,8 +2,8 @@ namespace Tests\Factories; +use App\Exceptions\InvalidConfiguration; use App\Factories\FinderFactory; -use RuntimeException; use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; use Tests\TestCase; @@ -85,7 +85,7 @@ class FinderFactoryTest extends TestCase { $this->container->set('sort_order', 'invalid'); - $this->expectException(RuntimeException::class); + $this->expectException(InvalidConfiguration::class); (new FinderFactory($this->container, $this->cache))(); } diff --git a/tests/Factories/TranslationFactoryTest.php b/tests/Factories/TranslationFactoryTest.php index fc43537..076823d 100644 --- a/tests/Factories/TranslationFactoryTest.php +++ b/tests/Factories/TranslationFactoryTest.php @@ -2,8 +2,8 @@ namespace Tests\Factories; +use App\Exceptions\InvalidConfiguration; use App\Factories\TranslationFactory; -use RuntimeException; use Symfony\Component\Translation\MessageCatalogue; use Tests\TestCase; @@ -29,7 +29,7 @@ class TranslationFactoryTest extends TestCase public function test_it_throws_an_exception_for_an_invalid_language(): void { - $this->expectException(RuntimeException::class); + $this->expectException(InvalidConfiguration::class); $this->container->set('language', 'xx'); (new TranslationFactory($this->container, $this->cache))();