Merge pull request #2 from Martimiz/feature/ss4-compat

FIX for Translatable unit tests
This commit is contained in:
Robbie Averill 2017-08-11 12:11:28 +12:00 committed by GitHub
commit 1e1034647c
3 changed files with 22 additions and 14 deletions

View File

@ -105,7 +105,7 @@ class TranslatableCMSMainExtension extends Extension
// collect languages for TinyMCE spellchecker plugin.
// see http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker
$langName = i18n::get_locale_name($this->owner->Locale);
$langName = i18n::getData()->localeName($this->owner->Locale);
HtmlEditorConfig::get('cms')->setOption(
'spellchecker_languages',
"+{$langName}={$this->owner->Locale}"
@ -221,7 +221,7 @@ class TranslatableCMSMainExtension extends Extension
// so just show a string displaying current language
$field = new LiteralField(
'Locale',
i18n::get_locale_name(Translatable::get_current_locale())
i18n::getData()->localeName(Translatable::get_current_locale())
);
}

View File

@ -1431,13 +1431,14 @@ class Translatable extends DataExtension implements PermissionProvider
*/
protected function populateSiteConfigDefaults()
{
$table = DataObject::getSchema()->tableName(get_class($this->owner));
// Work-around for population of defaults during database initialisation.
// When the database is being setup singleton('SiteConfig') is called.
if (!DB::get_schema()->hasTable(get_class($this->owner))) {
if (!DB::get_schema()->hasTable($table)) {
return;
}
if (!DB::get_schema()->hasField(get_class($this->owner), 'Locale')) {
if (!DB::get_schema()->hasField($table, 'Locale')) {
return;
}
if (DB::get_schema()->isSchemaUpdating()) {

View File

@ -11,6 +11,8 @@ use SilverStripe\ORM\DB;
use SilverStripe\ORM\Search\FulltextSearchable;
use SilverStripe\Security\Member;
use SilverStripe\Translatable\Model\Translatable;
use SilverStripe\Versioned\Versioned;
use SilverStripe\Control\HTTPRequest;
/**
* @package translatable
@ -70,24 +72,24 @@ class TranslatableSearchFormTest extends FunctionalTest
public function testPublishedPagesMatchedByTitleInDefaultLanguage()
{
$sf = new SearchForm($this->mockController, SearchForm::class);
$publishedPage = $this->objFromFixture(SiteTree::class, 'publishedPage');
$publishedPage->copyVersionToStage('Stage', 'Live');
$publishedPage->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
$translatedPublishedPage = $publishedPage->createTranslation('de_DE');
$translatedPublishedPage->Title = 'translatedPublishedPage';
$translatedPublishedPage->Content = 'German content';
$translatedPublishedPage->write();
$translatedPublishedPage->copyVersionToStage('Stage', 'Live');
$publishedPage->copyVersionToStage(Versioned::DRAFT, Versioned::LIVE);
$this->waitUntilIndexingFinished();
// Translatable::set_current_locale() can't be used because the context
// from the holder is not present here - we set the language explicitly
// through a pseudo GET variable in getResults()
$lang = 'en_US';
$results = $sf->getResults(null, array('Search' => 'content', 'searchlocale' => $lang));
$request = new HTTPRequest('GET', 'search', ['Search'=>'content', 'searchlocale' => $lang]);
$request->setSession($this->session());
$this->mockController->setRequest($request);
$sf = new SearchForm($this->mockController);
$results = $sf->getResults();
$this->assertContains(
$publishedPage->ID,
$results->column('ID'),
@ -100,7 +102,12 @@ class TranslatableSearchFormTest extends FunctionalTest
);
$lang = 'de_DE';
$results = $sf->getResults(null, array('Search' => 'content', 'searchlocale' => $lang));
$request = new HTTPRequest('GET', 'search', ['Search'=>'content', 'searchlocale' => $lang]);
$request->setSession($this->session());
$this->mockController->setRequest($request);
$sf2 = new SearchForm($this->mockController);
$results = $sf2->getResults();
$this->assertNotContains(
$publishedPage->ID,
$results->column('ID'),