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()); }
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()))); }
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()); }
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()); }
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')); }
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()); }
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')); }
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()); } }
/** * @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); }
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()); }
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'))); }
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); }