RestfulViewEntityMultiLingualTestCase.test in RESTful 7.2
Same filename and directory in other branches
Contains RestfulViewEntityMultiLingualTestCase
File
tests/RestfulViewEntityMultiLingualTestCase.testView source
<?php
/**
* @file
* Contains RestfulViewEntityMultiLingualTestCase
*/
use Drupal\restful\Http\Request;
class RestfulViewEntityMultiLingualTestCase extends RestfulCurlBaseTestCase {
/**
* The user to run the tests as.
*/
protected $testUser;
public static function getInfo() {
return array(
'name' => 'View multilingual entity',
'description' => 'Test the viewing of a multilingual entity.',
'group' => 'RESTful',
);
}
function setUp() {
parent::setUp('restful_example', 'restful_test', 'entityreference', 'locale');
$this->testUser = $this
->drupalCreateUser(array(
'administer languages',
'access administration pages',
'administer site configuration',
));
require_once DRUPAL_ROOT . '/includes/locale.inc';
$this
->drupalLogin($this->testUser);
$languages = language_list();
if (!isset($languages['en'])) {
locale_add_language('en', NULL, NULL, LANGUAGE_LTR, '', 'en');
}
if (!isset($languages['fr'])) {
locale_add_language('fr', NULL, NULL, LANGUAGE_LTR, '', 'fr');
}
$this
->addTestFields();
}
/**
* Add test fields.
*/
protected function addTestFields() {
// Text - single.
$field = array(
'field_name' => 'text_single',
'type' => 'text_long',
'entity_types' => array(
'restful_test_translatable_entity',
),
'cardinality' => 1,
'translatable' => TRUE,
);
field_create_field($field);
$instance = array(
'field_name' => 'text_single',
'bundle' => 'restful_test_translatable_entity',
'entity_type' => 'restful_test_translatable_entity',
'label' => t('Text single'),
'settings' => array(
'text_processing' => 0,
),
);
field_create_instance($instance);
// Text - multiple.
$field = array(
'field_name' => 'text_multiple',
'type' => 'text_long',
'entity_types' => array(
'restful_test_translatable_entity',
),
'cardinality' => FIELD_CARDINALITY_UNLIMITED,
'translatable' => TRUE,
);
field_create_field($field);
$instance = array(
'field_name' => 'text_multiple',
'bundle' => 'restful_test_translatable_entity',
'entity_type' => 'restful_test_translatable_entity',
'label' => t('Text multiple'),
'settings' => array(
'text_processing' => 0,
),
);
field_create_instance($instance);
}
/**
* Test viewing an entity with translatable fields.
*/
function testViewMultiLangualEntity() {
$user = $this
->drupalCreateUser();
$values = array(
'name' => 'restful_test_translatable_entity',
'uid' => $user->uid,
'label' => 'Test translation',
);
$entity = entity_create('restful_test_translatable_entity', $values);
$wrapper = entity_metadata_wrapper('restful_test_translatable_entity', $entity);
$text1 = array(
'en' => $this
->randomName(),
'fr' => $this
->randomName(),
);
$text2 = array(
'en' => $this
->randomName(),
'fr' => $this
->randomName(),
);
foreach (array(
'en',
'fr',
) as $langcode) {
$wrapper
->language($langcode);
$wrapper->text_single
->set($text1[$langcode]);
$wrapper->text_multiple
->set(array(
$text1[$langcode],
$text2[$langcode],
));
}
$wrapper
->save();
$id = $entity->pid;
foreach (array(
'en',
'fr',
) as $langcode) {
$this
->assertExpectedResult($langcode, $id, $text1[$langcode], $text2[$langcode]);
}
}
/**
* Helper to test viewing an entity (GET method) in a certain language.
*
* @param string $langcode
* The language to view the entity in.
* @param int $id
* The ID of the entity to test.
* @param string $text1
* The first expected string (text_single and text_multiple[0]).
* @param string $text2
* The second expected string (text_multiple[2]).
*/
private function assertExpectedResult($langcode, $id, $text1, $text2) {
$resource_manager = restful()
->getResourceManager();
$handler = $resource_manager
->getPlugin('restful_test_translatable_entity:1.0');
// Explicitly set the langcode.
$handler
->getDataProvider()
->setLangCode($langcode);
$handler
->setRequest(Request::create('api/restful_test_translatable_entity/' . $id));
$handler
->setPath($id);
$response = drupal_json_decode(restful()
->getFormatterManager()
->format($handler
->process(), 'json'));
$response = $response['data'];
$result = $response[0];
$this
->assertEqual(trim(strip_tags($result['text_single'])), $text1, 'Entity view has correct result for "text_single" in language "' . $langcode . '".');
$this
->assertEqual(trim(strip_tags($result['text_multiple'][0])), $text1, 'Entity view has correct result for the first value of "text_multiple" in language "' . $langcode . '".');
$this
->assertEqual(trim(strip_tags($result['text_multiple'][1])), $text2, 'Entity view has correct result for the second value of "text_multiple" in language "' . $langcode . '".');
}
}
Classes
Name | Description |
---|---|
RestfulViewEntityMultiLingualTestCase |