| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | 
							- <?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');
 
-   }
 
- }
 
 
  |