summaryrefslogtreecommitdiff
path: root/modules/field/tests
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-05-23 07:30:56 +0000
committerDries Buytaert <dries@buytaert.net>2010-05-23 07:30:56 +0000
commitbb1c48af7fb1a9208517bba51329f6a73264aa3e (patch)
tree41cce448bc5bc1f7d73d25bbfd3638b7a899f669 /modules/field/tests
parent30140586346085914848805041359cf37c6e66b6 (diff)
downloadbrdo-bb1c48af7fb1a9208517bba51329f6a73264aa3e.tar.gz
brdo-bb1c48af7fb1a9208517bba51329f6a73264aa3e.tar.bz2
- Patch #629252 by plach, yched: field_attach_form() should make available all field translations on submit.
Diffstat (limited to 'modules/field/tests')
-rw-r--r--modules/field/tests/field.test45
-rw-r--r--modules/field/tests/field_test.entity.inc14
2 files changed, 56 insertions, 3 deletions
diff --git a/modules/field/tests/field.test b/modules/field/tests/field.test
index 589d0b886..632e474ca 100644
--- a/modules/field/tests/field.test
+++ b/modules/field/tests/field.test
@@ -2878,6 +2878,51 @@ class FieldTranslationsTestCase extends FieldTestCase {
$langcode = field_language($entity_type, $entity, $this->field_name, $requested_language);
$this->assertTrue(isset($entity->{$this->field_name}[$langcode]) && $langcode != $requested_language, t('The display language for the (single) field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
}
+
+ /**
+ * Tests field translations when creating a new revision.
+ */
+ function testFieldFormTranslationRevisions() {
+ $web_user = $this->drupalCreateUser(array('access field_test content', 'administer field_test content'));
+ $this->drupalLogin($web_user);
+
+ // Prepare the field translations.
+ field_test_entity_info_translatable($this->entity_type, TRUE);
+ $eid = 1;
+ $entity = field_test_create_stub_entity($eid, $eid, $this->instance['bundle']);
+ $available_languages = array_flip(field_available_languages($this->entity_type, $this->field));
+ unset($available_languages[LANGUAGE_NONE]);
+ $field_name = $this->field['field_name'];
+
+ // Store the field translations.
+ $entity->is_new = TRUE;
+ foreach ($available_languages as $langcode => $value) {
+ $entity->{$field_name}[$langcode][0]['value'] = $value + 1;
+ }
+ field_test_entity_save($entity);
+
+ // Create a new revision.
+ $langcode = field_valid_language(NULL);
+ $edit = array("{$field_name}[$langcode][0][value]" => $entity->{$field_name}[$langcode][0]['value'], 'revision' => TRUE);
+ $this->drupalPost('test-entity/' . $eid . '/edit', $edit, t('Save'));
+
+ // Check translation revisions.
+ $this->checkTranslationRevisions($eid, $eid, $available_languages);
+ $this->checkTranslationRevisions($eid, $eid + 1, $available_languages);
+ }
+
+ /**
+ * Check if the field translation attached to the entity revision identified
+ * by the passed arguments were correctly stored.
+ */
+ private function checkTranslationRevisions($eid, $evid, $available_languages) {
+ $field_name = $this->field['field_name'];
+ $entity = field_test_entity_test_load($eid, $evid);
+ foreach ($available_languages as $langcode => $value) {
+ $passed = isset($entity->{$field_name}[$langcode]) && $entity->{$field_name}[$langcode][0]['value'] == $value + 1;
+ $this->assertTrue($passed, t('The @language translation for revision @revision was correctly stored', array('@language' => $langcode, '@revision' => $entity->ftvid)));
+ }
+ }
}
/**
diff --git a/modules/field/tests/field_test.entity.inc b/modules/field/tests/field_test.entity.inc
index 953b0a01c..cdd3b0c34 100644
--- a/modules/field/tests/field_test.entity.inc
+++ b/modules/field/tests/field_test.entity.inc
@@ -164,11 +164,19 @@ function field_test_create_stub_entity($id = 1, $vid = 1, $bundle = 'test_bundle
function field_test_entity_test_load($ftid, $ftvid = NULL) {
// Load basic strucure.
$query = db_select('test_entity', 'fte', array())
- ->fields('fte')
- ->condition('ftid', $ftid);
+ ->condition('fte.ftid', $ftid);
+
if ($ftvid) {
- $query->condition('ftvid', $ftvid);
+ $query->join('test_entity_revision', 'fter', 'fte.ftid = fter.ftid');
+ $query->addField('fte', 'ftid');
+ $query->addField('fte', 'fttype');
+ $query->addField('fter', 'ftvid');
+ $query->condition('fter.ftvid', $ftvid);
+ }
+ else {
+ $query->fields('fte');
}
+
$entities = $query->execute()->fetchAllAssoc('ftid');
// Attach fields.