. */ /** * Doctrine_I18n_TestCase * * @package Doctrine * @author Konsta Vesterinen * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @category Object Relational Mapping * @link www.phpdoctrine.org * @since 1.0 * @version $Revision$ */ class Doctrine_I18n_TestCase extends Doctrine_UnitTestCase { public function prepareData() { } public function prepareTables() { $this->tables = array(); parent::prepareTables(); } public function testTranslationTableGetsExported() { $this->conn->setAttribute(Doctrine::ATTR_EXPORT, Doctrine::EXPORT_ALL); $this->assertTrue(Doctrine::EXPORT_ALL & Doctrine::EXPORT_TABLES); $this->assertTrue(Doctrine::EXPORT_ALL & Doctrine::EXPORT_CONSTRAINTS); $this->assertTrue(Doctrine::EXPORT_ALL & Doctrine::EXPORT_PLUGINS); $sql = $this->conn->export->exportClassesSql(array('I18nTest')); foreach ($sql as $query) { $this->conn->exec($query); } } public function testTranslatedColumnsAreRemovedFromMainComponent() { $i = new I18nTest(); $columns = $i->getTable()->getColumns(); $this->assertFalse(isset($columns['title'])); $this->assertFalse(isset($columns['name'])); } public function testTranslationTableIsInitializedProperly() { $i = new I18nTest(); $i->id = 1; $i->Translation['EN']->name = 'some name'; $i->Translation['EN']->title = 'some title'; $this->assertEqual($i->Translation->getTable()->getComponentName(), 'I18nTestTranslation'); $i->Translation['FI']->name = 'joku nimi'; $i->Translation['FI']->title = 'joku otsikko'; $i->Translation['FI']->lang = 'FI'; $i->save(); $this->conn->clear(); $t = Doctrine_Query::create()->from('I18nTestTranslation')->fetchOne(); $this->assertEqual($t->name, 'some name'); $this->assertEqual($t->title, 'some title'); $this->assertEqual($t->lang, 'EN'); } public function testUpdatingI18nItems() { $i = Doctrine_Query::create()->query('FROM I18nTest')->getFirst(); $i->Translation['EN']->name = 'updated name'; $i->Translation['EN']->title = 'updated title'; $i->Translation->save(); $this->assertEqual($t->name, 'updated name'); $this->assertEqual($t->title, 'updated title'); } public function testDataFetching() { $i = Doctrine_Query::create()->from('I18nTest i')->innerJoin('i.Translation t INDEXBY t.lang')->orderby('t.lang')->fetchOne(array(), Doctrine::HYDRATE_ARRAY); $this->assertEqual($i['Translation']['EN']['name'], 'some name'); $this->assertEqual($i['Translation']['EN']['title'], 'some title'); $this->assertEqual($i['Translation']['EN']['lang'], 'EN'); $this->assertEqual($i['Translation']['FI']['name'], 'joku nimi'); $this->assertEqual($i['Translation']['FI']['title'], 'joku otsikko'); $this->assertEqual($i['Translation']['FI']['lang'], 'FI'); } public function testIndexByLangIsAttachedToNewlyCreatedCollections() { $coll = new Doctrine_Collection('I18nTestTranslation'); $coll['EN']['name'] = 'some name'; $this->assertEqual($coll['EN']->lang, 'EN'); } public function testIndexByLangIsAttachedToFetchedCollections() { $coll = Doctrine_Query::create()->from('I18nTestTranslation')->execute(); $this->assertTrue($coll['FI']->exists()); } }