e15fcf7a6d67d61029b9e7b03b76749649680c8a
[yaffs-website] / web / core / modules / language / tests / src / Functional / LanguageBreadcrumbTest.php
1 <?php
2
3 namespace Drupal\Tests\language\Functional;
4
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\Tests\BrowserTestBase;
7
8 /**
9  * Tests breadcrumbs functionality.
10  *
11  * @group Menu
12  */
13 class LanguageBreadcrumbTest extends BrowserTestBase {
14
15   /**
16    * Modules to enable.
17    *
18    * @var array
19    */
20   public static $modules = ['language', 'block', 'filter'];
21
22   /**
23    * {@inheritdoc}
24    */
25   protected function setUp() {
26     parent::setUp();
27     $this->drupalPlaceBlock('system_breadcrumb_block');
28     ConfigurableLanguage::createFromLangcode('de')->save();
29     ConfigurableLanguage::createFromLangcode('gsw-berne')->save();
30   }
31
32   /**
33    * Tests breadcrumbs with URL prefixes.
34    */
35   public function testBreadCrumbs() {
36     // Prepare common base breadcrumb elements.
37     $home = ['' => 'Home'];
38     $admin = $home + ['admin' => t('Administration')];
39
40     $page = $this->getSession()->getPage();
41
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);
48
49     $this->drupalGet('de/user/login');
50     $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
51     $this->assertNull($breadcrumbs);
52
53     $this->drupalGet('gsw-berne/user/login');
54     $breadcrumbs = $page->find('css', '.block-system-breadcrumb-block');
55     $this->assertNull($breadcrumbs);
56
57     $admin_user = $this->drupalCreateUser(['access administration pages']);
58     $this->drupalLogin($admin_user);
59
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'));
66
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'));
71
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'));
76
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'));
81   }
82
83 }