You are here

public function TranslatorCacheTest::testDifferentTranslatorsForSameLocaleDoNotOverwriteEachOthersCache in Plug 7

@dataProvider runForDebugAndProduction

File

lib/Symfony/translation/Tests/TranslatorCacheTest.php, line 121

Class

TranslatorCacheTest

Namespace

Symfony\Component\Translation\Tests

Code

public function testDifferentTranslatorsForSameLocaleDoNotOverwriteEachOthersCache($debug) {

  /*
   * Similar to the previous test. After we used the second translator, make
   * sure there's still a useable cache for the first one.
   */
  $locale = 'any_locale';
  $format = 'some_format';
  $msgid = 'test';

  // Create a Translator and prime its cache
  $translator = new Translator($locale, null, $this->tmpDir, $debug);
  $translator
    ->addLoader($format, new ArrayLoader());
  $translator
    ->addResource($format, array(
    $msgid => 'OK',
  ), $locale);
  $translator
    ->trans($msgid);

  // Create another Translator with a different catalogue for the same locale
  $translator = new Translator($locale, null, $this->tmpDir, $debug);
  $translator
    ->addLoader($format, new ArrayLoader());
  $translator
    ->addResource($format, array(
    $msgid => 'FAIL',
  ), $locale);
  $translator
    ->trans($msgid);

  // Now the first translator must still have a useable cache.
  $translator = new Translator($locale, null, $this->tmpDir, $debug);
  $translator
    ->addLoader($format, $this
    ->createFailingLoader());
  $translator
    ->addResource($format, array(
    $msgid => 'OK',
  ), $locale);
  $this
    ->assertEquals('OK', $translator
    ->trans($msgid), '-> the cache was overwritten by another translator instance in ' . ($debug ? 'debug' : 'production'));
}