MDL-43738 behat: Functional tests for fields management
[moodle.git] / admin / tool / behat / tests / behat / get_and_set_fields.feature
1 @tool_behat
2 Feature: Verify that all form fields values can be get and set
3   In order to use behat steps definitions
4   As a test writer
5   I need to verify it all works in real moodle forms
7   Background:
8     Given the following "courses" exists:
9       | fullname | shortname | category |
10       | Course 1 | C1 | 0 |
11     And the following "users" exists:
12       | username | email | firstname | lastname |
13       | student1 | s1@asd.com | Student | 1 |
14       | student2 | s2@asd.com | Student | 2 |
15       | student3 | s3@asd.com | Student | 3 |
16     And the following "course enrolments" exists:
17       | user | course | role |
18       | student1 | C1 | student |
19       | student2 | C1 | student |
20       | student3 | C1 | student |
21       | admin | C1 | editingteacher |
22     And the following "groups" exists:
23       | name | description | course | idnumber |
24       | Group 1 | G1 description | C1 | G1 |
25       | Group 2 | G1 description | C1 | G2 |
26     And the following "group members" exists:
27       | user | group |
28       | student1 | G1 |
29       | student2 | G1 |
30       | student2 | G2 |
31       | student3 | G2 |
32     And the following "activities" exists:
33       | activity | course | idnumber | name | intro | firstpagetitle | wikimode | visible |
34       | wiki | C1 | wiki1 | Test this one | Test this one | Test this one | collaborative | 0 |
35     And I log in as "admin"
36     And I expand "Site administration" node
37     And I expand "Appearance" node
38     And I follow "Manage tags"
39     # Select (multi-select) - We will check "I fill in...".
40     And I fill in "otagsadd" with "OT1, OT2, OT3, OT4, OT5"
41     And I press "Add official tags"
42     And I am on homepage
43     And I follow "Course 1"
44     And I turn editing mode on
45     And I follow "Test this one"
46     And I press "Create page"
47     # Select (multi-select) - Checking "the select box should contain".
48     And the "tags[officialtags][]" select box should contain "OT1"
49     And the "tags[officialtags][]" select box should contain "OT2"
50     And the "tags[officialtags][]" select box should contain "OT3"
51     And the "tags[officialtags][]" select box should contain "OT4"
52     And the "tags[officialtags][]" select box should contain "OT5"
53     And the "tags[officialtags][]" select box should contain "OT1, OT2, OT3, OT4, OT5"
54     And the "tags[officialtags][]" select box should contain "OT5, OT4, OT3, OT2, OT1"
55     And the "tags[officialtags][]" select box should not contain "OT6"
56     And the "tags[officialtags][]" select box should not contain "OT7"
57     And the "tags[officialtags][]" select box should not contain "OT6, OT7"
58     # Text (textarea & editor) & Select (multi-select) - Checking "I fill the moodle form with".
59     When I fill the moodle form with:
60       | HTML format | Student page contents to be tagged |
61       | tags[officialtags][] | OT1, OT3, OT5 |
62     And I press "Save"
63     Then I should see "Student page contents to be tagged" in the "region-main" "region"
64     And I should see "OT1" in the ".wiki-tags" "css_element"
65     And I should see "OT3" in the ".wiki-tags" "css_element"
66     And I should see "OT5" in the ".wiki-tags" "css_element"
67     And I should not see "OT2" in the ".wiki-tags" "css_element"
68     And I should not see "OT4" in the ".wiki-tags" "css_element"
69     And I follow "Edit"
70     # Select (multi-select) - Checking "I select from".
71     And I select "OT2, OT4" from "tags[officialtags][]"
72     And I press "Save"
73     And I should see "OT2" in the ".wiki-tags" "css_element"
74     And I should see "OT4" in the ".wiki-tags" "css_element"
75     And I should not see "OT1" in the ".wiki-tags" "css_element"
76     And I should not see "OT3" in the ".wiki-tags" "css_element"
77     And I should not see "OT5" in the ".wiki-tags" "css_element"
78     And I follow "Edit"
79     # Select (multi-select) - Checking "the field should match" and "the field does not match value".
80     And the "tags[officialtags][]" field should match "OT2, OT4" value
81     And the field "tags[officialtags][]" does not match value "OT4"
82     And the field "tags[officialtags][]" does not match value "OT2"
83     And the field "tags[officialtags][]" does not match value "OT1, OT3, OT5"
84     And I press "Cancel"
85     And I follow "Edit settings"
86     And I expand all fieldsets
87     # Checkbox - Checking "I check".
88     And I check "Display description on course page"
89     # Checkbox - Checking "I fill the moodle form with:".
90     And I fill the moodle form with:
91       | Force format | 1 |
92     # Checkbox - Checking "the field should match" and "the field does not match value".
93     And the "Display description on course page" field should match "1" value
94     And the field "Display description on course page" does not match value ""
95     And I press "Save and return to course"
96     And I should see "Test this one"
97     And I follow "Test this one"
98     And I follow "Edit settings"
99     # Checkbox - Checking "the field should match" and "the following fields match these values".
100     And the following fields match these values:
101       | Display description on course page | 1 |
102       | Default format | HTML |
103       | Wiki name | Test this one |
104     And the "Force format" field should match "1" value
105     # Select (simple) - Checking "I fill the moodle form with:".
106     And I fill the moodle form with:
107       | Default format | NWiki |
108       | Display description on course page | |
109     # Checkbox - Checking "I uncheck".
110     And I uncheck "Force format"
111     # Select (simple) - Checking "I select from".
112     And I select "Separate groups" from "Group mode"
113     And I press "Save and display"
114     And I follow "Edit settings"
115     And the following fields match these values:
116       | Default format | NWiki |
117       | Group mode | Separate groups |
118       | Display description on course page | |
119       | Force format | |
120     # All fields - Checking "the following fields do not match these values".
121     And the following fields do not match these values:
122       | Wiki name | Test this one baby |
123       | Default format | HTML |
124       | Force format | 1 |
125     And I press "Cancel"
126     And I follow "Course 1"
127     # Radio - Checking "I check" and "the field should match".
128     And I add a "Choice" to section "1" and I fill the form with:
129       | Choice name | Test choice name |
130       | Description | Test choice description |
131       | Allow choice to be updated | Yes |
132       | Option 1 | one |
133       | Option 2 | two |
134       | Option 3 | three |
135     And I follow "Test choice name"
136     And I check "one"
137     And I press "Save my choice"
138     And the "one" field should match "1" value
139     And the "two" field should match "" value
141   Scenario: with JS disabled all form fields getters and setters works as expected
143   @javascript
144   Scenario: with JS enabled all form fields getters and setters works as expected
145     Then I follow "Course 1"
146     And I expand "Users" node
147     And I follow "Groups"
148     # Select (multi-select & AJAX) - Checking "I select from" and "select box should contain".
149     And I select "Group 2" from "groups"
150     And the "members" select box should contain "Student 2"
151     And the "members" select box should contain "Student 3"
152     And the "members" select box should not contain "Student 1"
153     And I select "Group 1" from "groups"
154     And the "members" select box should contain "Student 1"
155     And the "members" select box should contain "Student 2"
156     And the "members" select box should not contain "Student 3"
157     # Checkbox (AJAX) - Checking "I check" and "I fill the moodle form with".
158     And I follow "Course 1"
159     And I add a "Lesson" to section "1"
160     And I fill the moodle form with:
161       | Name | Test lesson |
162       | available[enabled] | 1 |
163     And I check "deadline[enabled]"
164     # Checkbox (AJAX) - Checking "field should match" before saving.
165     And the "available[enabled]" field should match "1" value
166     And the "available[day]" "field" should be enabled
167     And the "deadline[enabled]" field should match "1" value
168     And I press "Save and display"
169     And I follow "Edit settings"
170     And the "available[enabled]" field should match "1" value
171     And the "available[day]" "field" should be enabled
172     And the "deadline[enabled]" field should match "1" value
173     And I press "Cancel"