ctools_export.test

File

tests/ctools_export_test/ctools_export.test

View source
<?php


/**
 * Tests for the CTools export system.
 */
class CtoolsExportCrudTestCase extends DrupalWebTestCase {
    
    /**
     * {@inheritdoc}
     */
    public static function getInfo() {
        return array(
            'name' => 'Export CRUD',
            'description' => 'Test the CRUD functionality for the ctools export system.',
            'group' => 'ctools',
        );
    }
    
    /**
     * {@inheritdoc}
     */
    public function setUp(array $modules = array()) {
        $modules[] = 'ctools';
        $modules[] = 'ctools_export_test';
        parent::setUp($modules);
    }
    
    /**
     * Tests CRUD operation: Load.
     */
    public function testCrudExportLoad() {
        $loaded_export = ctools_export_crud_load('ctools_export_test', 'database_test');
        $expected_export = new stdClass();
        $expected_export->machine = 'database_test';
        $expected_export->title = 'Database test';
        $expected_export->number = 0;
        $expected_export->data = array(
            'test_1' => 'Test 1',
            'test_2' => 'Test 2',
        );
        $expected_export->table = 'ctools_export_test';
        $expected_export->export_type = EXPORT_IN_DATABASE;
        $expected_export->type = 'Normal';
        $this->assertEqual($expected_export, $loaded_export, 'An exportable object has been loaded correctly from the database.');
    }
    
    /**
     * Tests CRUD operation: Load multiple.
     */
    public function testCrudExportLoadMultiple() {
        $exportable_names = array(
            'database_test',
            'overridden_test',
            'default_test',
        );
        $loaded_exports = ctools_export_crud_load_multiple('ctools_export_test', $exportable_names);
        $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
    }
    
    /**
     * Tests CRUD operation: Load all.
     */
    public function testCrudExportLoadAll() {
        $loaded_exports = ctools_export_crud_load_all('ctools_export_test');
        $this->assertEqual(count($loaded_exports), 3, 'All exportables have been loaded.');
    }
    
    /**
     * Tests CRUD operation: Save.
     */
    public function testCrudExportSave() {
        $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
        $this->assertTrue($default_export->in_code_only, 'The loaded exportable is in code only.');
        ctools_export_crud_save('ctools_export_test', $default_export);
        // Clear the static cache.
        ctools_export_load_object_reset('ctools_export_test');
        $overridden_export = ctools_export_crud_load('ctools_export_test', 'default_test');
        $this->assertTrue($overridden_export->export_type === 3, 'The loaded exportable is overridden in the database.');
    }
    
    /**
     * Tests CRUD operation: New.
     */
    public function testCrudExportNew() {
        // Default exportable with defualt values.
        $new_export = ctools_export_crud_new('ctools_export_test');
        $expected_export = new stdClass();
        $expected_export->machine = '';
        $expected_export->title = '';
        $expected_export->number = 0;
        $expected_export->data = NULL;
        $expected_export->export_type = NULL;
        $expected_export->type = 'Local';
        $this->assertEqual($expected_export, $new_export, 'An exportable with default values is created.');
        // Default exportable without default values.
        $new_export = ctools_export_crud_new('ctools_export_test', FALSE);
        $expected_export = new stdClass();
        $expected_export->machine = '';
        $expected_export->title = '';
        $expected_export->number = NULL;
        $expected_export->data = NULL;
        $this->assertEqual($expected_export, $new_export, 'An exportable without default values has been created.');
    }
    
    /**
     * Tests CRUD operation: Revert.
     */
    public function testCrudExportRevert() {
        // Load exportable, will come from database.
        $original_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
        $this->assertTrue($original_export->export_type === 3, 'Loaded export is overridden.');
        $machine = $original_export->machine;
        ctools_export_crud_delete('ctools_export_test', $original_export);
        $result = db_query("SELECT machine FROM {ctools_export_test} WHERE machine = :machine", array(
            ':machine' => $machine,
        ))->fetchField();
        $this->assertFalse($result, 'The exportable object has been removed from the database.');
        // Clear the static cache.
        ctools_export_load_object_reset('ctools_export_test');
        // Reload the same object.
        $default_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
        // Check the exportable is now in_code_only.
        $this->assertTrue($default_export->in_code_only, 'The loaded exportable is in the database only.');
        // Make sure the default object loaded matches the same overridden one in
        // the database.
        $this->assertEqual($original_export->machine, $default_export->machine, 'The default exportable has been loaded and matches the overridden exportable.');
    }
    
    /**
     * Tests CRUD operation: Delete.
     */
    public function testCrudExportDelete() {
        // Create a stub entry save it and delete it from the database.
        $new_export = ctools_export_crud_new('ctools_export_test');
        ctools_export_crud_save('ctools_export_test', $new_export);
        $machine = $new_export->machine;
        ctools_export_crud_delete('ctools_export_test', $new_export);
        $result = ctools_export_crud_load('ctools_export_test', $machine);
        $this->assertFalse($result, 'The new exportable has been removed from the database.');
        // Load the database only exportable.
        $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
        $machine = $database_export->machine;
        ctools_export_crud_delete('ctools_export_test', $database_export);
        // Clear the exportable caches as it's been loaded above.
        ctools_export_load_object_reset('ctools_export_test');
        $result = ctools_export_crud_load('ctools_export_test', $machine);
        $this->assertFalse($result, 'The database exportable has been removed from the database.');
    }
    
    /**
     * Tests CRUD operation: Set status.
     */
    public function testCrudExportSetStatus() {
        // Database only object.
        $database_export = ctools_export_crud_load('ctools_export_test', 'database_test');
        ctools_export_crud_disable('ctools_export_test', $database_export);
        ctools_export_load_object_reset('ctools_export_test');
        $disabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
        $this->assertTrue($disabled_export->disabled, 'The database only exportable has been disabled.');
        ctools_export_crud_enable('ctools_export_test', $disabled_export);
        ctools_export_load_object_reset('ctools_export_test');
        $enabled_export = ctools_export_crud_load('ctools_export_test', 'database_test');
        $this->assertTrue(empty($enabled_export->disabled), 'The database only exportable has been enabled.');
        // Overridden object.
        $overridden_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
        ctools_export_crud_disable('ctools_export_test', $overridden_export);
        ctools_export_load_object_reset('ctools_export_test');
        $disabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
        $this->assertTrue($disabled_export->disabled, 'The overridden exportable has been disabled.');
        ctools_export_crud_enable('ctools_export_test', $disabled_export);
        ctools_export_load_object_reset('ctools_export_test');
        $enabled_export = ctools_export_crud_load('ctools_export_test', 'overridden_test');
        $this->assertTrue(empty($enabled_export->disabled), 'The overridden exportable has been enabled.');
        // Default object.
        $default_export = ctools_export_crud_load('ctools_export_test', 'default_test');
        ctools_export_crud_disable('ctools_export_test', $default_export);
        ctools_export_load_object_reset('ctools_export_test');
        $disabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
        $this->assertTrue($disabled_export->disabled, 'The default exportable has been disabled.');
        ctools_export_crud_enable('ctools_export_test', $disabled_export);
        ctools_export_load_object_reset('ctools_export_test');
        $enabled_export = ctools_export_crud_load('ctools_export_test', 'default_test');
        $this->assertTrue(empty($enabled_export->disabled), 'The default exportable has been enabled.');
    }

}

Classes

Title Deprecated Summary
CtoolsExportCrudTestCase Tests for the CTools export system.