diff --git a/menu_example/menu_example.info.yml b/menu_example/menu_example.info.yml new file mode 100644 index 0000000..fc71778 --- /dev/null +++ b/menu_example/menu_example.info.yml @@ -0,0 +1,7 @@ +name: Menu_example +type: module +description: 'An example module showing how to define and handling menu links in drupal 8.' +package: 'Example modules' +core: 8.x +dependencies: + - examples diff --git a/menu_example/menu_example.module b/menu_example/menu_example.module new file mode 100644 index 0000000..3c24425 --- /dev/null +++ b/menu_example/menu_example.module @@ -0,0 +1,8 @@ +assertTrue(\Drupal::moduleHandler()->moduleExists('menu_example')); + } + + /** + * Test the various menus. + */ + public function testMenuExample() { + $this->drupalGet(''); + $this->clickLink(t('Menu Example')); + $this->assertText(t('This is the base page of the Menu Example')); + + $this->clickLink(t('Custom Access Example')); + $this->assertText(t('Custom Access Example')); + + $this->clickLink(t('examples/menu_example/custom_access/page')); + $this->assertResponse(403); + + $this->drupalGet('examples/menu_example/permissioned'); + $this->assertText(t('Permissioned Example')); + + $this->clickLink('examples/menu_example/permissioned/controlled'); + $this->assertResponse(403); + + $this->drupalGet('examples/menu_example'); + + $this->clickLink(t('MENU_CALLBACK example')); + + $this->drupalGet('examples/menu_example/path_only/callback'); + $this->assertText(t('The menu entry for this page is of type MENU_CALLBACK')); + + $this->clickLink(t('Tabs')); + $this->assertText(t('This is the "tabs" menu entry')); + + $this->drupalGet('examples/menu_example/tabs/second'); + $this->assertText(t('This is the tab "second" in the "basic tabs" example')); + + $this->clickLink(t('third')); + $this->assertText(t('This is the tab "third" in the "basic tabs" example')); + + $this->clickLink(t('Extra Arguments')); + + $this->drupalGet('examples/menu_example/use_url_arguments/one/two'); + $this->assertText(t('Argument 1=one')); + + $this->clickLink(t('Placeholder Arguments')); + + $this->clickLink(t('examples/menu_example/placeholder_argument/3343/display')); + $this->assertRaw('
3343
'); + + $this->clickLink(t('Processed Placeholder Arguments')); + $this->assertText(t('Loaded value was jackpot! default')); + + // Create a user with permissions to access protected menu entry. + $web_user = $this->drupalCreateUser(array('access protected menu example')); + + // Use custom overridden drupalLogin function to verify the user is logged + // in. + $this->drupalLogin($web_user); + + // Check that our title callback changing /user dynamically is working. + // Using ' because of the format_username function. + $this->assertRaw(t("@name's account", array('@name' => $web_user->getUsername())), format_string('Title successfully changed to account name: %name.', array('%name' => $web_user->getUsername()))); + + // Now start testing other menu entries. + $this->drupalGet('examples/menu_example'); + + $this->clickLink(t('Custom Access Example')); + $this->assertText(t('Custom Access Example')); + + $this->drupalGet('examples/menu_example/custom_access/page'); + $this->assertResponse(200); + + $this->drupalGet('examples/menu_example/permissioned'); + $this->assertText('Permissioned Example'); + $this->clickLink('examples/menu_example/permissioned/controlled'); + $this->assertText('This menu entry will not show'); + + $this->drupalGet('examples/menu_example/menu_altered_path'); + $this->assertText('This menu item was created strictly to allow the hook_menu_alter()'); + } +} \ No newline at end of file