| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | <?php/** * @file * Tests for the update system. *//** * Tests for the update dependency ordering system. */class UpdateDependencyOrderingTestCase extends DrupalWebTestCase {  public static function getInfo() {    return array(      'name' => 'Update dependency ordering',      'description' => 'Test that update functions are run in the proper order.',      'group' => 'Update API',    );  }  function setUp() {    parent::setUp('update_test_1', 'update_test_2', 'update_test_3');    require_once DRUPAL_ROOT . '/includes/update.inc';  }  /**   * Test that updates within a single module run in the correct order.   */  function testUpdateOrderingSingleModule() {    $starting_updates = array(      'update_test_1' => 7000,    );    $expected_updates = array(      'update_test_1_update_7000',      'update_test_1_update_7001',      'update_test_1_update_7002',    );    $actual_updates = array_keys(update_resolve_dependencies($starting_updates));    $this->assertEqual($expected_updates, $actual_updates, t('Updates within a single module run in the correct order.'));  }  /**   * Test that dependencies between modules are resolved correctly.   */  function testUpdateOrderingModuleInterdependency() {    $starting_updates = array(      'update_test_2' => 7000,      'update_test_3' => 7000,    );    $update_order = array_keys(update_resolve_dependencies($starting_updates));    // Make sure that each dependency is satisfied.    $first_dependency_satisfied = array_search('update_test_2_update_7000', $update_order) < array_search('update_test_3_update_7000', $update_order);    $this->assertTrue($first_dependency_satisfied, t('The dependency of the second module on the first module is respected by the update function order.'));    $second_dependency_satisfied = array_search('update_test_3_update_7000', $update_order) < array_search('update_test_2_update_7001', $update_order);    $this->assertTrue($second_dependency_satisfied, t('The dependency of the first module on the second module is respected by the update function order.'));  }}/** * Tests for missing update dependencies. */class UpdateDependencyMissingTestCase extends DrupalWebTestCase {  public static function getInfo() {    return array(      'name' => 'Missing update dependencies',      'description' => 'Test that missing update dependencies are correctly flagged.',      'group' => 'Update API',    );  }  function setUp() {    // Only install update_test_2.module, even though its updates have a    // dependency on update_test_3.module.    parent::setUp('update_test_2');    require_once DRUPAL_ROOT . '/includes/update.inc';  }  function testMissingUpdate() {    $starting_updates = array(      'update_test_2' => 7000,    );    $update_graph = update_resolve_dependencies($starting_updates);    $this->assertTrue($update_graph['update_test_2_update_7000']['allowed'], t("The module's first update function is allowed to run, since it does not have any missing dependencies."));    $this->assertFalse($update_graph['update_test_2_update_7001']['allowed'], t("The module's second update function is not allowed to run, since it has a direct dependency on a missing update."));    $this->assertFalse($update_graph['update_test_2_update_7002']['allowed'], t("The module's third update function is not allowed to run, since it has an indirect dependency on a missing update."));  }}/** * Tests for the invocation of hook_update_dependencies(). */class UpdateDependencyHookInvocationTestCase extends DrupalWebTestCase {  public static function getInfo() {    return array(      'name' => 'Update dependency hook invocation',      'description' => 'Test that the hook invocation for determining update dependencies works correctly.',      'group' => 'Update API',    );  }  function setUp() {    parent::setUp('update_test_1', 'update_test_2');    require_once DRUPAL_ROOT . '/includes/update.inc';  }  /**   * Test the structure of the array returned by hook_update_dependencies().   */  function testHookUpdateDependencies() {    $update_dependencies = update_retrieve_dependencies();    $this->assertTrue($update_dependencies['system'][7000]['update_test_1'] == 7000, t('An update function that has a dependency on two separate modules has the first dependency recorded correctly.'));    $this->assertTrue($update_dependencies['system'][7000]['update_test_2'] == 7001, t('An update function that has a dependency on two separate modules has the second dependency recorded correctly.'));    $this->assertTrue($update_dependencies['system'][7001]['update_test_1'] == 7002, t('An update function that depends on more than one update from the same module only has the dependency on the higher-numbered update function recorded.'));  }}
 |