3 namespace Drupal\Tests\language\Functional;
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\Tests\BrowserTestBase;
9 * Tests breadcrumbs functionality.
13 class LanguageBreadcrumbTest extends BrowserTestBase {
20 public static $modules = ['language', 'block', 'filter'];
25 protected function setUp() {
27 $this->drupalPlaceBlock('system_breadcrumb_block');
28 ConfigurableLanguage::createFromLangcode('de')->save();
29 ConfigurableLanguage::createFromLangcode('gsw-berne')->save();
33 * Tests breadcrumbs with URL prefixes.
35 public function testBreadCrumbs() {
36 // Prepare common base breadcrumb elements.
37 $home = ['' => 'Home'];
38 $admin = $home + ['admin' => t('Administration')];
40 $page = $this->getSession()->getPage();
42 // /user/login is the default frontpage which only works for an anonymous
43 // user. Access the frontpage in different languages, ensure that no
44 // breadcrumb is displayed.
45 $this->drupalGet('user/login');
46 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
47 $this->assertNull($breadcrumbs);
49 $this->drupalGet('de/user/login');
50 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
51 $this->assertNull($breadcrumbs);
53 $this->drupalGet('gsw-berne/user/login');
54 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
55 $this->assertNull($breadcrumbs);
57 $admin_user = $this->drupalCreateUser(['access administration pages']);
58 $this->drupalLogin($admin_user);
60 // Use administration routes to assert that breadcrumb is displayed
61 // correctly on pages other than the frontpage.
62 $this->drupalGet('admin');
63 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
64 $this->assertEquals(1, substr_count($breadcrumbs->getText(), 'Home'));
65 $this->assertEquals(0, substr_count($breadcrumbs->getText(), 'Administration'));
67 $this->drupalGet('de/admin');
68 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
69 $this->assertEquals(1, substr_count($breadcrumbs->getText(), 'Home'));
70 $this->assertEquals(0, substr_count($breadcrumbs->getText(), 'Administration'));
72 $this->drupalGet('admin/structure', $admin);
73 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
74 $this->assertEquals(1, substr_count($breadcrumbs->getText(), 'Home'));
75 $this->assertEquals(1, substr_count($breadcrumbs->getText(), 'Administration'));
77 $this->drupalGet('de/admin/structure', $admin);
78 $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
79 $this->assertEquals(1, substr_count($breadcrumbs->getText(), 'Home'));
80 $this->assertEquals(1, substr_count($breadcrumbs->getText(), 'Administration'));