예제 #1
0
 public function testTrailingWhitespaceInLanguageKeyName()
 {
     CM_Db_Db::insert('cm_model_languagekey', ['name'], [['foo '], ['foo']]);
     $language = CM_Model_Language::create('Foo', 'foo', true);
     $language->getTranslations()->getAssociativeArray();
     $this->assertEquals(['foo ', 'foo'], array_keys($language->getTranslations()->getAssociativeArray()));
     $this->assertCount(2, $language->getTranslations());
 }
예제 #2
0
 public function testDelete()
 {
     $language = CM_Model_Language::create('Foo', 'foo', true);
     $language->setTranslation('foo', 'bar');
     $this->assertSame(array('foo' => array('value' => 'bar', 'variables' => array())), $language->getTranslations()->getAssociativeArray());
     $languageKey = CM_Model_LanguageKey::findByName('foo');
     $languageKey->delete();
     $this->assertSame(array(), $language->getTranslations()->getAssociativeArray());
     $this->assertSame(0, CM_Db_Db::count('cm_model_languagekey', array('name' => 'foo')));
     $this->assertSame(0, CM_Db_Db::count('cm_languageValue', array('languageKeyId' => $languageKey->getId(), 'languageId' => $language->getId())));
 }
예제 #3
0
 public function testEnabled()
 {
     $english = CM_Model_Language::create('English', 'en', true);
     $italian = CM_Model_Language::create('Italian', 'it', true);
     $german = CM_Model_Language::create('German', 'de', true);
     $french = CM_Model_Language::create('French', 'fr', true);
     $svenska = CM_Model_Language::create('Svenska', 'sv', false);
     $paging = new CM_Paging_Language_Enabled();
     $this->assertEquals([$english, $french, $german, $italian], $paging->getItems());
     $this->assertNotContains($svenska, $paging->getItems());
 }
예제 #4
0
 public function testCreateAllData()
 {
     CMTest_TH::createDefaultCurrency();
     $site = $this->getMockSite();
     $language = CM_Model_Language::create('English', 'en', true);
     $currency = CM_Model_Currency::create('978', 'EUR');
     $user = CM_Model_User::createStatic(['site' => $site, 'language' => $language, 'currency' => $currency]);
     $this->assertInternalType('int', $user->getCreated());
     $this->assertEquals(time(), $user->getCreated());
     $this->assertEquals(time(), $user->getLatestActivity());
     $this->assertEquals($site, $user->getSite());
     $this->assertEquals($language, $user->getLanguage());
     $this->assertEquals($currency, $user->getCurrency());
 }
예제 #5
0
 public function testRenderTranslated()
 {
     $recipient = CMTest_TH::createUser();
     $mail = new CM_Mail_Welcome($recipient);
     $language = CM_Model_Language::create('Test language', 'foo', true);
     $language->setTranslation('Welcome to {$siteName}!', 'foo');
     list($subject, $html, $text) = $mail->render();
     $nodeList = new CM_Dom_NodeList($html);
     $this->assertContains('foo', $nodeList->getText());
     $nodeLink = $nodeList->find('a');
     $this->assertSame(1, $nodeLink->count());
     $this->assertSame('http://www.default.dev/example', $nodeLink->getAttribute('href'));
     $this->assertSame('Example Page', $nodeLink->getText());
     $this->assertContains('border-style:solid;', $nodeLink->getAttribute('style'));
 }
예제 #6
0
 public function testGetters()
 {
     $site = CM_Site_Abstract::factory();
     $user = CM_Model_User::createStatic();
     $language = CM_Model_Language::create('English', 'en', true);
     $timezone = new DateTimeZone('Europe/London');
     $debug = true;
     $location = CM_Model_Location::createCountry('United Kingdom', 'UK');
     $environment = new CM_Frontend_Environment($site, $user, $language, $timezone, $debug, $location);
     $this->assertSame($site, $environment->getSite());
     $this->assertSame($user, $environment->getViewer(true));
     $this->assertSame($language, $environment->getLanguage());
     $this->assertSame($language->getAbbreviation(), $environment->getLocale());
     $this->assertSame($timezone, $environment->getTimeZone());
     $this->assertSame($debug, $environment->isDebug());
     $this->assertSame($location, $environment->getLocation());
 }
예제 #7
0
파일: AllTest.php 프로젝트: cargomedia/cm
 public function testPaging()
 {
     $language = CM_Model_Language::create('Foo', 'foo', true);
     $languagePagingAll = $language->getTranslations();
     $languagePagingJavascriptOnly = $language->getTranslations(true);
     $this->assertEquals([], $languagePagingAll);
     $this->assertEquals([], $languagePagingJavascriptOnly);
     $languagePagingAll->set('foo', 'foo');
     // js
     CM_Db_Db::update('cm_model_languagekey', ['javascript' => 1], ['name' => 'foo']);
     $languagePagingJavascriptOnly->set('bar', 'bar');
     // js
     CM_Db_Db::update('cm_model_languagekey', ['javascript' => 1], ['name' => 'bar']);
     $languagePagingAll->set('baz', 'baz');
     // no js
     $this->assertSame('foo', $language->getTranslations()->get('foo'));
     $this->assertSame('foo', $language->getTranslations(true)->get('foo'));
     $this->assertSame('bar', $language->getTranslations()->get('bar'));
     $this->assertSame('bar', $language->getTranslations(true)->get('bar'));
     $this->assertSame('baz', $language->getTranslations()->get('baz'));
     $exception = $this->catchException(function () use($language) {
         $language->getTranslations(true)->get('baz');
     });
     $this->assertInstanceOf('CM_Exception_Invalid', $exception);
     $languagePagingJavascriptOnly->set('foo', 'bar');
     $this->assertSame('bar', $language->getTranslations(true)->get('foo'));
     $this->assertSame('bar', $language->getTranslations()->get('foo'));
     $languagePagingAll->set('bar', 'foo');
     $this->assertSame('foo', $language->getTranslations()->get('bar'));
     $this->assertSame('foo', $language->getTranslations(true)->get('bar'));
     $languagePagingAll->remove('foo');
     $this->assertSame(null, $language->getTranslations()->get('foo'));
     $this->assertSame(null, $language->getTranslations(true)->get('foo'));
     $languagePagingJavascriptOnly->remove('bar');
     $this->assertSame(null, $language->getTranslations()->get('bar'));
     $this->assertSame(null, $language->getTranslations(true)->get('bar'));
 }
예제 #8
0
 public function testGetLanguage()
 {
     $language = CM_Model_Language::create('English', 'en', true);
     $params = new CM_Params(array('language' => $language, 'languageId' => $language->getId(), 'no-object-param' => 'xyz'));
     $this->assertEquals($language, $params->getLanguage('language'));
     $this->assertEquals($language, $params->getLanguage('languageId'));
     try {
         $params->getLanguage('no-object-param');
         $this->fail('getObject should fail and throw exception');
     } catch (CM_Exception $e) {
         $this->assertSame('Model has no data', $e->getMessage());
         $this->assertContains(get_class($language), $e->getMetaInfo());
     }
 }
예제 #9
0
파일: TH.php 프로젝트: aladin1394/CM
 /**
  * @param string|null $abbreviation
  * @return CM_Model_Language
  */
 public static function createLanguage($abbreviation = null)
 {
     if (!$abbreviation) {
         do {
             $abbreviation = self::_randStr(5);
         } while (CM_Model_Language::findByAbbreviation($abbreviation));
     }
     return CM_Model_Language::create('English', $abbreviation, true);
 }
예제 #10
0
 public function testSetUri()
 {
     $language = CM_Model_Language::create('english', 'en', true);
     $uri = '/en/foo/bar?foo1=bar1';
     $headers = array('Host' => 'example.ch', 'Connection' => 'keep-alive');
     /** @var CM_Http_Request_Abstract $mock */
     $mock = $this->getMockForAbstractClass('CM_Http_Request_Abstract', array($uri, $headers));
     $this->assertEquals($language, $mock->popPathLanguage());
     $this->assertSame('/foo/bar', $mock->getPath());
     $this->assertSame(array('foo', 'bar'), $mock->getPathParts());
     $this->assertSame(array('foo1' => 'bar1'), $mock->getQuery());
     $this->assertEquals($language, $mock->getLanguageUrl());
     $this->assertSame($uri, $mock->getUri());
     $mock->setUri('/foo1/bar1?foo=bar');
     $this->assertSame('/foo1/bar1', $mock->getPath());
     $this->assertSame(array('foo1', 'bar1'), $mock->getPathParts());
     $this->assertSame(array('foo' => 'bar'), $mock->getQuery());
     $this->assertNull($mock->getLanguageUrl());
     $this->assertSame('/foo1/bar1?foo=bar', $mock->getUri());
 }
예제 #11
0
 public function testGetTranslation()
 {
     $render = new CM_Frontend_Render();
     $this->assertSame('abc', $render->getTranslation('abc'));
     $this->assertSame('abc cool', $render->getTranslation('abc {$variable}', array('variable' => 'cool')));
     $this->assertSame('abc ', $render->getTranslation('abc {$variable}'));
     $this->assertSame('abc ', $render->getTranslation('abc {$variable}', array('foo' => 'bar')));
     $language = CM_Model_Language::create('Test language', 'test', true);
     $render = new CM_Frontend_Render(new CM_Frontend_Environment(null, null, $language));
     $language->setTranslation('abc {$variable}', 'translated stuff is {$variable}');
     $this->assertSame('translated stuff is cool', $render->getTranslation('abc {$variable}', array('variable' => 'cool')));
 }
예제 #12
0
 public function testGetTranslationWithDifferentVariableNamesAndKeysLoop()
 {
     $language = CM_Model_Language::create('English', 'en', true);
     for ($i = 0; $i < 5; $i++) {
         $language->getTranslation('myKey', array('oneVariable'), true);
         $language->getTranslation('MyKey', array('oneVariable', 'secondOne'), true);
         $language->getTranslation('myKéy', array('oneVariable', 'thirdOne'), true);
     }
     $this->assertTrue(true);
 }