From 54811abbd27b605977dbb079cecf5f01f6711301 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Sun, 18 Jan 2009 22:48:45 +0000 Subject: [PATCH] MINOR More Translatable unit tests git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@70320 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- tests/model/TranslatableTest.php | 59 +++++++++++++++++++++++--------- tests/model/TranslatableTest.yml | 7 +++- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/tests/model/TranslatableTest.php b/tests/model/TranslatableTest.php index 782fe2809..6da481ff6 100644 --- a/tests/model/TranslatableTest.php +++ b/tests/model/TranslatableTest.php @@ -41,23 +41,7 @@ class TranslatableTest extends FunctionalTest { parent::tearDown(); } - - function testCreateTranslationOnSiteTree() { - $origPage = $this->objFromFixture('Page', 'testpage_en'); - $translatedPage = $origPage->createTranslation('de'); - $this->assertEquals($translatedPage->Lang, 'de'); - $this->assertNotEquals($translatedPage->ID, $origPage->ID); - $this->assertEquals($translatedPage->OriginalID, $origPage->ID); - - $subsequentTranslatedPage = $origPage->createTranslation('de'); - $this->assertEquals( - $translatedPage->ID, - $subsequentTranslatedPage->ID, - 'Subsequent calls to createTranslation() dont cause new records in database' - ); - } - function testGetOriginalPage() { $origPage = $this->objFromFixture('Page', 'testpage_en'); $translatedPage = $origPage->createTranslation('de'); @@ -355,6 +339,40 @@ class TranslatableTest extends FunctionalTest { Translatable::set_reading_lang('en'); } + function testTranslatablePropertiesOnSiteTree() { + $origObj = $this->objFromFixture('TranslatableTest_Page', 'testpage_en'); + $translatedObj = $origObj->createTranslation('fr'); + $translatedObj->TranslatableProperty = 'Fr'; + $translatedObj->write(); + + $this->assertEquals( + $origObj->TranslatableProperty, + 'En', + 'Creating a translation doesnt affect database field on original object' + ); + $this->assertEquals( + $translatedObj->TranslatableProperty, + 'Fr', + 'Translated object saves database field independently of original object' + ); + } + + function testCreateTranslationOnSiteTree() { + $origPage = $this->objFromFixture('Page', 'testpage_en'); + $translatedPage = $origPage->createTranslation('de'); + + $this->assertEquals($translatedPage->Lang, 'de'); + $this->assertNotEquals($translatedPage->ID, $origPage->ID); + $this->assertEquals($translatedPage->OriginalID, $origPage->ID); + + $subsequentTranslatedPage = $origPage->createTranslation('de'); + $this->assertEquals( + $translatedPage->ID, + $subsequentTranslatedPage->ID, + 'Subsequent calls to createTranslation() dont cause new records in database' + ); + } + function testTranslatablePropertiesOnDataObject() { $origObj = $this->objFromFixture('TranslatableTest_DataObject', 'testobject_en'); $translatedObj = $origObj->createTranslation('fr'); @@ -483,5 +501,14 @@ class TranslatableTest_Decorator extends DataObjectDecorator implements TestOnly } } +class TranslatableTest_Page extends Page implements TestOnly { + // static $extensions is inherited from SiteTree, + // we don't need to explicitly specify the fields + + static $db = array( + 'TranslatableProperty' => 'Text' + ); +} + DataObject::add_extension('TranslatableTest_DataObject', 'TranslatableTest_Decorator'); ?> \ No newline at end of file diff --git a/tests/model/TranslatableTest.yml b/tests/model/TranslatableTest.yml index 4dcad8001..16110d54e 100644 --- a/tests/model/TranslatableTest.yml +++ b/tests/model/TranslatableTest.yml @@ -31,4 +31,9 @@ Page: TranslatableTest_DataObject: testobject_en: TranslatableProperty: En - TranslatableDecoratedProperty: En \ No newline at end of file + TranslatableDecoratedProperty: En +TranslatableTest_Page: + testpage_en: + Title: En + TranslatableProperty: En + URLSegment: testpage-en \ No newline at end of file