From e4c68bc2bfd3ef24a9f4320ec61a9e5888a95da2 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Tue, 21 Mar 2017 10:49:30 +1300 Subject: [PATCH] Fix and test pluralisation usages --- src/ORM/DataObject.php | 4 ++-- src/ORM/Versioning/ChangeSet.php | 8 ++++---- tests/php/ORM/ChangeSetTest.php | 11 +++++++++++ tests/php/ORM/DataObjectTest.php | 10 ++++++++-- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/ORM/DataObject.php b/src/ORM/DataObject.php index 2bd3e8377..ec2614c0d 100644 --- a/src/ORM/DataObject.php +++ b/src/ORM/DataObject.php @@ -681,10 +681,10 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity public function i18n_pluralise($count) { $default = 'one ' . $this->i18n_singular_name() . '|{count} ' . $this->i18n_plural_name(); - return i18n::pluralise( + return i18n::_t( static::class.'.PLURALS', $default, - $count + [ 'count' => $count ] ); } diff --git a/src/ORM/Versioning/ChangeSet.php b/src/ORM/Versioning/ChangeSet.php index 93f5af514..db51aeb06 100644 --- a/src/ORM/Versioning/ChangeSet.php +++ b/src/ORM/Versioning/ChangeSet.php @@ -493,16 +493,16 @@ class ChangeSet extends DataObject // Describe non-important items if ($countedOther) { if ($counted) { - $parts[] = i18n::pluralise( + $parts[] = i18n::_t( 'ChangeSet.DESCRIPTION_OTHER_ITEM_PLURALS', 'one other item|{count} other items', - $countedOther + [ 'count' => $countedOther ] ); } else { - $parts[] = i18n::pluralise( + $parts[] = i18n::_t( 'ChangeSet.DESCRIPTION_ITEM_PLURALS', 'one item|{count} items', - $countedOther + [ 'count' => $countedOther ] ); } } diff --git a/tests/php/ORM/ChangeSetTest.php b/tests/php/ORM/ChangeSetTest.php index 3be603dad..3d01f9b6d 100644 --- a/tests/php/ORM/ChangeSetTest.php +++ b/tests/php/ORM/ChangeSetTest.php @@ -104,6 +104,17 @@ class ChangeSetTest extends SapphireTest ); } + public function testDescription() + { + $cs = new ChangeSet(); + $cs->write(); + $cs->addObject($this->objFromFixture(ChangeSetTest\EndObject::class, 'end1')); + $this->assertEquals('one item', $cs->getDescription()); + + $cs->addObject($this->objFromFixture(ChangeSetTest\EndObjectChild::class, 'endchild1')); + $this->assertEquals('2 items', $cs->getDescription()); + } + public function testRepeatedSyncIsNOP() { $this->publishAllFixtures(); diff --git a/tests/php/ORM/DataObjectTest.php b/tests/php/ORM/DataObjectTest.php index ef50fbc6c..4bd9d150b 100644 --- a/tests/php/ORM/DataObjectTest.php +++ b/tests/php/ORM/DataObjectTest.php @@ -4,6 +4,7 @@ namespace SilverStripe\ORM\Tests; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\SapphireTest; +use SilverStripe\i18n\i18n; use SilverStripe\ORM\DataObjectSchema; use SilverStripe\ORM\FieldType\DBBoolean; use SilverStripe\ORM\FieldType\DBField; @@ -1645,13 +1646,18 @@ class DataObjectTest extends SapphireTest DataObjectTest\Bogey::class => 'Bogeys', DataObjectTest\Ploy::class => 'Ploys', ); - + i18n::set_locale('en_NZ'); foreach ($assertions as $class => $expectedPluralName) { $this->assertEquals( $expectedPluralName, - singleton($class)->plural_name(), + DataObject::singleton($class)->plural_name(), "Assert that the plural_name for '$class' is correct." ); + $this->assertEquals( + $expectedPluralName, + DataObject::singleton($class)->i18n_plural_name(), + "Assert that the i18n_plural_name for '$class' is correct." + ); } }