Blame view

framework/tests/i18n/i18nSSLegacyAdapterTest.php 3 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  <?php
  /**
   * @package framework
   * @subpackage i18n
   */
  
  class i18nSSLegacyAdapterTest extends SapphireTest {
  
  	public function setUp() {
  		parent::setUp();
  		
  		$this->alternateBasePath = $this->getCurrentAbsolutePath() . "/_fakewebroot";
  		$this->alternateBaseSavePath = TEMP_FOLDER . '/i18nTextCollectorTest_webroot';
  		FileSystem::makeFolder($this->alternateBaseSavePath);
  		Config::inst()->update('Director', 'alternate_base_folder', $this->alternateBasePath);
  
  		// Push a template loader running from the fake webroot onto the stack.
  		$templateManifest = new SS_TemplateManifest($this->alternateBasePath, null, false, true);
  		$templateManifest->regenerate(false);
  		SS_TemplateLoader::instance()->pushManifest($templateManifest);
  		$this->_oldTheme = Config::inst()->get('SSViewer', 'theme');
  		Config::inst()->update('SSViewer', 'theme', 'testtheme1');
  		
  		$classManifest = new SS_ClassManifest($this->alternateBasePath, false, true, false);
  		SS_ClassLoader::instance()->pushManifest($classManifest);
  
  		$this->originalLocale = i18n::get_locale();
  		
  		// Override default adapter to avoid cached translations between tests.
  		// Emulates behaviour in i18n::get_translators()
  		$this->origAdapter = i18n::get_translator('core');
  		$adapter = new Zend_Translate(array(
  			'adapter' => 'i18nSSLegacyAdapter',
  			'locale' => i18n::default_locale(),
  			'disableNotices' => true,
  		));
  		i18n::register_translator($adapter, 'core');
  		$adapter->removeCache();
  		i18n::include_by_locale('en');
  	}
  	
  	public function tearDown() {
  		SS_TemplateLoader::instance()->popManifest();
  		SS_ClassLoader::instance()->popManifest();
  		i18n::set_locale($this->originalLocale);
  		Config::inst()->update('Director', 'alternate_base_folder', null);
  		Config::inst()->update('SSViewer', 'theme', $this->_oldTheme);
  		i18n::register_translator($this->origAdapter, 'core');
  		
  		parent::tearDown();
  	}
  	
  	public function testTranslate() {
  		i18n::set_locale('en_US');
  		$this->assertEquals(
  			'Legacy translation',
  			// defined in i18nothermodule/lang/en_US.php
  			i18n::_t('i18nOtherModule.LEGACY'),
  			'Finds original strings in PHP module files'
  		);
  		$this->assertEquals(
  			'Legacy translation',
  			// defined in themes/testtheme1/lang/en_US.php
  			i18n::_t('i18nOtherModule.LEGACYTHEME'),
  			'Finds original strings in theme files'
  		);
  		i18n::set_locale('de_DE');
  		$this->assertEquals(
  			'Legacy translation (de_DE)',
  			// defined in i18nothermodule/lang/de_DE.php
  			i18n::_t('i18nOtherModule.LEGACY'),
  			'Finds translations in PHP module files'
  		);
  		$this->assertEquals(
  			'Legacy translation (de_DE)',
  			// defined in themes/testtheme1/lang/de_DE.php
  			i18n::_t('i18nOtherModule.LEGACYTHEME'),
  			'Finds original strings in theme files'
  		);
  		// TODO Implement likely subtags solution
  		// i18n::set_locale('de');
  		// $this->assertEquals(
  		// 	'Legacy translation (de_DE)',
  		// 	// defined in i18nothermodule/lang/de_DE.php
  		// 	i18n::_t('i18nOtherModule.LEGACY'),
  		// 	'Finds translations in PHP module files if only language locale is set'
  		// );
  	}
  	
  }