entity_example.test

Tests for entity_example module.

Verify example module functionality.

File

entity_example/entity_example.test

View source
<?php


/**
 * @file
 * Tests for entity_example module.
 *
 * Verify example module functionality.
 */

/**
 * Functionality tests for entity example module.
 *
 * @ingroup entity_example
 */
class EntityExampleTestCase extends DrupalWebTestCase {
    
    /**
     * {@inheritdoc}
     */
    public static function getInfo() {
        return array(
            'name' => 'Entity example',
            'description' => 'Basic entity example tests',
            'group' => 'Examples',
        );
    }
    
    /**
     * {@inheritdoc}
     */
    public function setUp() {
        // Enable the module.
        parent::setUp('entity_example');
        // Create and login user with access.
        $permissions = array(
            'access content',
            'view any entity_example_basic entity',
            'edit any entity_example_basic entity',
            'create entity_example_basic entities',
            'administer entity_example_basic entities',
            'administer site configuration',
            'administer fields',
        );
        $account = $this->drupalCreateUser($permissions);
        $this->drupalLogin($account);
        // Attach a field.
        $field = array(
            'field_name' => 'entity_example_test_text',
            'type' => 'text',
        );
        field_create_field($field);
        $instance = array(
            'label' => 'Subject',
            'field_name' => 'entity_example_test_text',
            'entity_type' => 'entity_example_basic',
            'bundle' => 'first_example_bundle',
        );
        field_create_instance($instance);
    }
    
    /**
     * Test Entity Example features.
     *
     * - CRUD
     * - Table display
     * - User access
     * - Field management
     * - Display management
     */
    public function testEntityExampleBasic() {
        // Create 10 entities.
        for ($i = 1; $i <= 10; $i++) {
            $edit[$i]['item_description'] = $this->randomName();
            $edit[$i]['entity_example_test_text[und][0][value]'] = $this->randomName(32);
            $this->drupalPost('examples/entity_example/basic/add', $edit[$i], 'Save');
            $this->assertText('item_description=' . $edit[$i]['item_description']);
            $this->drupalGet('examples/entity_example/basic/' . $i);
            $this->assertText('item_description=' . $edit[$i]['item_description']);
            $this->assertText($edit[$i]['entity_example_test_text[und][0][value]']);
        }
        // Delete entity 5.
        $this->drupalPost('examples/entity_example/basic/5/edit', $edit[5], 'Delete');
        $this->drupalGet('examples/entity_example/basic/5');
        $this->assertResponse(404, 'Deleted entity 5 no longer exists');
        unset($edit[5]);
        // Update entity 2 and verify the update.
        $edit[2] = array(
            'item_description' => 'updated entity 2 ',
            'entity_example_test_text[und][0][value]' => 'updated entity 2 test text',
        );
        $this->drupalPost('examples/entity_example/basic/2/edit', $edit[2], 'Save');
        $this->assertText('item_description=' . $edit[2]['item_description']);
        $this->assertText('updated entity 2 test text');
        // View the entity list page  and verify that the items which still exist
        // are there, and that the deleted #5 no longer is there.
        $this->drupalGet('admin/structure/entity_example_basic/manage');
        foreach ($edit as $id => $item) {
            $this->assertRaw('examples/entity_example/basic/' . $id . '">' . $item['item_description'] . '</a>');
        }
        $this->assertNoRaw('examples/entity_example/basic/5">');
        // Add a field through the field UI and verify that it behaves correctly.
        $field_edit = array(
            'fields[_add_new_field][label]' => 'New junk field',
            'fields[_add_new_field][field_name]' => 'new_junk_field',
            'fields[_add_new_field][type]' => 'text',
            'fields[_add_new_field][widget_type]' => 'text_textfield',
        );
        $this->drupalPost('admin/structure/entity_example_basic/manage/fields', $field_edit, t('Save'));
        $this->drupalPost(NULL, array(), t('Save field settings'));
        $this->drupalPost(NULL, array(), t('Save settings'));
        $this->assertResponse(200);
        // Now verify that we can edit and view this entity with fields.
        $edit[10]['field_new_junk_field[und][0][value]'] = $this->randomName();
        $this->drupalPost('examples/entity_example/basic/10/edit', $edit[10], 'Save');
        $this->assertResponse(200);
        $this->assertText('item_description=' . $edit[10]['item_description']);
        $this->assertText($edit[10]['field_new_junk_field[und][0][value]'], 'Custom field updated successfully');
        // Create and login user without view access.
        $account = $this->drupalCreateUser(array(
            'access content',
        ));
        $this->drupalLogin($account);
        $this->drupalGet('admin/structure/entity_example_basic/manage');
        $this->assertResponse(403);
        $this->drupalGet('examples/entity_example/basic/2');
        $this->assertResponse(403, 'User does not have permission to view entity');
        // Create and login user with view access but no edit access.
        $account = $this->drupalCreateUser(array(
            'access content',
            'view any entity_example_basic entity',
        ));
        $this->drupalLogin($account);
        $this->drupalGet('admin/structure/entity_example_basic/manage');
        $this->assertResponse(403, 'Denied access to admin manage page');
        $this->drupalGet('examples/entity_example/basic/2');
        $this->assertResponse(200, 'User has permission to view entity');
        $this->drupalGet('examples/entity_example/basic/2/edit');
        $this->assertResponse(403, 'User is denied edit privileges');
        // Create and login user with view and edit but no manage privs.
        $account = $this->drupalCreateUser(array(
            'access content',
            'view any entity_example_basic entity',
            'edit any entity_example_basic entity',
        ));
        $this->drupalLogin($account);
        $this->drupalGet('admin/structure/entity_example_basic/manage');
        $this->assertResponse(403, 'Denied access to admin manage page');
        $this->drupalGet('examples/entity_example/basic/2');
        $this->assertResponse(200, 'User has permission to view entity');
        $this->drupalGet('examples/entity_example/basic/2/edit');
        $this->assertResponse(200, 'User has edit privileges');
    }

}

Classes

Title Deprecated Summary
EntityExampleTestCase Functionality tests for entity example module.