You are here

protected function TaxonomyAccessFixFallbackRequirementsPageTrait::assertWarningSummaries in Taxonomy access fix 8.2

Assert the given warning summaries are present on the page.

If an expected warning is not found, or if a warning not in the list is present, a fail is raised.

Parameters

string[] $warning_summaries: A list of warning summaries to expect on the requirements screen (e.g. 'PHP', 'PHP OPcode caching', etc.).

2 calls to TaxonomyAccessFixFallbackRequirementsPageTrait::assertWarningSummaries()
TaxonomyAccessFixFallbackRequirementsPageTrait::continueOnExpectedWarnings in tests/src/Traits/TaxonomyAccessFixFallbackRequirementsPageTrait.php
Continues installation when the expected warnings are found.
TaxonomyAccessFixFallbackRequirementsPageTrait::updateRequirementsProblem in tests/src/Traits/TaxonomyAccessFixFallbackRequirementsPageTrait.php
Handles the update requirements page.

File

tests/src/Traits/TaxonomyAccessFixFallbackRequirementsPageTrait.php, line 56

Class

TaxonomyAccessFixFallbackRequirementsPageTrait
Provides a fallback for RequirementsPageTrait added in Drupal Core 8.7.

Namespace

Drupal\Tests\taxonomy_access_fix\Traits

Code

protected function assertWarningSummaries(array $warning_summaries) {

  // Allow only details elements that are directly after the warning header
  // or each other. There is no guaranteed wrapper we can rely on across
  // distributions. When there are multiple warnings, the selectors will be:
  // - h3#warning+details summary
  // - h3#warning+details+details summary
  // - etc.
  // We add one more selector than expected warnings to confirm that there
  // isn't any other warning before clicking the link.
  // @todo Make this more reliable in
  //   https://www.drupal.org/project/drupal/issues/2927345.
  $selectors = [];
  for ($i = 0; $i <= count($warning_summaries); $i++) {
    $selectors[] = 'h3#warning' . implode('', array_fill(0, $i + 1, '+details')) . ' summary';
  }
  $warning_elements = $this
    ->cssSelect(implode(', ', $selectors));

  // Confirm that there are only the expected warnings.
  $warnings = [];
  foreach ($warning_elements as $warning) {
    $warnings[] = trim($warning
      ->getText());
  }
  $this
    ->assertEquals($warning_summaries, $warnings);
}