public function testgetFallbackLanguageByUnknownLanguageCode() { $languageJsonFileContentsReader = $this->getMockBuilder(LanguageJsonFileContentsReader::class)->disableOriginalConstructor()->getMock(); $languageJsonFileContentsReader->expects($this->atLeastOnce())->method('readByLanguageCode')->will($this->throwException(new \RuntimeException())); $instance = new LanguageFallbackFinder($languageJsonFileContentsReader); $this->assertEquals('en', $instance->getFallbackLanguageBy('unknownLanguageCode')); }
private function getFromLanguageWithIndex($languageCode, $index) { $canonicalFallbackLanguageCode = $this->languageFallbackFinder->getCanonicalFallbackLanguageCode(); if (!isset($this->contents[$languageCode]) || $this->contents[$languageCode] === array()) { // In case a language has no matching file try { $this->contents[$languageCode] = $this->languageJsonFileContentsReader->readByLanguageCode($languageCode); } catch (RuntimeException $e) { $this->contents[$languageCode] = array(); $languageCode = $canonicalFallbackLanguageCode; } } if (isset($this->contents[$languageCode][$index]) && $this->contents[$languageCode][$index] !== array()) { return $this->contents[$languageCode][$index]; } if ($languageCode !== $canonicalFallbackLanguageCode) { return $this->getFromLanguageWithIndex($this->languageFallbackFinder->getFallbackLanguageBy($languageCode), $index); } return $this->getCanonicalContentsFrom($canonicalFallbackLanguageCode, $index); }