forked from drush-ops/drush
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfieldTest.php
77 lines (66 loc) · 2.57 KB
/
fieldTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
namespace Unish;
/**
* Tests for field.drush.inc
*
* @group commands
*/
class fieldCase extends CommandUnishTestCase {
public function testField() {
if (UNISH_DRUPAL_MAJOR_VERSION == 6) {
$this->markTestSkipped("Field API not available in Drupal 6.");
}
if (UNISH_DRUPAL_MAJOR_VERSION == 8) {
$this->markTestSkipped("Field commands are not yet ported to D8.");
}
$sites = $this->setUpDrupal(1, TRUE);
$options = array(
'yes' => NULL,
'root' => $this->webroot(),
'uri' => key($sites),
);
$expected_url = '/admin/config/people/accounts/fields/subtitle';
if (UNISH_DRUPAL_MAJOR_VERSION >= 8) {
// Prepend for D8. We might want to change setUpDrupal() to add clean url.
$expected_url = '/index.php' . $expected_url;
}
// Create two field instances on article content type.
$this->drush('field-create', array('user', 'city,text,text_textfield', 'subtitle,text,text_textfield'), $options + array('entity_type' => 'user'));
$output = $this->getOutput();
list($city, $subtitle) = explode(' ', $output);
$url = parse_url($subtitle);
$this->assertEquals($expected_url, $url['path']);
// Assure that the second field instance was created correctly (subtitle).
$this->verifyInstance('subtitle', $options);
// Assure that field update URL looks correct.
$this->drush('field-update', array('subtitle'), $options);
$output = $this->getOutput();
$url = parse_url($this->getOutput());
$this->assertEquals($expected_url, $url['path']);
// Assure that field-clone actually clones.
$this->drush('field-clone', array('subtitle', 'subtitlecloned'), $options);
$this->verifyInstance('subtitlecloned', $options);
// Assure that delete works.
$this->drush('field-delete', array('subtitlecloned'), $options);
$this->verifyInstance('subtitlecloned', $options, FALSE);
}
function verifyInstance($name, $options, $expected = TRUE) {
$this->drush('field-info', array('fields'), $options + array('format' => 'json'));
$output = $this->getOutputFromJSON();
$found = FALSE;
foreach($output as $key => $field) {
if ($key == $name) {
$this->assertEquals('text', $field->type, $name . ' field is of type=text.');
$this->assertEquals('user', current($field->bundle), $name . ' field was added to user bundle.');
$found = TRUE;
break;
}
}
if ($expected) {
$this->assertTrue($found, $name . ' field was created.');
}
else {
$this->assertFalse($found, $name . ' field was not present.');
}
}
}