surveyor 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/Gemfile +0 -6
- data/README.md +40 -14
- data/app/helpers/surveyor_helper.rb +1 -85
- data/app/views/partials/_answer.html.haml +5 -4
- data/app/views/partials/_question.html.haml +7 -5
- data/app/views/partials/_question_group.html.haml +2 -2
- data/app/views/surveyor/export.json.rabl +75 -0
- data/app/views/surveyor/show.html.haml +75 -13
- data/app/views/surveyor/show.json.rabl +14 -0
- data/config/routes.rb +2 -3
- data/doc/surveyor reject or delete decision matrix.png +0 -0
- data/features/export_to_json.feature +96 -0
- data/features/show_survey.feature +42 -0
- data/features/step_definitions/{common_setps.rb → common_steps.rb} +0 -0
- data/features/step_definitions/surveyor_steps.rb +46 -12
- data/features/step_definitions/web_steps.rb +15 -5
- data/features/support/paths.rb +2 -1
- data/features/surveyor.feature +192 -41
- data/features/surveyor_parser.feature +10 -10
- data/features/{redcap_parser.feature → z_redcap_parser.feature} +9 -6
- data/lib/formtastic/surveyor_builder.rb +1 -4
- data/lib/generators/surveyor/install_generator.rb +6 -5
- data/lib/generators/surveyor/templates/db/migrate/add_api_id_to_question_groups.rb +9 -0
- data/lib/generators/surveyor/templates/db/migrate/add_api_ids_to_response_sets_and_responses.rb +11 -0
- data/lib/generators/surveyor/templates/public/javascripts/surveyor/jquery-ui-timepicker-addon.js +1277 -0
- data/lib/generators/surveyor/templates/public/javascripts/surveyor/jquery-ui.js +11729 -0
- data/lib/generators/surveyor/templates/public/javascripts/surveyor/jquery.surveyor.js +54 -10
- data/lib/generators/surveyor/templates/public/stylesheets/sass/surveyor.sass +1 -1
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/jquery-ui-timepicker-addon.css +6 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/jquery-ui.custom.css +572 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-icons_ef8c08_256x240.png +0 -0
- data/lib/generators/surveyor/templates/public/stylesheets/surveyor/ui-icons_ffffff_256x240.png +0 -0
- data/lib/generators/surveyor/templates/surveys/EXTENDING_SURVEYOR.md +14 -0
- data/lib/generators/surveyor/templates/surveys/MODIFYING_SURVEYOR.md +91 -0
- data/lib/generators/surveyor/templates/surveys/date_survey.rb +15 -0
- data/lib/generators/surveyor/templates/surveys/kitchen_sink_survey.rb +2 -2
- data/lib/surveyor/common.rb +31 -4
- data/lib/surveyor/helpers/surveyor_helper_methods.rb +99 -0
- data/lib/surveyor/models/answer_methods.rb +6 -5
- data/lib/surveyor/models/dependency_condition_methods.rb +0 -1
- data/lib/surveyor/models/dependency_methods.rb +1 -1
- data/lib/surveyor/models/question_group_methods.rb +5 -0
- data/lib/surveyor/models/question_methods.rb +5 -2
- data/lib/surveyor/models/response_methods.rb +44 -3
- data/lib/surveyor/models/response_set_methods.rb +14 -4
- data/lib/surveyor/models/survey_methods.rb +8 -2
- data/lib/surveyor/models/survey_section_methods.rb +13 -1
- data/lib/surveyor/parser.rb +18 -11
- data/lib/surveyor/render_text.rb +19 -0
- data/lib/surveyor/surveyor_controller_methods.rb +19 -1
- data/lib/surveyor/unparser.rb +1 -1
- data/lib/surveyor/version.rb +1 -1
- data/lib/tasks/surveyor_tasks.rake +1 -1
- data/spec/controllers/surveyor_controller_spec.rb +7 -3
- data/spec/helpers/surveyor_helper_spec.rb +104 -9
- data/spec/lib/chinese_survey.rb +14 -0
- data/spec/lib/common_spec.rb +52 -1
- data/spec/lib/rake_kitchen_sink.rb +40 -0
- data/spec/models/answer_spec.rb +11 -0
- data/spec/models/question_spec.rb +15 -0
- data/spec/models/response_set_spec.rb +45 -1
- data/spec/models/response_spec.rb +7 -4
- data/surveyor.gemspec +4 -2
- metadata +99 -40
- data/app/controllers/results_controller.rb +0 -13
- data/app/views/results/index.html.erb +0 -17
- data/app/views/results/show.html.erb +0 -25
Binary file
|
@@ -0,0 +1,96 @@
|
|
1
|
+
Feature: Survey export
|
2
|
+
As an api consumer
|
3
|
+
I want to represent a survey in JSON
|
4
|
+
So that I can use it offline
|
5
|
+
|
6
|
+
Scenario: Exporting basic questions
|
7
|
+
Given I parse
|
8
|
+
"""
|
9
|
+
survey "Simple json" do
|
10
|
+
section "Basic questions" do
|
11
|
+
label "These questions are examples of the basic supported input types"
|
12
|
+
|
13
|
+
question_1 "What is your favorite color?", :pick => :one
|
14
|
+
answer "red"
|
15
|
+
answer "blue"
|
16
|
+
answer "green"
|
17
|
+
answer :other
|
18
|
+
|
19
|
+
q_2b "Choose the colors you don't like", :pick => :any
|
20
|
+
a_1 "orange"
|
21
|
+
a_2 "purple"
|
22
|
+
a_3 "brown"
|
23
|
+
a :omit
|
24
|
+
end
|
25
|
+
end
|
26
|
+
"""
|
27
|
+
Then the json for "Simple json" should be
|
28
|
+
"""
|
29
|
+
{
|
30
|
+
"title": "Simple json",
|
31
|
+
"uuid": "*",
|
32
|
+
"sections": [{
|
33
|
+
"title": "Basic questions",
|
34
|
+
"display_order":0,
|
35
|
+
"questions_and_groups": [
|
36
|
+
{ "uuid": "*", "type": "label", "text": "These questions are examples of the basic supported input types" },
|
37
|
+
{ "uuid": "*", "reference_identifier": "1", "pick": "one", "text": "What is your favorite color?", "answers": [{"text": "red", "uuid": "*"}, {"text": "blue", "uuid": "*"}, {"text": "green", "uuid": "*"}, {"text": "Other", "uuid": "*"}]},
|
38
|
+
{ "uuid": "*", "reference_identifier": "2b", "pick": "any", "text": "Choose the colors you don't like", "answers": [{"text": "orange", "uuid": "*"},{"text": "purple", "uuid": "*"},{"text": "brown", "uuid": "*"},{"text": "Omit", "exclusive":true, "uuid": "*"}]}]
|
39
|
+
}]
|
40
|
+
}
|
41
|
+
"""
|
42
|
+
|
43
|
+
Scenario: Exporting response sets
|
44
|
+
Given I parse
|
45
|
+
"""
|
46
|
+
survey "Simple json response sets" do
|
47
|
+
section "Colors" do
|
48
|
+
|
49
|
+
question_1 "What is your favorite color?", :pick => :one
|
50
|
+
answer "red"
|
51
|
+
answer "blue"
|
52
|
+
answer "green"
|
53
|
+
answer :other
|
54
|
+
|
55
|
+
q_2b "What color don't you like?"
|
56
|
+
a_1 "color", :string
|
57
|
+
end
|
58
|
+
section "Other" do
|
59
|
+
label "no"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
"""
|
63
|
+
When I start the "Simple json response sets" survey
|
64
|
+
And I choose "red"
|
65
|
+
And I press "Other"
|
66
|
+
And I wait 1 seconds
|
67
|
+
And I press "Colors"
|
68
|
+
And I fill in "color" with "orange"
|
69
|
+
And I press "Other"
|
70
|
+
And I press "Click here to finish"
|
71
|
+
Then there should be 1 response set with 2 responses with:
|
72
|
+
| answer |
|
73
|
+
| red |
|
74
|
+
And the json for the last response set for "Simple json response sets" should be
|
75
|
+
"""
|
76
|
+
{
|
77
|
+
"uuid":"*",
|
78
|
+
"survey_id":"*",
|
79
|
+
"created_at":"*",
|
80
|
+
"completed_at":"*",
|
81
|
+
"responses":[{
|
82
|
+
"uuid":"*",
|
83
|
+
"answer_id":"*",
|
84
|
+
"question_id":"*",
|
85
|
+
"created_at":"*",
|
86
|
+
"modified_at":"*"
|
87
|
+
},{
|
88
|
+
"uuid":"*",
|
89
|
+
"answer_id":"*",
|
90
|
+
"question_id":"*",
|
91
|
+
"created_at":"*",
|
92
|
+
"modified_at":"*",
|
93
|
+
"value":"orange"
|
94
|
+
}]
|
95
|
+
}
|
96
|
+
"""
|
@@ -0,0 +1,42 @@
|
|
1
|
+
Feature: showing a survey
|
2
|
+
As a survey administrator
|
3
|
+
I want to see a survey that a participant has taken
|
4
|
+
So that I can understand the data
|
5
|
+
|
6
|
+
Scenario: Take a survey, then look at it
|
7
|
+
Given the survey
|
8
|
+
"""
|
9
|
+
survey "Favorites" do
|
10
|
+
section "Colors" do
|
11
|
+
label "You with the sad eyes don't be discouraged"
|
12
|
+
|
13
|
+
question_1 "What is your favorite color?", :pick => :one
|
14
|
+
answer "red"
|
15
|
+
answer "blue"
|
16
|
+
answer "green"
|
17
|
+
answer :other
|
18
|
+
|
19
|
+
q_2b "Choose the colors you don't like", :pick => :any
|
20
|
+
a_1 "orange"
|
21
|
+
a_2 "purple"
|
22
|
+
a_3 "brown"
|
23
|
+
a :omit
|
24
|
+
end
|
25
|
+
end
|
26
|
+
"""
|
27
|
+
When I start the "Favorites" survey
|
28
|
+
Then I should see "You with the sad eyes don't be discouraged"
|
29
|
+
And I choose "red"
|
30
|
+
And I choose "blue"
|
31
|
+
And I check "orange"
|
32
|
+
And I check "brown"
|
33
|
+
And I press "Click here to finish"
|
34
|
+
Then there should be 1 response set with 3 responses with:
|
35
|
+
| answer |
|
36
|
+
| blue |
|
37
|
+
| orange |
|
38
|
+
| brown |
|
39
|
+
When I go to the last response set show page
|
40
|
+
Then the "blue" radiobutton should be checked
|
41
|
+
And the "orange" checkbox should be checked
|
42
|
+
And the "brown" checkbox should be checked
|
File without changes
|
@@ -1,7 +1,9 @@
|
|
1
1
|
When /^I start the "([^"]*)" survey$/ do |name|
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
steps %Q{
|
3
|
+
When I go to the surveys page
|
4
|
+
Then I should see "#{name}\"
|
5
|
+
When I press "Take it"
|
6
|
+
}
|
5
7
|
end
|
6
8
|
|
7
9
|
Then /^there should be (\d+) response set with (\d+) responses? with:$/ do |rs_num, r_num, table|
|
@@ -72,14 +74,10 @@ Then /^there should be (\d+) response with answer "([^"]*)"$/ do |count, answer_
|
|
72
74
|
Response.find_by_answer_id(Answer.find_by_text(answer_text)).should_not be_blank
|
73
75
|
end
|
74
76
|
|
75
|
-
Then /^there should be
|
76
|
-
Response.
|
77
|
-
|
78
|
-
|
79
|
-
dtv = DateTime.parse( hash["datetime_value"].size == 8 ? "0001-01-01 #{hash['datetime_value']}" : hash["datetime_value"])
|
80
|
-
Response.all.one?{|x| x.datetime_value == dtv}.should be_true
|
81
|
-
end
|
82
|
-
end
|
77
|
+
Then /^there should be a datetime response with today's date$/ do
|
78
|
+
# Response.datetime_value returns ActiveSupport::TimeWithZone
|
79
|
+
# so we call .to_date on it for the comparison with Date.today
|
80
|
+
Response.all.one?{|x| x.datetime_value.to_date == Date.today}.should be_true
|
83
81
|
end
|
84
82
|
|
85
83
|
Then /^I should see the image "([^"]*)"$/ do |src|
|
@@ -90,6 +88,20 @@ Then /^(\d+) responses should exist$/ do |response_count|
|
|
90
88
|
Response.count.should == response_count.to_i
|
91
89
|
end
|
92
90
|
|
91
|
+
Then /^the json for "([^"]*)" should be$/ do |title, string|
|
92
|
+
visit "/surveys/#{Survey.find_by_title(title).access_code}.json"
|
93
|
+
puts page.find('body').text
|
94
|
+
Surveyor::Common.equal_json_excluding_wildcards(page.find('body').text, string).should == true
|
95
|
+
end
|
96
|
+
|
97
|
+
Then /^the json for the last response set for "([^"]*)" should be$/ do |title, string|
|
98
|
+
(survey = Survey.find_by_title(title)).should_not be_nil
|
99
|
+
(response_set = ResponseSet.last(:conditions => {:survey_id => survey.id})).should_not be_nil
|
100
|
+
visit "/surveys/#{survey.access_code}/#{response_set.access_code}.json"
|
101
|
+
puts page.find('body').text
|
102
|
+
Surveyor::Common.equal_json_excluding_wildcards(page.find('body').text, string).should == true
|
103
|
+
end
|
104
|
+
|
93
105
|
Then /the element "([^\"]*)" should be hidden$/ do |selector|
|
94
106
|
wait_until do
|
95
107
|
its_hidden = page.evaluate_script("$('#{selector}').is(':hidden');")
|
@@ -104,4 +116,26 @@ Then /the element "([^\"]*)" should not be hidden$/ do |selector|
|
|
104
116
|
its_in_dom = page.evaluate_script("$('#{selector}').length > 0;")
|
105
117
|
(its_not_hidden && its_in_dom).should be_true
|
106
118
|
end
|
107
|
-
end
|
119
|
+
end
|
120
|
+
Given /^I have survey context of "([^"]*)"$/ do |context|
|
121
|
+
class SurveyorController < ApplicationController
|
122
|
+
require 'mustache'
|
123
|
+
class FakeMustacheContext < ::Mustache
|
124
|
+
def name
|
125
|
+
"Santa Claus"
|
126
|
+
end
|
127
|
+
def site
|
128
|
+
"Northwestern"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
def render_context
|
132
|
+
FakeMustacheContext
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
When /^I follow today's date$/ do
|
138
|
+
steps %Q{
|
139
|
+
When I follow "#{Date.today.strftime('%d').to_i}"
|
140
|
+
}
|
141
|
+
end
|
@@ -102,6 +102,16 @@ When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
|
|
102
102
|
attach_file(field, File.expand_path(path))
|
103
103
|
end
|
104
104
|
|
105
|
+
When /^(?:|I )click "([^"]*)"$/ do |field|
|
106
|
+
find_field(field).click
|
107
|
+
end
|
108
|
+
|
109
|
+
When /^(?:|I )change "([^"]*)" to "([^"]*)"$/ do |field, value|
|
110
|
+
fill_in(field, :with => value)
|
111
|
+
id = "#" + find_field(field)[:id]
|
112
|
+
page.execute_script("$('#{id}').trigger('change');")
|
113
|
+
end
|
114
|
+
|
105
115
|
Then /^(?:|I )should see "([^"]*)"$/ do |text|
|
106
116
|
if page.respond_to? :should
|
107
117
|
page.should have_content(text)
|
@@ -162,7 +172,7 @@ Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |f
|
|
162
172
|
end
|
163
173
|
end
|
164
174
|
|
165
|
-
Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
|
175
|
+
Then /^the "([^"]*)" (checkbox|radiobutton)(?: within (.*))? should be checked$/ do |label, _, parent|
|
166
176
|
with_scope(parent) do
|
167
177
|
field_checked = find_field(label)['checked']
|
168
178
|
if field_checked.respond_to? :should
|
@@ -173,7 +183,7 @@ Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, pa
|
|
173
183
|
end
|
174
184
|
end
|
175
185
|
|
176
|
-
Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label, parent|
|
186
|
+
Then /^the "([^"]*)" (checkbox|radiobutton)(?: within (.*))? should not be checked$/ do |label, _, parent|
|
177
187
|
with_scope(parent) do
|
178
188
|
field_checked = find_field(label)['checked']
|
179
189
|
if field_checked.respond_to? :should
|
@@ -183,7 +193,7 @@ Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label
|
|
183
193
|
end
|
184
194
|
end
|
185
195
|
end
|
186
|
-
|
196
|
+
|
187
197
|
Then /^(?:|I )should be on (.+)$/ do |page_name|
|
188
198
|
current_path = URI.parse(current_url).path
|
189
199
|
if current_path.respond_to? :should
|
@@ -197,8 +207,8 @@ Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
|
|
197
207
|
query = URI.parse(current_url).query
|
198
208
|
actual_params = query ? CGI.parse(query) : {}
|
199
209
|
expected_params = {}
|
200
|
-
expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
|
201
|
-
|
210
|
+
expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
|
211
|
+
|
202
212
|
if actual_params.respond_to? :should
|
203
213
|
actual_params.should == expected_params
|
204
214
|
else
|
data/features/support/paths.rb
CHANGED
@@ -12,7 +12,8 @@ module NavigationHelpers
|
|
12
12
|
'/'
|
13
13
|
when /the surveys page/
|
14
14
|
'/surveys'
|
15
|
-
|
15
|
+
when /the last response set show page/
|
16
|
+
view_my_survey_path(:survey_code => ResponseSet.last.survey.access_code, :response_set_code => ResponseSet.last.access_code)
|
16
17
|
# Add more mappings here.
|
17
18
|
# Here is an example that pulls values out of the Regexp:
|
18
19
|
#
|
data/features/surveyor.feature
CHANGED
@@ -3,7 +3,7 @@ Feature: Survey creation
|
|
3
3
|
I want to take a survey
|
4
4
|
So that I can get paid
|
5
5
|
|
6
|
-
Scenario:
|
6
|
+
Scenario: Creating basic questions
|
7
7
|
Given the survey
|
8
8
|
"""
|
9
9
|
survey "Favorites" do
|
@@ -37,7 +37,7 @@ Feature: Survey creation
|
|
37
37
|
| orange |
|
38
38
|
| brown |
|
39
39
|
|
40
|
-
Scenario:
|
40
|
+
Scenario: Creating default answers
|
41
41
|
Given the survey
|
42
42
|
"""
|
43
43
|
survey "Favorites" do
|
@@ -68,7 +68,7 @@ Feature: Survey creation
|
|
68
68
|
| string_value |
|
69
69
|
| chicken |
|
70
70
|
|
71
|
-
Scenario:
|
71
|
+
Scenario: Creating, it's quiz time
|
72
72
|
Given the survey
|
73
73
|
"""
|
74
74
|
survey "Favorites" do
|
@@ -82,7 +82,7 @@ Feature: Survey creation
|
|
82
82
|
"""
|
83
83
|
Then question "1" should have correct answer "oink"
|
84
84
|
|
85
|
-
Scenario:
|
85
|
+
Scenario: Creating custom css class
|
86
86
|
Given the survey
|
87
87
|
"""
|
88
88
|
survey "Movies" do
|
@@ -93,15 +93,18 @@ Feature: Survey creation
|
|
93
93
|
a :string
|
94
94
|
q "Anything else to say?", :pick => :any
|
95
95
|
a "yes", :string, :custom_class => "other_custom_class"
|
96
|
+
q "Random question", :pick => :one
|
97
|
+
a "yes", :string, :custom_class => "other_other_custom_class"
|
96
98
|
end
|
97
99
|
end
|
98
100
|
"""
|
99
101
|
When I start the "Movies" survey
|
100
|
-
Then the element "input[type='text']
|
102
|
+
Then the element "input[type='text'].my_custom_class" should exist
|
101
103
|
And the element "input[type='checkbox'].other_custom_class" should exist
|
102
|
-
And the element "input[type='
|
104
|
+
And the element "input[type='radio'].other_other_custom_class" should exist
|
105
|
+
And the element "input[type='text'].other_other_custom_class" should exist
|
103
106
|
|
104
|
-
Scenario:
|
107
|
+
Scenario: Creating a pick one question with an option for other
|
105
108
|
Given the survey
|
106
109
|
"""
|
107
110
|
survey "Favorites" do
|
@@ -120,7 +123,7 @@ Feature: Survey creation
|
|
120
123
|
Then there should be 1 response set with 1 response with:
|
121
124
|
| bacon |
|
122
125
|
|
123
|
-
Scenario:
|
126
|
+
Scenario: Creating a repeater with a dropdown
|
124
127
|
Given the survey
|
125
128
|
"""
|
126
129
|
survey "Movies" do
|
@@ -137,7 +140,25 @@ Feature: Survey creation
|
|
137
140
|
When I start the "Movies" survey
|
138
141
|
Then a dropdown should exist with the options "Action, Comedy, Mystery"
|
139
142
|
|
140
|
-
|
143
|
+
# Issue 251 - text field with checkbox
|
144
|
+
Scenario: Creating a group with a dropdown
|
145
|
+
Given the survey
|
146
|
+
"""
|
147
|
+
survey "All Holidays" do
|
148
|
+
section "Favorites" do
|
149
|
+
group "Holidays" do
|
150
|
+
q "What is your favorite holiday?", :pick => :one, :display_type => :dropdown
|
151
|
+
a "Christmas"
|
152
|
+
a "New Year"
|
153
|
+
a "March 8th"
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
"""
|
158
|
+
When I start the "All Holidays" survey
|
159
|
+
Then a dropdown should exist with the options "Christmas, New Year, March 8th"
|
160
|
+
|
161
|
+
Scenario: Creating another pick one question with an option for other
|
141
162
|
Given the survey
|
142
163
|
"""
|
143
164
|
survey "Favorites" do
|
@@ -157,7 +178,7 @@ Feature: Survey creation
|
|
157
178
|
Then there should be 1 response set with 1 response with:
|
158
179
|
| shrimp |
|
159
180
|
|
160
|
-
Scenario:
|
181
|
+
Scenario: Creating checkboxes with text area
|
161
182
|
Given the survey
|
162
183
|
"""
|
163
184
|
survey "Websites" do
|
@@ -173,7 +194,7 @@ Feature: Survey creation
|
|
173
194
|
Then there should be 3 checkboxes
|
174
195
|
And there should be 3 text areas
|
175
196
|
|
176
|
-
Scenario:
|
197
|
+
Scenario: Creating double letter rule keys
|
177
198
|
Given the survey
|
178
199
|
"""
|
179
200
|
survey "Doubles" do
|
@@ -207,7 +228,7 @@ Feature: Survey creation
|
|
207
228
|
And I press "Two"
|
208
229
|
Then the question "Do you want to be part of an SNL skit?" should be triggered
|
209
230
|
|
210
|
-
Scenario:
|
231
|
+
Scenario: Creating and changing dropdowns
|
211
232
|
Given the survey
|
212
233
|
"""
|
213
234
|
survey "Drop" do
|
@@ -234,7 +255,122 @@ Feature: Survey creation
|
|
234
255
|
And I press "Two"
|
235
256
|
Then there should be 1 response with answer "Dogg"
|
236
257
|
|
237
|
-
|
258
|
+
# Issue 234 - text field with checkbox
|
259
|
+
@javascript
|
260
|
+
Scenario: Creating a question with an option checkbox for other and text input
|
261
|
+
Given the survey
|
262
|
+
"""
|
263
|
+
survey "Favorite Cuisine" do
|
264
|
+
section "Foods" do
|
265
|
+
q "What is the best cuisine?", :pick => :any
|
266
|
+
a "french"
|
267
|
+
a "italian"
|
268
|
+
a "chinese"
|
269
|
+
a "other", :string
|
270
|
+
end
|
271
|
+
end
|
272
|
+
"""
|
273
|
+
When I start the "Favorite Cuisine" survey
|
274
|
+
And I wait 2 seconds
|
275
|
+
And I change "r_4_string_value" to "thai"
|
276
|
+
Then the "other" checkbox should be checked
|
277
|
+
|
278
|
+
# Issue 234 - empty text field with checkbox
|
279
|
+
@javascript
|
280
|
+
Scenario: Creating a question with an option checkbox for other and an empty text input
|
281
|
+
Given the survey
|
282
|
+
"""
|
283
|
+
survey "Favorite Cuisine" do
|
284
|
+
section "Foods" do
|
285
|
+
q "What is the best cuisine?", :pick => :any
|
286
|
+
a "french"
|
287
|
+
a "italian"
|
288
|
+
a "chinese"
|
289
|
+
a "other", :string
|
290
|
+
end
|
291
|
+
end
|
292
|
+
"""
|
293
|
+
When I start the "Favorite Cuisine" survey
|
294
|
+
And I wait 2 seconds
|
295
|
+
And I change "r_4_string_value" to ""
|
296
|
+
Then the "other" checkbox should not be checked
|
297
|
+
|
298
|
+
# Issue 234 - text field with radio buttons
|
299
|
+
@javascript
|
300
|
+
Scenario: Creating a question with an option radio button for other and text input
|
301
|
+
Given the survey
|
302
|
+
"""
|
303
|
+
survey "Favorite Cuisine" do
|
304
|
+
section "Foods" do
|
305
|
+
q "What is the best cuisine?", :pick => :one
|
306
|
+
a "french"
|
307
|
+
a "italian"
|
308
|
+
a "chinese"
|
309
|
+
a "other", :string
|
310
|
+
end
|
311
|
+
end
|
312
|
+
"""
|
313
|
+
When I start the "Favorite Cuisine" survey
|
314
|
+
And I wait 2 seconds
|
315
|
+
And I change "r_1_string_value" to "thai"
|
316
|
+
Then the "other" radiobutton should be checked
|
317
|
+
|
318
|
+
# Issue 234 - empty text field with radio buttons
|
319
|
+
@javascript
|
320
|
+
Scenario: Creating another question with an option radio button for other and text input
|
321
|
+
Given the survey
|
322
|
+
"""
|
323
|
+
survey "Favorite Cuisine" do
|
324
|
+
section "Foods" do
|
325
|
+
q "What is the best cuisine?", :pick => :one
|
326
|
+
a "french"
|
327
|
+
a "italian"
|
328
|
+
a "chinese"
|
329
|
+
a "other", :string
|
330
|
+
end
|
331
|
+
end
|
332
|
+
"""
|
333
|
+
When I start the "Favorite Cuisine" survey
|
334
|
+
And I wait 2 seconds
|
335
|
+
And I change "r_1_string_value" to ""
|
336
|
+
Then the "other" radiobutton should not be checked
|
337
|
+
|
338
|
+
|
339
|
+
# Issue 259 - substitution of the text with Mustache
|
340
|
+
@wip
|
341
|
+
@javascript
|
342
|
+
Scenario: Creating a question with an mustache syntax
|
343
|
+
Given I have survey context of "FakeMustacheContext"
|
344
|
+
Given the survey
|
345
|
+
"""
|
346
|
+
survey "Overall info" do
|
347
|
+
section "Group of questions" do
|
348
|
+
group "Information on {{name}}?", :help_text => "Answer all you know on {{name}}" do
|
349
|
+
label "{{name}} does not work for {{site}}!", :help_text => "Make sure you sure {{name}} doesn't work for {{site}}"
|
350
|
+
|
351
|
+
q "Where does {{name}} live?", :pick => :one,
|
352
|
+
:help_text => "If you don't know where {{name}} lives, skip the question"
|
353
|
+
a "{{name}} lives on North Pole"
|
354
|
+
a "{{name}} lives on South Pole"
|
355
|
+
a "{{name}} doesn't exist"
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
"""
|
360
|
+
When I start the "Overall info" survey
|
361
|
+
And I wait 5 seconds
|
362
|
+
Then I should see "Information on Santa Claus"
|
363
|
+
And I should see "Answer all you know on Santa Claus"
|
364
|
+
And I should see "Santa Claus does not work for Northwestern!"
|
365
|
+
And I should see "Make sure you sure Santa Claus doesn't work for Northwestern"
|
366
|
+
And I should see "Where does Santa Claus live?"
|
367
|
+
And I should see "If you don't know where Santa Claus lives, skip the question"
|
368
|
+
And I should see "Santa Claus lives on North Pole"
|
369
|
+
And I should see "Santa Claus lives on South Pole"
|
370
|
+
And I should see "Santa Claus doesn't exist"
|
371
|
+
|
372
|
+
|
373
|
+
Scenario: Creating and saving grids
|
238
374
|
Given the survey
|
239
375
|
"""
|
240
376
|
survey "Grid" do
|
@@ -262,7 +398,7 @@ Feature: Survey creation
|
|
262
398
|
And I press "One"
|
263
399
|
Then there should be 1 response with answer "1"
|
264
400
|
|
265
|
-
Scenario:
|
401
|
+
Scenario: Creating dates
|
266
402
|
Given the survey
|
267
403
|
"""
|
268
404
|
survey "When" do
|
@@ -271,12 +407,12 @@ Feature: Survey creation
|
|
271
407
|
a "Give me a date", :date
|
272
408
|
end
|
273
409
|
section "Two" do
|
274
|
-
q "Tell us when you
|
275
|
-
a :time
|
410
|
+
q "Tell us when you would like to eat"
|
411
|
+
a "When eat", :time
|
276
412
|
end
|
277
413
|
section "Three" do
|
278
|
-
q "Tell us when you
|
279
|
-
a :datetime
|
414
|
+
q "Tell us when you would like a phone call"
|
415
|
+
a "When phone", :datetime
|
280
416
|
end
|
281
417
|
end
|
282
418
|
"""
|
@@ -285,40 +421,55 @@ Feature: Survey creation
|
|
285
421
|
And I fill in "Give me a date" with "2011-02-14"
|
286
422
|
# 1:30am
|
287
423
|
And I press "Two"
|
288
|
-
And I
|
289
|
-
And I select "30" from "Minute"
|
424
|
+
And I fill in "When eat" with "01:30"
|
290
425
|
# 2/15/11 5:30pm
|
291
426
|
And I press "Three"
|
292
|
-
And I
|
293
|
-
And I select "February" from "Month"
|
294
|
-
And I select "15" from "Day"
|
295
|
-
And I select "17" from "Hour"
|
296
|
-
And I select "30" from "Minute"
|
297
|
-
And I press "One"
|
427
|
+
And I fill in "When phone" with "2011-02-15 17:30:00"
|
298
428
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
429
|
+
# Verification
|
430
|
+
When I press "One"
|
431
|
+
Then the "Give me a date" field should contain "2011-02-14"
|
432
|
+
When I press "Two"
|
433
|
+
Then the "When eat" field should contain "01:30"
|
434
|
+
When I press "Three"
|
435
|
+
Then the "When phone" field should contain "2011-02-15 17:30:00"
|
304
436
|
|
305
437
|
# 2/13/11
|
438
|
+
When I press "One"
|
306
439
|
And I fill in "Give me a date" with "2011-02-13"
|
307
440
|
# 1:30pm
|
308
441
|
And I press "Two"
|
309
|
-
And I
|
442
|
+
And I fill in "When eat" with "13:30"
|
310
443
|
# 2/15/11 5:00pm
|
311
444
|
And I press "Three"
|
312
|
-
And I
|
313
|
-
|
445
|
+
And I fill in "When phone" with "2011-02-15 17:00:00"
|
446
|
+
|
447
|
+
# Verification
|
448
|
+
When I press "One"
|
449
|
+
Then the "Give me a date" field should contain "2011-02-13"
|
450
|
+
When I press "Two"
|
451
|
+
Then the "When eat" field should contain "13:30"
|
452
|
+
When I press "Three"
|
453
|
+
Then the "When phone" field should contain "2011-02-15 17:00:00"
|
314
454
|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
455
|
+
@javascript
|
456
|
+
Scenario: Creating a date
|
457
|
+
Given the survey
|
458
|
+
"""
|
459
|
+
survey "When" do
|
460
|
+
section "One" do
|
461
|
+
q "Tell us when you want to meet"
|
462
|
+
a "Give me a date", :date
|
463
|
+
end
|
464
|
+
end
|
465
|
+
"""
|
466
|
+
When I start the "When" survey
|
467
|
+
And I click "Give me a date"
|
468
|
+
And I follow today's date
|
469
|
+
And I press "Click here to finish"
|
470
|
+
Then there should be a datetime response with today's date
|
320
471
|
|
321
|
-
Scenario:
|
472
|
+
Scenario: Creating images
|
322
473
|
Given the survey
|
323
474
|
"""
|
324
475
|
survey "Images" do
|
@@ -334,7 +485,7 @@ Feature: Survey creation
|
|
334
485
|
And I should see the image "/images/surveyor/prev.gif"
|
335
486
|
|
336
487
|
@javascript
|
337
|
-
Scenario:
|
488
|
+
Scenario: Creating and unchecking checkboxes
|
338
489
|
Given the survey
|
339
490
|
"""
|
340
491
|
survey "Travels" do
|