views_exposed_form.test
7.75 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?php
/**
* @file
* Definition of ViewsExposedFormTest.
*/
/**
* Tests exposed forms.
*/
class ViewsExposedFormTest extends ViewsSqlTest {
public static function getInfo() {
return array(
'name' => 'Exposed forms',
'description' => 'Test exposed forms functionality.',
'group' => 'Views Plugins',
);
}
public function setUp() {
parent::setUp('views_ui');
module_enable(array('views_ui'));
// @TODO Figure out why it's required to clear the cache here.
views_module_include('views_default', TRUE);
views_get_all_views(TRUE);
menu_rebuild();
}
/**
* Tests, whether and how the reset button can be renamed.
*/
public function testRenameResetButton() {
$account = $this->drupalCreateUser();
$this->drupalLogin($account);
// Create some random nodes.
for ($i = 0; $i < 5; $i++) {
$this->drupalCreateNode();
}
// Look at the page and check the label "reset".
$this->drupalGet('test_rename_reset_button');
// Rename the label of the reset button.
$view = views_get_view('test_rename_reset_button');
$view->set_display('default');
$exposed_form = $view->display_handler->get_option('exposed_form');
$exposed_form['options']['reset_button_label'] = $expected_label = $this->randomName();
$exposed_form['options']['reset_button'] = TRUE;
$view->display_handler->set_option('exposed_form', $exposed_form);
$view->save();
views_invalidate_cache();
// Look whether ther reset button label changed.
$this->drupalGet('test_rename_reset_button');
$this->helperButtonHasLabel('edit-reset', $expected_label);
}
/**
* Tests the admin interface of exposed filter and sort items.
*/
function testExposedAdminUi() {
$admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
$this->drupalLogin($admin_user);
menu_rebuild();
$edit = array();
$this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
// Be sure that the button is called exposed.
$this->helperButtonHasLabel('edit-options-expose-button-button', t('Expose filter'));
// The first time the filter UI is displayed, the operator and the
// value forms should be shown.
$this->assertFieldById('edit-options-operator-in', '', 'Operator In exists');
$this->assertFieldById('edit-options-operator-not-in', '', 'Operator Not In exists');
$this->assertFieldById('edit-options-value-page', '', 'Checkbox for Page exists');
$this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists');
// Click the Expose filter button.
$this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type', $edit, t('Expose filter'));
// Check the label of the expose button.
$this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide filter'));
// Check the label of the grouped exposed button
$this->helperButtonHasLabel('edit-options-group-button-button', t('Grouped filters'));
// After Expose the filter, Operator and Value should be still here
$this->assertFieldById('edit-options-operator-in', '', 'Operator In exists');
$this->assertFieldById('edit-options-operator-not-in', '', 'Operator Not In exists');
$this->assertFieldById('edit-options-value-page', '', 'Checkbox for Page exists');
$this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists');
// Check the validations of the filter handler.
$edit = array();
$edit['options[expose][identifier]'] = '';
$this->drupalPost(NULL, $edit, t('Apply'));
$this->assertText(t('The identifier is required if the filter is exposed.'));
$edit = array();
$edit['options[expose][identifier]'] = 'value';
$this->drupalPost(NULL, $edit, t('Apply'));
$this->assertText(t('This identifier is not allowed.'));
// Now check the sort criteria.
$this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created');
$this->helperButtonHasLabel('edit-options-expose-button-button', t('Expose sort'));
$this->assertNoFieldById('edit-options-expose-label', '', t('Make sure no label field is shown'));
// Click the Grouped Filters button.
$this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
$this->drupalPost(NULL, array(), t('Grouped filters'));
// After click on 'Grouped Filters' standard operator and value should not be displayed
$this->assertNoFieldById('edit-options-operator-in', '', 'Operator In not exists');
$this->assertNoFieldById('edit-options-operator-not-in', '', 'Operator Not In not exists');
$this->assertNoFieldById('edit-options-value-page', '', 'Checkbox for Page not exists');
$this->assertNoFieldById('edit-options-value-article', '', 'Checkbox for Article not exists');
// Check that after click on 'Grouped Filters', a new button is shown to
// add more items to the list.
$this->helperButtonHasLabel('edit-options-group-info-add-group', t('Add another item'));
// Create a grouped filter
$this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
$edit = array();
$edit["options[group_info][group_items][1][title]"] = 'Is Article';
$edit["options[group_info][group_items][1][value][article]"] = 'article';
$edit["options[group_info][group_items][2][title]"] = 'Is Page';
$edit["options[group_info][group_items][2][value][page]"] = TRUE;
$edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
$edit["options[group_info][group_items][3][value][article]"] = TRUE;
$edit["options[group_info][group_items][3][value][page]"] = TRUE;
$this->drupalPost(NULL, $edit, t('Apply'));
// Validate that all the titles are defined for each group
$this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
$edit = array();
$edit["options[group_info][group_items][1][title]"] = 'Is Article';
$edit["options[group_info][group_items][1][value][article]"] = TRUE;
// This should trigger an error
$edit["options[group_info][group_items][2][title]"] = '';
$edit["options[group_info][group_items][2][value][page]"] = TRUE;
$edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
$edit["options[group_info][group_items][3][value][article]"] = TRUE;
$edit["options[group_info][group_items][3][value][page]"] = TRUE;
$this->drupalPost(NULL, $edit, t('Apply'));
$this->assertRaw(t('The title is required if value for this item is defined.'), t('Group items should have a title'));
// Un-Expose the filter
$this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/filter/type');
$this->drupalPost(NULL, array(), t('Hide filter'));
// After Un-Expose the filter, Operator and Value should be shown again
$this->assertFieldById('edit-options-operator-in', '', 'Operator In exists after hide filter');
$this->assertFieldById('edit-options-operator-not-in', '', 'Operator Not In exists after hide filter');
$this->assertFieldById('edit-options-value-page', '', 'Checkbox for Page exists after hide filter');
$this->assertFieldById('edit-options-value-article', '', 'Checkbox for Article exists after hide filter');
// Click the Expose sort button.
$edit = array();
$this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created', $edit, t('Expose sort'));
// Check the label of the expose button.
$this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide sort'));
$this->assertFieldById('edit-options-expose-label', '', t('Make sure a label field is shown'));
}
}