function UpdateManagerUpdateTest::testUninstalledUpdatesTable

Same name in other branches
  1. 10 core/modules/update/tests/src/Functional/UpdateManagerUpdateTest.php \Drupal\Tests\update\Functional\UpdateManagerUpdateTest::testUninstalledUpdatesTable()

Tests the Update form with an uninstalled module in the system.

File

core/modules/update/tests/src/Functional/UpdateManagerUpdateTest.php, line 232

Class

UpdateManagerUpdateTest
Tests the Update Manager module's 'Update' form and functionality.

Namespace

Drupal\Tests\update\Functional

Code

public function testUninstalledUpdatesTable() : void {
    $assert_session = $this->assertSession();
    $compatible_table_locator = '[data-drupal-selector="edit-projects"]';
    $uninstalled_table_locator = '[data-drupal-selector="edit-uninstalled-projects"]';
    $fixtures = [
        'drupal' => '8.1.1',
        'aaa_update_test' => '8.x-1.2',
        // Use a fixture with only a 8.x-1.0 release so BBB is up to date.
'bbb_update_test' => '1_0',
        // CCC is not installed and is missing an update, 8.x-1.1.
'ccc_update_test' => '1_1',
    ];
    $this->refreshUpdateStatus($fixtures);
    $this->drupalGet('admin/reports/updates/update');
    // Confirm there is no table for uninstalled extensions.
    $assert_session->pageTextNotContains('CCC Update test');
    $assert_session->responseNotContains('<h2>Uninstalled</h2>');
    // Confirm the table for installed modules exists without a header.
    $assert_session->responseNotContains('<h2>Installed</h2>');
    $assert_session->elementNotExists('css', $uninstalled_table_locator);
    $assert_session->elementsCount('css', "{$compatible_table_locator} tbody tr", 1);
    $compatible_headers = [
        // First column has no header, it's the select-all checkbox.
'th:nth-of-type(2)' => 'Name',
        'th:nth-of-type(3)' => 'Site version',
        'th:nth-of-type(4)' => 'Recommended version',
    ];
    $this->checkTableHeaders($compatible_table_locator, $compatible_headers);
    $installed_row = "{$compatible_table_locator} tbody tr";
    $assert_session->elementsCount('css', $installed_row, 1);
    $assert_session->elementTextContains('css', "{$compatible_table_locator} td:nth-of-type(2)", "AAA Update test");
    $assert_session->elementTextContains('css', "{$compatible_table_locator} td:nth-of-type(3)", '8.x-1.0');
    $assert_session->elementTextContains('css', "{$compatible_table_locator} td:nth-of-type(4)", '8.x-1.2');
    // Change the setting so we check for uninstalled modules, too.
    $this->config('update.settings')
        ->set('check.disabled_extensions', TRUE)
        ->save();
    // Reload the page so the new setting goes into effect.
    $this->drupalGet('admin/reports/updates/update');
    // Confirm the table for installed modules exists with a header.
    $assert_session->responseContains('<h2>Installed</h2>');
    $assert_session->elementsCount('css', "{$compatible_table_locator} tbody tr", 1);
    $this->checkTableHeaders($compatible_table_locator, $compatible_headers);
    // Confirm the table for uninstalled extensions exists.
    $assert_session->responseContains('<h2>Uninstalled</h2>');
    $uninstalled_headers = [
        // First column has no header, it's the select-all checkbox.
'th:nth-of-type(2)' => 'Name',
        'th:nth-of-type(3)' => 'Site version',
        'th:nth-of-type(4)' => 'Recommended version',
    ];
    $this->checkTableHeaders($uninstalled_table_locator, $uninstalled_headers);
    $uninstalled_row = "{$uninstalled_table_locator} tbody tr";
    $assert_session->elementsCount('css', $uninstalled_row, 1);
    $assert_session->elementTextContains('css', "{$uninstalled_row} td:nth-of-type(2)", "CCC Update test");
    $assert_session->elementTextContains('css', "{$uninstalled_row} td:nth-of-type(3)", '8.x-1.0');
    $assert_session->elementTextContains('css', "{$uninstalled_row} td:nth-of-type(4)", '8.x-1.1');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.