merged CER submodule

This commit is contained in:
Bachir Soussi Chiadmi
2015-04-19 15:13:02 +02:00
11 changed files with 1696 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
name = "CER Tests"
core = "7.x"
description = "Automated tests for CER."
hidden = TRUE
dependencies[] = simpletest
dependencies[] = cer
files[] = crud.test
files[] = fields.test
; Information added by drupal.org packaging script on 2013-05-01
version = "7.x-2.x-dev"
core = "7.x"
project = "cer"
datestamp = "1367412087"

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1,168 @@
<?php
class CerCrudTest extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'CRUD',
'group' => 'Corresponding Entity Reference',
'description' => 'Tests basic CER functionality.',
);
}
public function setUp() {
parent::setUp('field', 'field_sql_storage', 'ctools', 'entityreference', 'cer');
field_create_field(array(
'field_name' => 'field_user',
'type' => 'entityreference',
'cardinality' => -1,
'settings' => array(
'target_type' => 'user',
),
));
field_create_field(array(
'field_name' => 'field_node',
'type' => 'entityreference',
'cardinality' => -1,
'settings' => array(
'target_type' => 'node',
),
));
field_create_instance(array(
'field_name' => 'field_user',
'entity_type' => 'node',
'bundle' => 'page',
));
field_create_instance(array(
'field_name' => 'field_node',
'entity_type' => 'user',
'bundle' => 'user',
));
db_insert('cer')->fields(array(
'entity_types_content_fields' => 'node*page*field_user*user*user*field_node',
'enabled' => TRUE,
))->execute();
}
public function testImplicitReferenceCreation() {
$uid = $this->drupalCreateUser()->uid;
$referrers = array();
for ($i = 0; $i < 5; $i++) {
$referrers[] = $this->drupalCreateNode(array(
'type' => 'page',
'field_user' => array(
'und' => array(
array('target_id' => $uid),
),
),
))->nid;
}
$references = array();
foreach (user_load($uid, TRUE)->field_node['und'] as $reference) {
$references[] = $reference['target_id'];
}
$this->assertFalse(array_diff($referrers, $references), 'Creating 5 referrers to a single entity creates 5 corresponding references on that entity.', 'CER');
}
public function testDuplicateReferencePrevention() {
$uid = $this->drupalCreateUser()->uid;
$this->drupalCreateNode(array(
'type' => 'page',
'field_user' => array(
'und' => array(
array('target_id' => $uid),
array('target_id' => $uid),
),
),
));
$account = user_load($uid, TRUE);
$this->assertEqual(sizeof($account->field_node['und']), 1, 'Creating two references to an entity from a single referrer creates one corresponding reference.', 'CER');
}
public function testExplicitReferenceCreation() {
$uid = $this->drupalCreateNode()->uid;
$node = $this->drupalCreateNode(array('type' => 'page'));
$node->field_user['und'][0]['target_id'] = $uid;
node_save($node);
$account = user_load($uid, TRUE);
$this->assertEqual($account->field_node['und'][0]['target_id'], $node->nid, 'Creating an explicit reference between to unrelated entities creates a corresponding reference.', 'CER');
}
public function testExplicitDereference() {
$uid = $this->drupalCreateUser()->uid;
$nid = $this->drupalCreateNode(array(
'type' => 'page',
'field_user' => array(
'und' => array(
array('target_id' => $uid),
),
),
))->nid;
$account = user_load($uid, TRUE);
$account->field_node = array();
user_save($account);
$node = node_load($nid, NULL, TRUE);
$this->assertFalse($node->field_user, 'Explicitly clearing a reference from the referenced entity clears the corresponding reference on the referrer.', 'CER');
}
public function testReferrerDeletion() {
$uid = $this->drupalCreateUser()->uid;
$referrers = array();
for ($i = 0; $i < 5; $i++) {
$referrers[] = $this->drupalCreateNode(array(
'type' => 'page',
'field_user' => array(
'und' => array(
array('target_id' => $uid),
),
),
))->nid;
}
node_delete($referrers[0]);
$references = array();
foreach (user_load($uid, TRUE)->field_node['und'] as $reference) {
$references[] = $reference['target_id'];
}
$this->assertFalse(in_array($referrers[0], $references), 'Deleting a referrer clears corresponding reference on the referenced entity.', 'CER');
}
public function testReferencedEntityDeletion() {
$uid = $this->drupalCreateUser()->uid;
$referrers = array();
for ($i = 0; $i < 5; $i++) {
$referrers[] = $this->drupalCreateNode(array(
'type' => 'page',
'field_user' => array(
'und' => array(
array('target_id' => $uid),
),
),
))->nid;
}
user_delete($uid);
$cleared = 0;
foreach ($referrers as $nid) {
$node = node_load($nid, NULL, TRUE);
$cleared += (int) empty($node->field_user);
}
$this->assertEqual($cleared, sizeof($referrers), 'Deleting a referenced entity clears all references to it.', 'CER');
}
}

View File

@@ -0,0 +1,67 @@
<?php
class CerFieldTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Fields',
'group' => 'Corresponding Entity Reference',
'description' => 'Tests integration with the Field API.',
);
}
public function setUp() {
parent::setUp('field', 'field_sql_storage', 'ctools', 'entityreference', 'cer');
field_create_field(array(
'field_name' => 'field_user',
'type' => 'entityreference',
'cardinality' => -1,
'settings' => array(
'target_type' => 'user',
),
));
field_create_field(array(
'field_name' => 'field_node',
'type' => 'entityreference',
'cardinality' => -1,
'settings' => array(
'target_type' => 'node',
),
));
field_create_instance(array(
'field_name' => 'field_user',
'entity_type' => 'node',
'bundle' => 'page',
));
field_create_instance(array(
'field_name' => 'field_node',
'entity_type' => 'user',
'bundle' => 'user',
));
ctools_include('export');
$preset = ctools_export_crud_new('cer');
$preset->entity_types_content_fields = 'node*page*field_user*user*user*field_node';
$preset->enabled = TRUE;
ctools_export_crud_save('cer', $preset);
}
public function testFieldInstanceDelete() {
field_delete_instance(field_info_instance('user', 'field_node', 'user'));
$preset = cer_preset_load('node*page*field_user*user*user*field_node');
$this->assertNull($preset, 'Deleting a field instance clears CER presets for that instance.');
}
public function testFieldDelete() {
field_delete_field('field_user');
$preset = cer_preset_load('node*page*field_user*user*user*field_node');
$this->assertNull($preset, 'Deleting a field clears CER presets for that field.');
}
}