Issue #2022769 by fubhy, xjm: Fixed conversion of field_delete_field() in hook_uninstall().
parent
5d0f9d91c3
commit
2fe57efec0
|
@ -9,9 +9,6 @@
|
|||
* Implements hook_uninstall().
|
||||
*/
|
||||
function comment_uninstall() {
|
||||
// Delete comment_body field.
|
||||
field_info_field('comment_body')->delete();
|
||||
|
||||
// Remove variables.
|
||||
variable_del('comment_block_count');
|
||||
$node_types = array_keys(node_type_get_types());
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of Drupal\comment\Tests\CommentUninstallTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\comment\Tests;
|
||||
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
|
||||
/**
|
||||
* Tests comment module uninstallation.
|
||||
*/
|
||||
class CommentUninstallTest extends WebTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('comment', 'node');
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Comment uninstallation',
|
||||
'description' => 'Tests comment module uninstallation.',
|
||||
'group' => 'Comment',
|
||||
);
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
parent::setup();
|
||||
|
||||
// Create a content type so that the comment module creates the
|
||||
// 'comment_body' field upon installation.
|
||||
$this->drupalCreateContentType();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if comment module uninstallation properly deletes the field.
|
||||
*/
|
||||
function testCommentUninstallWithField() {
|
||||
// Ensure that the field exists before uninstallation.
|
||||
$field = field_info_field('comment_body');
|
||||
$this->assertNotNull($field, 'The comment_body field exists.');
|
||||
|
||||
// Uninstall the comment module which should trigger field deletion.
|
||||
$this->container->get('module_handler')->disable(array('comment'));
|
||||
$this->container->get('module_handler')->uninstall(array('comment'));
|
||||
|
||||
// Check that the field is now deleted.
|
||||
$field = field_info_field('comment_body');
|
||||
$this->assertNull($field, 'The comment_body field has been deleted.');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Tests if uninstallation succeeds if the field has been deleted beforehand.
|
||||
*/
|
||||
function testCommentUninstallWithoutField() {
|
||||
// Manually delete the comment_body field before module uninstallation.
|
||||
$field = field_info_field('comment_body');
|
||||
$this->assertNotNull($field, 'The comment_body field exists.');
|
||||
$field->delete();
|
||||
|
||||
// Check that the field is now deleted.
|
||||
$field = field_info_field('comment_body');
|
||||
$this->assertNull($field, 'The comment_body field has been deleted.');
|
||||
|
||||
// Ensure that uninstallation succeeds even if the field has already been
|
||||
// deleted manually beforehand.
|
||||
$this->container->get('module_handler')->disable(array('comment'));
|
||||
$this->container->get('module_handler')->uninstall(array('comment'));
|
||||
}
|
||||
|
||||
}
|
|
@ -122,7 +122,10 @@ function forum_uninstall() {
|
|||
|
||||
variable_del('node_options_forum');
|
||||
|
||||
field_info_field('taxonomy_forums')->delete();
|
||||
if ($field = field_info_field('taxonomy_forums')) {
|
||||
$field->delete();
|
||||
}
|
||||
|
||||
// Purge field data now to allow taxonomy module to be uninstalled
|
||||
// if this is the only field remaining.
|
||||
field_purge_batch(10);
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of Drupal\forum\Tests\ForumUninstallTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\forum\Tests;
|
||||
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
|
||||
/**
|
||||
* Tests forum module uninstallation.
|
||||
*/
|
||||
class ForumUninstallTest extends WebTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('forum');
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Forum uninstallation',
|
||||
'description' => 'Tests forum module uninstallation.',
|
||||
'group' => 'Forum',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if forum module uninstallation properly deletes the field.
|
||||
*/
|
||||
function testForumUninstallWithField() {
|
||||
// Ensure that the field exists before uninstallation.
|
||||
$field = field_info_field('taxonomy_forums');
|
||||
$this->assertNotNull($field, 'The taxonomy_forums field exists.');
|
||||
|
||||
// Uninstall the forum module which should trigger field deletion.
|
||||
$this->container->get('module_handler')->disable(array('forum'));
|
||||
$this->container->get('module_handler')->uninstall(array('forum'));
|
||||
|
||||
// Check that the field is now deleted.
|
||||
$field = field_info_field('taxonomy_forums');
|
||||
$this->assertNull($field, 'The taxonomy_forums field has been deleted.');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Tests if uninstallation succeeds if the field has been deleted beforehand.
|
||||
*/
|
||||
function testForumUninstallWithoutField() {
|
||||
// Manually delete the taxonomy_forums field before module uninstallation.
|
||||
$field = field_info_field('taxonomy_forums');
|
||||
$this->assertNotNull($field, 'The taxonomy_forums field exists.');
|
||||
$field->delete();
|
||||
|
||||
// Check that the field is now deleted.
|
||||
$field = field_info_field('taxonomy_forums');
|
||||
$this->assertNull($field, 'The taxonomy_forums field has been deleted.');
|
||||
|
||||
// Ensure that uninstallation succeeds even if the field has already been
|
||||
// deleted manually beforehand.
|
||||
$this->container->get('module_handler')->disable(array('forum'));
|
||||
$this->container->get('module_handler')->uninstall(array('forum'));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue