public function EckEntityTranslationTest::testTranslations in Entity Construction Kit (ECK) 7.2
Test translating an entity type.
File
- tests/
EckEntityTranslationTest.test, line 52 - The EckEntityTranslationTest class.
Class
- EckEntityTranslationTest
- Test translations on an ECK object.
Code
public function testTranslations() {
$entity_type = 'test_entity';
$bundle = $entity_type;
$languages = array(
'fr' => 'French',
'es' => 'Spanish',
);
// Create a test entity type.
$this
->createEntityType();
// Enable translation for this entity type.
$this
->enableEntityTypeTranslation($entity_type);
// Add a field.
$this
->addField();
// Create a test entity.
$title = $this
->randomSentence(4);
$field_body = $this
->randomSentence(NULL, TRUE);
$args = array(
'title' => $title,
'field_body[en][0][value]' => 'English: ' . $field_body,
);
$this
->verbose($args);
$entity_id = $this
->createEntity($entity_type, $bundle, $args);
// Confirm the translation functionality is available.
$this
->drupalGet("{$entity_type}/{$bundle}/{$entity_id}");
$this
->assertResponse(200);
$this
->assertLink(t('Translate'));
$this
->assertLinkByHref("{$entity_type}/{$bundle}/{$entity_id}/translate");
$this
->drupalGet("{$entity_type}/{$bundle}/{$entity_id}/translate");
$this
->assertResponse(200);
$this
->assertText(strip_tags(t('Translations of %label', array(
'%label' => $title,
))));
// Translate the entity into the other languages.
foreach ($languages as $langcode => $language) {
$this
->drupalGet("{$langcode}/{$entity_type}/{$bundle}/{$entity_id}/edit/add/en/{$langcode}");
$this
->assertResponse(200);
$args = array(
"field_body[{$langcode}][0][value]" => $language . ': ' . $field_body,
);
$this
->drupalPost(NULL, $args, t('Save'));
$this
->assertResponse(200);
}
// Test the entity when it's loaded from each language prefix.
foreach ($languages as $langcode => $language) {
$this
->drupalGet("{$langcode}/{$entity_type}/{$bundle}/{$entity_id}");
$this
->assertResponse(200);
$this
->assertText($title);
$this
->assertText($language . ': ' . $field_body);
}
// The English version didn't have a URL prefix.
$this
->drupalGet("{$entity_type}/{$bundle}/{$entity_id}");
$this
->assertResponse(200);
$this
->assertText($title);
$this
->assertText('English: ' . $field_body);
// Make the content type translatable.
$this
->enableContentTypeTranslation();
// Add a reference field to a content type. This field is not translatable
// as the individual entities themselves will be translated.
$this
->addReferenceFieldToNode();
// Create a node that has a reference field which points to the ECK object.
$body = $this
->randomSentence(NULL, TRUE);
$args = array(
'language' => 'en',
'body' => array(
'en' => array(
array(
'value' => 'English: ' . $body,
),
),
),
'field_reference' => array(
'und' => array(
array(
'target_id' => $entity_id,
),
),
),
);
$node = $this
->drupalCreateNode($args);
$this
->verbose($node);
$this
->drupalGet('node/' . $node->nid);
$this
->assertText('English: ' . $body);
$this
->assertText('English: ' . $field_body);
// Open the node edit form to see what it's like.
$this
->drupalGet('node/' . $node->nid . '/edit');
// Translate the node.
$this
->drupalGet('node/' . $node->nid . '/translate');
$this
->assertResponse(200);
foreach ($languages as $langcode => $language) {
$this
->drupalGet("{$langcode}/node/{$node->nid}/edit/add/en/{$langcode}");
$this
->assertResponse(200);
$args = array(
"body[{$langcode}][0][value]" => $language . ': ' . $body,
);
$this
->drupalPost(NULL, $args, t('Save'));
$this
->assertResponse(200);
}
// Check each language to make sure both the body field and the ECK body
// field are present.
foreach ($languages as $langcode => $language) {
$this
->drupalGet("{$langcode}/node/{$node->nid}");
$this
->assertResponse(200);
$this
->assertText($language . ': ' . $body);
$this
->assertText($language . ': ' . $field_body);
}
// The English version didn't have a URL prefix.
$this
->drupalGet("node/{$node->nid}");
$this
->assertResponse(200);
$this
->assertText('English: ' . $body);
$this
->assertText('English: ' . $field_body);
}