Breadcrumb404Test.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace Drupal\FunctionalTests\Breadcrumb;
  3. use Drupal\simpletest\BlockCreationTrait;
  4. use Drupal\Tests\BrowserTestBase;
  5. /**
  6. * Tests the breadcrumb of 404 pages.
  7. *
  8. * @group breadcrumb
  9. */
  10. class Breadcrumb404Test extends BrowserTestBase {
  11. use BlockCreationTrait;
  12. /**
  13. * {@inheritdoc}
  14. */
  15. public static $modules = ['system', 'block'];
  16. /**
  17. * Tests that different 404s don't create unnecessary cache entries.
  18. */
  19. public function testBreadcrumbOn404Pages() {
  20. $this->placeBlock('system_breadcrumb_block', ['id' => 'breadcrumb']);
  21. // Prime the cache first.
  22. $this->drupalGet('/not-found-1');
  23. $base_count = count($this->getBreadcrumbCacheEntries());
  24. $this->drupalGet('/not-found-2');
  25. $next_count = count($this->getBreadcrumbCacheEntries());
  26. $this->assertEquals($base_count, $next_count);
  27. $this->drupalGet('/not-found-3');
  28. $next_count = count($this->getBreadcrumbCacheEntries());
  29. $this->assertEquals($base_count, $next_count);
  30. }
  31. /**
  32. * Gets the breadcrumb cache entries.
  33. *
  34. * @return array
  35. * The breadcrumb cache entries.
  36. */
  37. protected function getBreadcrumbCacheEntries() {
  38. $database = \Drupal::database();
  39. $cache_entries = $database->select('cache_render')
  40. ->fields('cache_render')
  41. ->condition('cid', $database->escapeLike('entity_view:block:breadcrumb') . '%', 'LIKE')
  42. ->execute()
  43. ->fetchAllAssoc('cid');
  44. return $cache_entries;
  45. }
  46. }