diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-05-23 07:30:56 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-05-23 07:30:56 +0000 |
commit | bb1c48af7fb1a9208517bba51329f6a73264aa3e (patch) | |
tree | 41cce448bc5bc1f7d73d25bbfd3638b7a899f669 /modules/field/tests | |
parent | 30140586346085914848805041359cf37c6e66b6 (diff) | |
download | brdo-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.test | 45 | ||||
-rw-r--r-- | modules/field/tests/field_test.entity.inc | 14 |
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. |