annotate sites/all/modules/menu_attributes/menu_attributes.test @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents b74b41bb73f0
children
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2
danielebarchiesi@2 3 /**
danielebarchiesi@2 4 * @file
danielebarchiesi@2 5 * Functionality tests for Menu attributes.
danielebarchiesi@2 6 *
danielebarchiesi@2 7 * @ingroup menu_attributes
danielebarchiesi@2 8 */
danielebarchiesi@2 9
danielebarchiesi@2 10 /**
danielebarchiesi@2 11 * Helper test class with some added functions for testing.
danielebarchiesi@2 12 */
danielebarchiesi@2 13 class MenuAttributesTestHelper extends DrupalWebTestCase {
danielebarchiesi@2 14 protected $admin_user;
danielebarchiesi@2 15 protected $menu_attributes_new;
danielebarchiesi@2 16 protected $menu_attributes_edit;
danielebarchiesi@2 17
danielebarchiesi@2 18 function setUp(array $modules = array()) {
danielebarchiesi@2 19 $modules[] = 'menu';
danielebarchiesi@2 20 $modules[] = 'menu_attributes';
danielebarchiesi@2 21 parent::setUp($modules);
danielebarchiesi@2 22
danielebarchiesi@2 23 // Create and login user.
danielebarchiesi@2 24 $this->admin_user = $this->drupalCreateUser(array(
danielebarchiesi@2 25 'access administration pages',
danielebarchiesi@2 26 'administer content types',
danielebarchiesi@2 27 'administer menu',
danielebarchiesi@2 28 'create page content',
danielebarchiesi@2 29 'edit any page content',
danielebarchiesi@2 30 'delete any page content',
danielebarchiesi@2 31 ));
danielebarchiesi@2 32
danielebarchiesi@2 33 $this->menu_attributes_new = array(
danielebarchiesi@2 34 'title' => $this->randomName(10),
danielebarchiesi@2 35 'id' => $this->randomName(10),
danielebarchiesi@2 36 'name' => $this->randomName(10),
danielebarchiesi@2 37 'rel' => $this->randomName(10),
danielebarchiesi@2 38 'class' => $this->randomName(10),
danielebarchiesi@2 39 'style' => $this->randomName(10),
danielebarchiesi@2 40 'target' => '_top',
danielebarchiesi@2 41 'accesskey' => $this->randomName(1),
danielebarchiesi@2 42 );
danielebarchiesi@2 43
danielebarchiesi@2 44 $this->menu_attributes_edit = array(
danielebarchiesi@2 45 'title' => $this->randomName(10),
danielebarchiesi@2 46 'id' => $this->randomName(10),
danielebarchiesi@2 47 'name' => $this->randomName(10),
danielebarchiesi@2 48 'rel' => $this->randomName(10),
danielebarchiesi@2 49 'class' => $this->randomName(10),
danielebarchiesi@2 50 'style' => $this->randomName(10),
danielebarchiesi@2 51 'target' => '_self',
danielebarchiesi@2 52 'accesskey' => $this->randomName(1),
danielebarchiesi@2 53 );
danielebarchiesi@2 54 }
danielebarchiesi@2 55
danielebarchiesi@2 56 /**
danielebarchiesi@2 57 * Add or edit a menu link using the menu module UI.
danielebarchiesi@2 58 *
danielebarchiesi@2 59 * @param integer $plid Parent menu link id.
danielebarchiesi@2 60 * @param string $link Link path.
danielebarchiesi@2 61 * @param string $menu_name Menu name.
danielebarchiesi@2 62 *
danielebarchiesi@2 63 * @return array Menu link created.
danielebarchiesi@2 64 */
danielebarchiesi@2 65 function crudMenuLink($mlid = 0, $plid = 0, $link = '<front>', $menu_name = 'navigation') {
danielebarchiesi@2 66 // View add/edit menu link page.
danielebarchiesi@2 67 if (empty($mlid)) {
danielebarchiesi@2 68 $this->drupalGet("admin/structure/menu/manage/$menu_name/add");
danielebarchiesi@2 69 $menu_attributes = $this->menu_attributes_new;
danielebarchiesi@2 70 }
danielebarchiesi@2 71 else {
danielebarchiesi@2 72 $this->drupalGet("admin/structure/menu/item/$mlid/edit");
danielebarchiesi@2 73 $menu_attributes = $this->menu_attributes_edit;
danielebarchiesi@2 74 }
danielebarchiesi@2 75 $this->assertResponse(200);
danielebarchiesi@2 76
danielebarchiesi@2 77 $title = '!link_' . $this->randomName(16);
danielebarchiesi@2 78 $edit = array(
danielebarchiesi@2 79 'link_path' => $link,
danielebarchiesi@2 80 'link_title' => $title,
danielebarchiesi@2 81 'enabled' => TRUE, // Use this to disable the menu and test.
danielebarchiesi@2 82 'expanded' => TRUE, // Setting this to true should test whether it works when we do the std_user tests.
danielebarchiesi@2 83 'parent' => $menu_name . ':' . $plid,
danielebarchiesi@2 84 'weight' => '0',
danielebarchiesi@2 85 'options[attributes][title]' => $menu_attributes['title'],
danielebarchiesi@2 86 'options[attributes][id]' => $menu_attributes['id'],
danielebarchiesi@2 87 'options[attributes][name]' => $menu_attributes['name'],
danielebarchiesi@2 88 'options[attributes][rel]' => $menu_attributes['rel'],
danielebarchiesi@2 89 'options[attributes][class]' => $menu_attributes['class'],
danielebarchiesi@2 90 'options[attributes][style]' => $menu_attributes['style'],
danielebarchiesi@2 91 'options[attributes][target]' => $menu_attributes['target'],
danielebarchiesi@2 92 'options[attributes][accesskey]' => $menu_attributes['accesskey'],
danielebarchiesi@2 93 );
danielebarchiesi@2 94
danielebarchiesi@2 95 // Add menu link.
danielebarchiesi@2 96 $this->drupalPost(NULL, $edit, t('Save'));
danielebarchiesi@2 97
danielebarchiesi@2 98 $item = db_query('SELECT * FROM {menu_links} WHERE link_title = :title', array(':title' => $title))->fetchAssoc();
danielebarchiesi@2 99
danielebarchiesi@2 100 return $item;
danielebarchiesi@2 101 }
danielebarchiesi@2 102
danielebarchiesi@2 103 function assertMenuAttributes($form_parent, $action = 'new') {
danielebarchiesi@2 104 if ($action == 'new') {
danielebarchiesi@2 105 foreach ($this->menu_attributes_new as $attribute => $value) {
danielebarchiesi@2 106 $this->assertFieldByName($form_parent . '[' . $attribute . ']', $value, t("'$attribute' attribute correct in edit form."));
danielebarchiesi@2 107 }
danielebarchiesi@2 108 }
danielebarchiesi@2 109 else {
danielebarchiesi@2 110 foreach ($this->menu_attributes_edit as $attribute => $value) {
danielebarchiesi@2 111 $this->assertFieldByName($form_parent . '[' . $attribute . ']', $value, t("New '$attribute' attribute correct in edit form."));
danielebarchiesi@2 112 }
danielebarchiesi@2 113 }
danielebarchiesi@2 114 }
danielebarchiesi@2 115 }
danielebarchiesi@2 116
danielebarchiesi@2 117 /**
danielebarchiesi@2 118 * Test basic functionality.
danielebarchiesi@2 119 */
danielebarchiesi@2 120 class MenuAttributesTestCase extends MenuAttributesTestHelper {
danielebarchiesi@2 121 public static function getInfo() {
danielebarchiesi@2 122 return array(
danielebarchiesi@2 123 'name' => 'Menu attributes',
danielebarchiesi@2 124 'description' => 'Tests menu attributes functionality.',
danielebarchiesi@2 125 'group' => 'Menu',
danielebarchiesi@2 126 );
danielebarchiesi@2 127 }
danielebarchiesi@2 128
danielebarchiesi@2 129 function setUp(array $modules = array()) {
danielebarchiesi@2 130 parent::setUp($modules);
danielebarchiesi@2 131 }
danielebarchiesi@2 132
danielebarchiesi@2 133 /**
danielebarchiesi@2 134 * Tests menu attributes functionality.
danielebarchiesi@2 135 */
danielebarchiesi@2 136 function testMenuAttributes() {
danielebarchiesi@2 137 // Login the user.
danielebarchiesi@2 138 $this->drupalLogin($this->admin_user);
danielebarchiesi@2 139
danielebarchiesi@2 140 $menu_name = 'navigation';
danielebarchiesi@2 141
danielebarchiesi@2 142 // Add a node to be used as a link for menu links.
danielebarchiesi@2 143 $node = $this->drupalCreateNode(array('type' => 'page'));
danielebarchiesi@2 144
danielebarchiesi@2 145 // Add a menu link.
danielebarchiesi@2 146 $item = $this->crudMenuLink(0, 0, 'node/' . $node->nid, $menu_name);
danielebarchiesi@2 147
danielebarchiesi@2 148 $this->drupalGet('admin/structure/menu/item/' . $item['mlid'] . '/edit');
danielebarchiesi@2 149 $this->assertMenuAttributes('options[attributes]', 'new');
danielebarchiesi@2 150
danielebarchiesi@2 151 // Edit the previously created menu link.
danielebarchiesi@2 152 $item = $this->crudMenuLink($item['mlid'], 0, 'node/' . $node->nid, $menu_name);
danielebarchiesi@2 153
danielebarchiesi@2 154 $this->drupalGet('admin/structure/menu/item/' . $item['mlid'] . '/edit');
danielebarchiesi@2 155 $this->assertMenuAttributes('options[attributes]', 'edit');
danielebarchiesi@2 156 }
danielebarchiesi@2 157 }
danielebarchiesi@2 158
danielebarchiesi@2 159 /**
danielebarchiesi@2 160 * Test menu attributes settings for nodes.
danielebarchiesi@2 161 */
danielebarchiesi@2 162 class MenuAttributesNodeTestCase extends MenuAttributesTestHelper {
danielebarchiesi@2 163 public static function getInfo() {
danielebarchiesi@2 164 return array(
danielebarchiesi@2 165 'name' => 'Menu attributes settings for nodes',
danielebarchiesi@2 166 'description' => 'Add, edit, and delete a node with menu link.',
danielebarchiesi@2 167 'group' => 'Menu',
danielebarchiesi@2 168 );
danielebarchiesi@2 169 }
danielebarchiesi@2 170
danielebarchiesi@2 171 function setUp(array $modules = array()) {
danielebarchiesi@2 172 parent::setUp($modules);
danielebarchiesi@2 173 $this->drupalLogin($this->admin_user);
danielebarchiesi@2 174 }
danielebarchiesi@2 175
danielebarchiesi@2 176 /**
danielebarchiesi@2 177 * Test creating, editing, deleting menu links via node form widget.
danielebarchiesi@2 178 */
danielebarchiesi@2 179 function testMenuNodeFormWidget() {
danielebarchiesi@2 180 // Enable Navigation menu as available menu.
danielebarchiesi@2 181 $edit = array(
danielebarchiesi@2 182 'menu_options[navigation]' => 1,
danielebarchiesi@2 183 );
danielebarchiesi@2 184 $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
danielebarchiesi@2 185 // Change default parent item to Navigation menu, so we can assert more
danielebarchiesi@2 186 // easily.
danielebarchiesi@2 187 $edit = array(
danielebarchiesi@2 188 'menu_parent' => 'navigation:0',
danielebarchiesi@2 189 );
danielebarchiesi@2 190 $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
danielebarchiesi@2 191
danielebarchiesi@2 192 // Create a node.
danielebarchiesi@2 193 $node_title = $this->randomName();
danielebarchiesi@2 194 $language = LANGUAGE_NONE;
danielebarchiesi@2 195 $edit = array(
danielebarchiesi@2 196 "title" => $node_title,
danielebarchiesi@2 197 "body[$language][0][value]" => $this->randomString(),
danielebarchiesi@2 198 );
danielebarchiesi@2 199 $this->drupalPost('node/add/page', $edit, t('Save'));
danielebarchiesi@2 200 $node = $this->drupalGetNodeByTitle($node_title);
danielebarchiesi@2 201 // Assert that there is no link for the node.
danielebarchiesi@2 202 $this->drupalGet('');
danielebarchiesi@2 203 $this->assertNoLink($node_title);
danielebarchiesi@2 204
danielebarchiesi@2 205 // Edit the node, enable the menu link setting, but skip the link title.
danielebarchiesi@2 206 $edit = array(
danielebarchiesi@2 207 'menu[enabled]' => 1,
danielebarchiesi@2 208 );
danielebarchiesi@2 209 $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
danielebarchiesi@2 210 // Assert that there is no link for the node.
danielebarchiesi@2 211 $this->drupalGet('');
danielebarchiesi@2 212 $this->assertNoLink($node_title);
danielebarchiesi@2 213
danielebarchiesi@2 214 // Edit the node and create a menu link with attributes.
danielebarchiesi@2 215 $edit = array(
danielebarchiesi@2 216 'menu[enabled]' => 1,
danielebarchiesi@2 217 'menu[link_title]' => $node_title,
danielebarchiesi@2 218 'menu[weight]' => 17,
danielebarchiesi@2 219 'menu[options][attributes][title]' => $this->menu_attributes_new['title'],
danielebarchiesi@2 220 'menu[options][attributes][id]' => $this->menu_attributes_new['id'],
danielebarchiesi@2 221 'menu[options][attributes][name]' => $this->menu_attributes_new['name'],
danielebarchiesi@2 222 'menu[options][attributes][rel]' => $this->menu_attributes_new['rel'],
danielebarchiesi@2 223 'menu[options][attributes][class]' => $this->menu_attributes_new['class'],
danielebarchiesi@2 224 'menu[options][attributes][style]' => $this->menu_attributes_new['style'],
danielebarchiesi@2 225 'menu[options][attributes][target]' => $this->menu_attributes_new['target'],
danielebarchiesi@2 226 'menu[options][attributes][accesskey]' => $this->menu_attributes_new['accesskey'],
danielebarchiesi@2 227 );
danielebarchiesi@2 228 $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
danielebarchiesi@2 229 // Assert that the link exists.
danielebarchiesi@2 230 $this->drupalGet('');
danielebarchiesi@2 231 $this->assertLink($node_title);
danielebarchiesi@2 232
danielebarchiesi@2 233 // Assert that the link attributes exist.
danielebarchiesi@2 234 $this->drupalGet('node/' . $node->nid . '/edit');
danielebarchiesi@2 235 $this->assertMenuAttributes('menu[options][attributes]', 'new');
danielebarchiesi@2 236
danielebarchiesi@2 237 // Edit the node again and change the menu link attributes.
danielebarchiesi@2 238 $edit = array(
danielebarchiesi@2 239 'menu[enabled]' => 1,
danielebarchiesi@2 240 'menu[link_title]' => $node_title,
danielebarchiesi@2 241 'menu[weight]' => 17,
danielebarchiesi@2 242 'menu[options][attributes][title]' => $this->menu_attributes_edit['title'],
danielebarchiesi@2 243 'menu[options][attributes][id]' => $this->menu_attributes_edit['id'],
danielebarchiesi@2 244 'menu[options][attributes][name]' => $this->menu_attributes_edit['name'],
danielebarchiesi@2 245 'menu[options][attributes][rel]' => $this->menu_attributes_edit['rel'],
danielebarchiesi@2 246 'menu[options][attributes][class]' => $this->menu_attributes_edit['class'],
danielebarchiesi@2 247 'menu[options][attributes][style]' => $this->menu_attributes_edit['style'],
danielebarchiesi@2 248 'menu[options][attributes][target]' => $this->menu_attributes_edit['target'],
danielebarchiesi@2 249 'menu[options][attributes][accesskey]' => $this->menu_attributes_edit['accesskey'],
danielebarchiesi@2 250 );
danielebarchiesi@2 251 $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
danielebarchiesi@2 252
danielebarchiesi@2 253 // Assert that the link attributes exist.
danielebarchiesi@2 254 $this->drupalGet('node/' . $node->nid . '/edit');
danielebarchiesi@2 255 $this->assertMenuAttributes('menu[options][attributes]', 'edit');
danielebarchiesi@2 256
danielebarchiesi@2 257 // Edit the node and remove the menu link.
danielebarchiesi@2 258 $edit = array(
danielebarchiesi@2 259 'menu[enabled]' => FALSE,
danielebarchiesi@2 260 );
danielebarchiesi@2 261 $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
danielebarchiesi@2 262 // Assert that there is no link for the node.
danielebarchiesi@2 263 $this->drupalGet('');
danielebarchiesi@2 264 $this->assertNoLink($node_title);
danielebarchiesi@2 265 }
danielebarchiesi@2 266 }