Drupal 8.0.0 beta 12. More info: https://www.drupal.org/node/2514176
This commit is contained in:
commit
9921556621
13277 changed files with 1459781 additions and 0 deletions
274
core/modules/locale/tests/src/Unit/LocaleLookupTest.php
Normal file
274
core/modules/locale/tests/src/Unit/LocaleLookupTest.php
Normal file
|
@ -0,0 +1,274 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\locale\Unit\LocaleLookupTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\locale\Unit;
|
||||
|
||||
use Drupal\Core\DependencyInjection\ContainerBuilder;
|
||||
use Drupal\locale\LocaleLookup;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\locale\LocaleLookup
|
||||
* @group locale
|
||||
*/
|
||||
class LocaleLookupTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* A mocked storage to use when instantiating LocaleTranslation objects.
|
||||
*
|
||||
* @var \Drupal\locale\StringStorageInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $storage;
|
||||
|
||||
/**
|
||||
* A mocked cache object.
|
||||
*
|
||||
* @var \Drupal\Core\Cache\CacheBackendInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $cache;
|
||||
|
||||
/**
|
||||
* A mocked lock object.
|
||||
*
|
||||
* @var \Drupal\Core\Lock\LockBackendInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $lock;
|
||||
|
||||
/**
|
||||
* A mocked user object built from AccountInterface.
|
||||
*
|
||||
* @var \Drupal\Core\Session\AccountInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* A mocked config factory built with UnitTestCase::getConfigFactoryStub().
|
||||
*
|
||||
* @var \Drupal\Core\Config\ConfigFactory|\PHPUnit_Framework_MockObject_MockBuilder
|
||||
*/
|
||||
protected $configFactory;
|
||||
|
||||
/**
|
||||
* A mocked language manager built from LanguageManagerInterface.
|
||||
*
|
||||
* @var \Drupal\Core\Language\LanguageManagerInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $languageManager;
|
||||
|
||||
/**
|
||||
* The request stack.
|
||||
*
|
||||
* @var \Symfony\Component\HttpFoundation\RequestStack
|
||||
*/
|
||||
protected $requestStack;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->storage = $this->getMock('Drupal\locale\StringStorageInterface');
|
||||
$this->cache = $this->getMock('Drupal\Core\Cache\CacheBackendInterface');
|
||||
$this->lock = $this->getMock('Drupal\Core\Lock\LockBackendInterface');
|
||||
$this->lock->expects($this->never())
|
||||
->method($this->anything());
|
||||
|
||||
$this->user = $this->getMock('Drupal\Core\Session\AccountInterface');
|
||||
$this->user->expects($this->any())
|
||||
->method('getRoles')
|
||||
->will($this->returnValue(array('anonymous')));
|
||||
|
||||
$this->configFactory = $this->getConfigFactoryStub(array('locale.settings' => array('cache_strings' => FALSE)));
|
||||
|
||||
$this->languageManager = $this->getMock('Drupal\Core\Language\LanguageManagerInterface');
|
||||
$this->requestStack = new RequestStack();
|
||||
|
||||
$container = new ContainerBuilder();
|
||||
$container->set('current_user', $this->user);
|
||||
\Drupal::setContainer($container);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests locale lookups without fallback.
|
||||
*
|
||||
* @covers ::resolveCacheMiss
|
||||
*/
|
||||
public function testResolveCacheMissWithoutFallback() {
|
||||
$args = array(
|
||||
'language' => 'en',
|
||||
'source' => 'test',
|
||||
'context' => 'irrelevant',
|
||||
);
|
||||
|
||||
$result = (object) array(
|
||||
'translation' => 'test',
|
||||
);
|
||||
|
||||
$this->cache->expects($this->once())
|
||||
->method('get')
|
||||
->with('locale:en:irrelevant:0', FALSE);
|
||||
|
||||
$this->storage->expects($this->once())
|
||||
->method('findTranslation')
|
||||
->with($this->equalTo($args))
|
||||
->will($this->returnValue($result));
|
||||
|
||||
$locale_lookup = $this->getMockBuilder('Drupal\locale\LocaleLookup')
|
||||
->setConstructorArgs(array('en', 'irrelevant', $this->storage, $this->cache, $this->lock, $this->configFactory, $this->languageManager, $this->requestStack))
|
||||
->setMethods(array('persist'))
|
||||
->getMock();
|
||||
$locale_lookup->expects($this->never())
|
||||
->method('persist');
|
||||
$this->assertSame('test', $locale_lookup->get('test'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests locale lookups with fallback.
|
||||
*
|
||||
* Note that context is irrelevant here. It is not used but it is required.
|
||||
*
|
||||
* @covers ::resolveCacheMiss
|
||||
*
|
||||
* @dataProvider resolveCacheMissWithFallbackProvider
|
||||
*/
|
||||
public function testResolveCacheMissWithFallback($langcode, $string, $context, $expected) {
|
||||
// These are fake words!
|
||||
$translations = array(
|
||||
'en' => array(
|
||||
'test' => 'test',
|
||||
'fake' => 'fake',
|
||||
'missing pl' => 'missing pl',
|
||||
'missing cs' => 'missing cs',
|
||||
'missing both' => 'missing both',
|
||||
),
|
||||
'pl' => array(
|
||||
'test' => 'test po polsku',
|
||||
'fake' => 'ściema',
|
||||
'missing cs' => 'zaginiony czech',
|
||||
),
|
||||
'cs' => array(
|
||||
'test' => 'test v české',
|
||||
'fake' => 'falešný',
|
||||
'missing pl' => 'chybějící pl',
|
||||
),
|
||||
);
|
||||
$this->storage->expects($this->any())
|
||||
->method('findTranslation')
|
||||
->will($this->returnCallback(function ($argument) use ($translations) {
|
||||
if (isset($translations[$argument['language']][$argument['source']])) {
|
||||
return (object) array('translation' => $translations[$argument['language']][$argument['source']]);
|
||||
}
|
||||
return TRUE;
|
||||
}));
|
||||
|
||||
$this->languageManager->expects($this->any())
|
||||
->method('getFallbackCandidates')
|
||||
->will($this->returnCallback(function (array $context = array()) {
|
||||
switch ($context['langcode']) {
|
||||
case 'pl':
|
||||
return array('cs', 'en');
|
||||
|
||||
case 'cs':
|
||||
return array('en');
|
||||
|
||||
default:
|
||||
return array();
|
||||
}
|
||||
}));
|
||||
|
||||
$this->cache->expects($this->once())
|
||||
->method('get')
|
||||
->with('locale:' . $langcode . ':' . $context . ':0', FALSE);
|
||||
|
||||
$locale_lookup = new LocaleLookup($langcode, $context, $this->storage, $this->cache, $this->lock, $this->configFactory, $this->languageManager, $this->requestStack);
|
||||
$this->assertSame($expected, $locale_lookup->get($string));
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides test data for testResolveCacheMissWithFallback().
|
||||
*/
|
||||
public function resolveCacheMissWithFallbackProvider() {
|
||||
return array(
|
||||
array('cs', 'test', 'irrelevant', 'test v české'),
|
||||
array('cs', 'fake', 'irrelevant', 'falešný'),
|
||||
array('cs', 'missing pl', 'irrelevant', 'chybějící pl'),
|
||||
array('cs', 'missing cs', 'irrelevant', 'missing cs'),
|
||||
array('cs', 'missing both', 'irrelevant', 'missing both'),
|
||||
|
||||
// Testing PL with fallback to cs, en.
|
||||
array('pl', 'test', 'irrelevant', 'test po polsku'),
|
||||
array('pl', 'fake', 'irrelevant', 'ściema'),
|
||||
array('pl', 'missing pl', 'irrelevant', 'chybějící pl'),
|
||||
array('pl', 'missing cs', 'irrelevant', 'zaginiony czech'),
|
||||
array('pl', 'missing both', 'irrelevant', 'missing both'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests locale lookups with persistent tracking.
|
||||
*
|
||||
* @covers ::resolveCacheMiss
|
||||
*/
|
||||
public function testResolveCacheMissWithPersist() {
|
||||
$args = array(
|
||||
'language' => 'en',
|
||||
'source' => 'test',
|
||||
'context' => 'irrelevant',
|
||||
);
|
||||
|
||||
$result = (object) array(
|
||||
'translation' => 'test',
|
||||
);
|
||||
|
||||
$this->storage->expects($this->once())
|
||||
->method('findTranslation')
|
||||
->with($this->equalTo($args))
|
||||
->will($this->returnValue($result));
|
||||
|
||||
$this->configFactory = $this->getConfigFactoryStub(array('locale.settings' => array('cache_strings' => TRUE)));
|
||||
$locale_lookup = $this->getMockBuilder('Drupal\locale\LocaleLookup')
|
||||
->setConstructorArgs(array('en', 'irrelevant', $this->storage, $this->cache, $this->lock, $this->configFactory, $this->languageManager, $this->requestStack))
|
||||
->setMethods(array('persist'))
|
||||
->getMock();
|
||||
$locale_lookup->expects($this->once())
|
||||
->method('persist');
|
||||
|
||||
$this->assertSame('test', $locale_lookup->get('test'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests locale lookups without a found translation.
|
||||
*
|
||||
* @covers ::resolveCacheMiss
|
||||
*/
|
||||
public function testResolveCacheMissNoTranslation() {
|
||||
$string = $this->getMock('Drupal\locale\StringInterface');
|
||||
$string->expects($this->once())
|
||||
->method('addLocation')
|
||||
->will($this->returnSelf());
|
||||
$this->storage->expects($this->once())
|
||||
->method('findTranslation')
|
||||
->will($this->returnValue(NULL));
|
||||
$this->storage->expects($this->once())
|
||||
->method('createString')
|
||||
->will($this->returnValue($string));
|
||||
|
||||
$request = Request::create('/test');
|
||||
$this->requestStack->push($request);
|
||||
|
||||
$locale_lookup = $this->getMockBuilder('Drupal\locale\LocaleLookup')
|
||||
->setConstructorArgs(array('en', 'irrelevant', $this->storage, $this->cache, $this->lock, $this->configFactory, $this->languageManager, $this->requestStack))
|
||||
->setMethods(array('persist'))
|
||||
->getMock();
|
||||
$locale_lookup->expects($this->never())
|
||||
->method('persist');
|
||||
|
||||
$this->assertTrue($locale_lookup->get('test'));
|
||||
}
|
||||
|
||||
}
|
62
core/modules/locale/tests/src/Unit/LocaleTranslationTest.php
Normal file
62
core/modules/locale/tests/src/Unit/LocaleTranslationTest.php
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\locale\Unit\LocaleTranslationTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\locale\Unit;
|
||||
|
||||
use Drupal\locale\LocaleTranslation;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\locale\LocaleTranslation
|
||||
* @group locale
|
||||
*/
|
||||
class LocaleTranslationTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* A mocked storage to use when instantiating LocaleTranslation objects.
|
||||
*
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $storage;
|
||||
|
||||
/**
|
||||
* A mocked language manager built from LanguageManagerInterface.
|
||||
*
|
||||
* @var \Drupal\Core\Language\LanguageManagerInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $languageManager;
|
||||
|
||||
/**
|
||||
* The request stack.
|
||||
*
|
||||
* @var \Symfony\Component\HttpFoundation\RequestStack
|
||||
*/
|
||||
protected $requestStack;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->storage = $this->getMock('Drupal\locale\StringStorageInterface');
|
||||
$this->cache = $this->getMock('Drupal\Core\Cache\CacheBackendInterface');
|
||||
$this->lock = $this->getMock('Drupal\Core\Lock\LockBackendInterface');
|
||||
$this->languageManager = $this->getMock('Drupal\Core\Language\LanguageManagerInterface');
|
||||
$this->requestStack = new RequestStack();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for \Drupal\locale\LocaleTranslation::destruct().
|
||||
*/
|
||||
public function testDestruct() {
|
||||
$translation = new LocaleTranslation($this->storage, $this->cache, $this->lock, $this->getConfigFactoryStub(), $this->languageManager, $this->requestStack);
|
||||
// Prove that destruction works without errors when translations are empty.
|
||||
$this->assertAttributeEmpty('translations', $translation);
|
||||
$translation->destruct();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\locale\Unit\Menu\LocaleLocalTasksTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\locale\Unit\Menu;
|
||||
|
||||
use Drupal\Tests\Core\Menu\LocalTaskIntegrationTestBase;
|
||||
|
||||
/**
|
||||
* Tests locale local tasks.
|
||||
*
|
||||
* @group locale
|
||||
*/
|
||||
class LocaleLocalTasksTest extends LocalTaskIntegrationTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
$this->directoryList = array(
|
||||
'locale' => 'core/modules/locale',
|
||||
);
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks locale listing local tasks.
|
||||
*
|
||||
* @dataProvider getLocalePageRoutes
|
||||
*/
|
||||
public function testLocalePageLocalTasks($route) {
|
||||
$tasks = array(
|
||||
0 => array('locale.translate_page', 'locale.translate_import', 'locale.translate_export','locale.settings'),
|
||||
);
|
||||
$this->assertLocalTasks($route, $tasks);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a list of routes to test.
|
||||
*/
|
||||
public function getLocalePageRoutes() {
|
||||
return array(
|
||||
array('locale.translate_page'),
|
||||
array('locale.translate_import'),
|
||||
array('locale.translate_export'),
|
||||
array('locale.settings'),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
39
core/modules/locale/tests/src/Unit/StringBaseTest.php
Normal file
39
core/modules/locale/tests/src/Unit/StringBaseTest.php
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\locale\Unit\StringBaseTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\locale\Unit;
|
||||
|
||||
use Drupal\locale\SourceString;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\locale\StringBase
|
||||
* @group locale
|
||||
*/
|
||||
class StringBaseTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* @covers ::save
|
||||
* @expectedException \Drupal\locale\StringStorageException
|
||||
* @expectedExceptionMessage The string cannot be saved because its not bound to a storage: test
|
||||
*/
|
||||
public function testSaveWithoutStorage() {
|
||||
$string = new SourceString(['source' => 'test']);
|
||||
$string->save();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers ::delete
|
||||
* @expectedException \Drupal\locale\StringStorageException
|
||||
* @expectedExceptionMessage The string cannot be deleted because its not bound to a storage: test
|
||||
*/
|
||||
public function testDeleteWithoutStorage() {
|
||||
$string = new SourceString(['lid' => 1, 'source' => 'test']);
|
||||
$string->delete();
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue