comparison openmindattribute/tests/link.token.test @ 0:124ef8f3b22d

initial
author Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
date Fri, 27 Mar 2015 19:21:42 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:124ef8f3b22d
1 <?php
2
3 /**
4 * @file
5 * Contains simpletests making sure token integration works.
6 */
7
8 /**
9 * Testing that tokens can be used in link titles
10 */
11 class LinkTokenTest extends LinkBaseTestClass {
12
13 public static function getInfo() {
14 return array(
15 'name' => 'Link tokens - browser test',
16 'description' => 'Tests including tokens in link titles, making sure they appear in node views.',
17 'group' => 'Link',
18 'dependencies' => array('token'),
19 );
20 }
21
22 function setUp($modules = array()) {
23 parent::setUp(array('token'));
24 }
25
26 /**
27 * Creates a link field with a required title enabled for user-entered tokens.
28 * Creates a node with a token in the link title and checks the value.
29 */
30 function testUserTokenLinkCreate() {
31 // create field
32 $settings = array(
33 'instance[settings][enable_tokens]' => 1,
34 );
35 $field_name = $this->createLinkField('page',
36 $settings);
37
38 // create page form
39 $this->drupalGet('node/add/page');
40 //$field_name = 'field_' . $name;
41 $this->assertField($field_name . '[und][0][title]', 'Title found');
42 $this->assertField($field_name . '[und][0][url]', 'URL found');
43
44 $input = array(
45 'href' => 'http://example.com/' . $this->randomName(),
46 'label' => $this->randomName(),
47 );
48
49 //$this->drupalLogin($this->web_user);
50 $this->drupalGet('node/add/page');
51
52 $edit = array(
53 'title' => $input['label'],
54 $field_name . '[und][0][title]' => $input['label'] . " [node:content-type:machine-name]",
55 $field_name . '[und][0][url]' => $input['href'],
56 );
57 $this->drupalPost(NULL, $edit, t('Save'));
58 $url = $this->getUrl();
59
60 // change to anonymous user
61 $this->drupalLogout();
62 $this->drupalGet($url);
63
64 $this->assertRaw(l($input['label'] . ' page', $input['href']));
65 }
66
67
68 /**
69 * Creates a link field with a static title and an admin-entered token.
70 * Creates a node with a link and checks the title value.
71 */
72 function testStaticTokenLinkCreate() {
73
74 // create field
75 $name = $this->randomName();
76 $settings = array(
77 'instance[settings][title]' => 'value',
78 'instance[settings][title_value]' => $name .' [node:content-type:machine-name]');
79 $field_name = $this->createLinkField('page', $settings);
80
81 // create page form
82 $this->drupalGet('node/add/page');
83 $this->assertField($field_name . '[und][0][url]', 'URL found');
84
85 $input = array(
86 'href' => 'http://example.com/' . $this->randomName()
87 );
88
89 //$this->drupalLogin($this->web_user);
90 $this->drupalGet('node/add/page');
91
92 $edit = array(
93 'title' => $name,
94 $field_name . '[und][0][url]' => $input['href'],
95 );
96 $this->drupalPost(NULL, $edit, t('Save'));
97
98 $url = $this->getUrl();
99
100 // change to anonymous user
101 $this->drupalLogout();
102 $this->drupalGet($url);
103
104 $this->assertRaw(l($name . ' page', $input['href']));
105 }
106
107 /**
108 * Creates a link field with a static title and an admin-entered token.
109 * Creates a node with a link and checks the title value.
110 *
111 * Basically, I want to make sure the [title-raw] token works, because it's a
112 * token that changes from node to node, where [type]'s always going to be the
113 * same.
114 */
115 function testStaticTokenLinkCreate2() {
116
117 // create field
118 $name = $this->randomName();
119 $settings = array(
120 'instance[settings][title]' => 'value',
121 'instance[settings][title_value]' => $name .' [node:title]');
122 $field_name = $this->createLinkField('page', $settings);
123
124 // create page form
125 $this->drupalGet('node/add/page');
126 $this->assertField($field_name . '[und][0][url]', 'URL found');
127
128 $input = array(
129 'href' => 'http://example.com/' . $this->randomName()
130 );
131
132 //$this->drupalLogin($this->web_user);
133 $this->drupalGet('node/add/page');
134
135 $edit = array(
136 'title' => $name,
137 $field_name . '[und][0][url]' => $input['href'],
138 );
139 $this->drupalPost(NULL, $edit, t('Save'));
140
141 $url = $this->getUrl();
142
143 // change to anonymous user
144 $this->drupalLogout();
145 $this->drupalGet($url);
146
147 $this->assertRaw(l($name .' '. $name, $input['href']));
148 }
149
150 // This test doesn't seem to actually work, due to lack of 'title' in url.
151 function _test_Link_With_Title_Attribute_token_url_form() {
152 /* $this->loginWithPermissions($this->permissions);
153 $this->acquireContentTypes(1);
154 $field_settings = array(
155 'type' => 'link',
156 'widget_type' => 'link',
157 'type_name' => $this->content_types[0]->name,
158 'attributes' => array(
159 'class' => '',
160 'target' => 'default',
161 'rel' => 'nofollow',
162 'title' => '',
163 ),
164 );
165
166 $field = $this->createField($field_settings, 0);
167 //$this->fail('<pre>'. print_r($field, TRUE) .'</pre>');
168 $field_name = $field['field_name'];
169 $field_db_info = content_database_info($field);
170 $url_type = str_replace('_', '-', $this->content_types[0]->type);
171
172 $edit = array('attributes[title]' => '['. $field_name .'-url]',
173 'enable_tokens' => TRUE);
174
175 $this->drupalPost('admin/content/node-type/'. $url_type .'/fields/'. $field['field_name'],
176 $edit, t('Save field settings'));
177 $this->assertText(t('Saved field @field_name', array('@field_name' => $field['field_name'])));*/
178 $name = $this->randomName();
179 $settings = array(
180 'instance[settings][attributes][rel]' => 'nofollow',
181 );
182
183 $field_name = $this->createLinkField('page', $settings);
184
185 // So, having saved this field_name, let's see if it works...
186 //$this->acquireNodes(1);
187
188 //$node = node_load($this->nodes[0]->nid);
189
190 //$this->drupalGet('node/'. $this->nodes[0]->nid);
191
192 $edit = array();
193 $test_link_url = 'http://www.example.com/test';
194 $edit[$field_name .'[und][0][url]'] = $test_link_url;
195 $title = 'title_'. $this->randomName(20);
196 $edit[$field_name .'[und][0][title]'] = $title;
197 $edit['title'] = $name;
198
199 $this->drupalGet('node/add/page');
200 $this->drupalPost(NULL, $edit, t('Save'));
201
202 // Make sure we get a new version!
203 //$node = node_load($this->nodes[0]->nid, NULL, TRUE);
204 $this->assertText(t('Basic page @title has been updated.',
205 array('@title' => $name)));
206
207 //$this->drupalGet('node/'. $node->nid);
208 $this->assertText($title, 'Make sure the link title/text shows');
209 $this->assertRaw(' title="'. $test_link_url .'"', "Do we show the link url as the title attribute?");
210 $this->assertNoRaw(' title="['. $field_name .'-url]"');
211 $this->assertTrue(module_exists('token'), t('Assure that Token Module is enabled.'));
212 //$this->fail($this->content);
213 }
214
215 /**
216 * If the title of the link is set to the title attribute, then the title
217 * attribute isn't supposed to show.
218 */
219 function _test_Link_With_Title_Attribute_token_title_form() {
220 $this->loginWithPermissions($this->permissions);
221 $this->acquireContentTypes(1);
222 $field_settings = array(
223 'type' => 'link',
224 'widget_type' => 'link',
225 'type_name' => $this->content_types[0]->name,
226 'attributes' => array(
227 'class' => '',
228 'target' => 'default',
229 'rel' => 'nofollow',
230 'title' => '',
231 ),
232 );
233
234 $field = $this->createField($field_settings, 0);
235 $field_name = $field['field_name'];
236 $field_db_info = content_database_info($field);
237 $url_type = str_replace('_', '-', $this->content_types[0]->type);
238
239 $edit = array('attributes[title]' => '['. $field_name .'-title]',
240 'enable_tokens' => TRUE);
241
242 $this->drupalPost('admin/content/node-type/'. $url_type .'/fields/'. $field['field_name'],
243 $edit, t('Save field settings'));
244 $this->assertText(t('Saved field @field_name', array('@field_name' => $field['field_name'])));
245
246 // So, having saved this field_name, let's see if it works...
247 $this->acquireNodes(1);
248
249 $node = node_load($this->nodes[0]->nid);
250
251 $this->drupalGet('node/'. $this->nodes[0]->nid);
252
253 $edit = array();
254 $edit[$field['field_name'] .'[0][url]'] = 'http://www.example.com/test';
255 $title = 'title_'. $this->randomName(20);
256 $edit[$field['field_name'] .'[0][title]'] = $title;
257
258 $this->drupalPost('node/'. $this->nodes[0]->nid .'/edit', $edit, t('Save'));
259
260 // Make sure we get a new version!
261 $node = node_load($this->nodes[0]->nid, NULL, TRUE);
262 $this->assertText(t('@type @title has been updated.',
263 array('@title' => $node->title,
264 '@type' => $this->content_types[0]->name)));
265
266 $this->drupalGet('node/'. $node->nid);
267 $this->assertText($title, 'Make sure the link title/text shows');
268 $this->assertNoRaw(' title="'. $title .'"', "We should not show the link title as the title attribute?");
269 $this->assertNoRaw(' title="['. $field_name .'-title]"');
270 //$this->fail($this->content);
271 }
272
273 /**
274 * Trying to set the url to contain a token.
275 */
276 function _testUserTokenLinkCreateInURL() {
277 $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
278 $this->drupalLogin($this->web_user);
279
280 // create field
281 $name = strtolower($this->randomName());
282 $edit = array(
283 '_add_new_field[label]' => $name,
284 '_add_new_field[field_name]' => $name,
285 '_add_new_field[type]' => 'link',
286 '_add_new_field[widget_type]' => 'link',
287 );
288 $this->drupalPost('admin/content/node-type/page/fields', $edit, t('Save'));
289 $this->drupalPost(NULL, array(
290 'title' => 'required',
291 'enable_tokens' => 1), t('Save field settings'));
292
293 // Is field created?
294 $this->assertRaw(t('Added field %label.', array('%label' => $name)), 'Field added');
295
296 // create page form
297 $this->drupalGet('node/add/page');
298 $field_name = 'field_' . $name;
299 $this->assertField($field_name . '[0][title]', 'Title found');
300 $this->assertField($field_name . '[0][url]', 'URL found');
301
302 $input = array(
303 'href' => 'http://example.com/' . $this->randomName(),
304 'label' => $this->randomName(),
305 );
306
307 $this->drupalLogin($this->web_user);
308 $this->drupalGet('node/add/page');
309
310 $edit = array(
311 'title' => $input['label'],
312 $field_name . '[0][title]' => $input['label'],
313 $field_name . '[0][url]' => $input['href'] . "/[type]",
314 );
315 $this->drupalPost(NULL, $edit, t('Save'));
316 $url = $this->getUrl();
317
318 // change to anonymous user
319 $this->drupalLogout();
320 $this->drupalGet($url);
321
322 $this->assertRaw(l($input['label'], $input['href'] .'/page'));
323 //$this->fail($this->content);
324 }
325
326 /**
327 * Trying to set the url to contain a token.
328 */
329 function _testUserTokenLinkCreateInURL2() {
330 $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
331 $this->drupalLogin($this->web_user);
332
333 // create field
334 $name = strtolower($this->randomName());
335 $edit = array(
336 '_add_new_field[label]' => $name,
337 '_add_new_field[field_name]' => $name,
338 '_add_new_field[type]' => 'link',
339 '_add_new_field[widget_type]' => 'link',
340 );
341 $this->drupalPost('admin/content/node-type/page/fields', $edit, t('Save'));
342 $this->drupalPost(NULL, array(
343 'title' => 'required',
344 'enable_tokens' => 1), t('Save field settings'));
345
346 // Is field created?
347 $this->assertRaw(t('Added field %label.', array('%label' => $name)), 'Field added');
348
349 // create page form
350 $this->drupalGet('node/add/page');
351 $field_name = 'field_' . $name;
352 $this->assertField($field_name . '[0][title]', 'Title found');
353 $this->assertField($field_name . '[0][url]', 'URL found');
354
355 $input = array(
356 'href' => 'http://example.com/' . $this->randomName(),
357 'label' => $this->randomName(),
358 );
359
360 $this->drupalLogin($this->web_user);
361 $this->drupalGet('node/add/page');
362
363 $edit = array(
364 'title' => $input['label'],
365 $field_name . '[0][title]' => $input['label'],
366 $field_name . '[0][url]' => $input['href'] . "/[author-uid]",
367 );
368 $this->drupalPost(NULL, $edit, t('Save'));
369 $url = $this->getUrl();
370
371 // change to anonymous user
372 $this->drupalLogout();
373 $this->drupalGet($url);
374
375 $this->assertRaw(l($input['label'], $input['href'] .'/'. $this->web_user->uid));
376 }
377 }