surveyor 0.18.0 → 0.18.1
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 +21 -4
- data/CHANGELOG +19 -0
- data/README.md +2 -3
- data/Rakefile +6 -93
- data/VERSION +1 -1
- data/ci-env.sh +29 -0
- data/features/step_definitions/surveyor_steps.rb +11 -1
- data/features/step_definitions/web_steps.rb +62 -54
- data/features/support/env.rb +40 -2
- data/features/support/paths.rb +12 -4
- data/features/surveyor.feature +34 -0
- data/generators/surveyor/surveyor_generator.rb +1 -1
- data/hudson.rakefile +33 -0
- data/init_testbed.rakefile +55 -0
- data/lib/surveyor/models/answer_methods.rb +9 -5
- data/lib/surveyor/models/dependency_condition_methods.rb +12 -7
- data/lib/surveyor/models/dependency_methods.rb +12 -7
- data/lib/surveyor/models/question_methods.rb +11 -6
- data/lib/surveyor/models/response_methods.rb +9 -4
- data/lib/surveyor/models/response_set_methods.rb +11 -6
- data/lib/surveyor/models/survey_methods.rb +9 -4
- data/lib/surveyor/models/survey_section_methods.rb +10 -5
- data/lib/surveyor/models/validation_condition_methods.rb +13 -8
- data/lib/surveyor/models/validation_methods.rb +11 -6
- data/lib/surveyor/parser.rb +7 -10
- data/lib/surveyor/redcap_parser.rb +2 -9
- data/lib/surveyor/unparser.rb +10 -9
- data/rails/init.rb +1 -0
- data/spec/rcov.opts +1 -1
- data/spec/spec_helper.rb +50 -15
- data/surveyor.gemspec +9 -54
- data/testbed/Gemfile +13 -0
- metadata +22 -99
- data/Gemfile +0 -17
- data/Gemfile.lock +0 -86
- data/init.rb +0 -1
- data/install.rb +0 -1
- data/spec/test_Gemfile +0 -15
- data/spec/test_boot.rb +0 -128
- data/spec/test_preinitializer.rb +0 -21
data/.gitignore
CHANGED
@@ -1,8 +1,25 @@
|
|
1
|
-
|
1
|
+
## MAC OS
|
2
2
|
.DS_Store
|
3
|
+
|
4
|
+
## TEXTMATE
|
5
|
+
*.tmproj
|
6
|
+
tmtags
|
7
|
+
|
8
|
+
## EMACS
|
9
|
+
*~
|
10
|
+
\#*
|
11
|
+
.\#*
|
12
|
+
|
13
|
+
## VIM
|
14
|
+
*.swp
|
15
|
+
|
16
|
+
## PROJECT::GENERAL
|
3
17
|
coverage
|
4
18
|
rdoc
|
5
19
|
pkg
|
6
|
-
|
7
|
-
|
8
|
-
|
20
|
+
|
21
|
+
## PROJECT::SPECIFIC
|
22
|
+
testbed/log/*.log
|
23
|
+
testbed/db/*
|
24
|
+
testbed/.bundle
|
25
|
+
surveys/fixtures/*.yml
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
0.18.1
|
2
|
+
|
3
|
+
* group dependencies. closes #96
|
4
|
+
* fixing grid answers error with parser. closes #95
|
5
|
+
* prevent double inclusion of validations
|
6
|
+
* cleaner setup for hudson
|
7
|
+
* only resolve dependencies during redcap parsing
|
8
|
+
* forgot to uncomment
|
9
|
+
* fix hudson env setup
|
10
|
+
* setup hudson env after rails
|
11
|
+
* add hudson env to testbed init
|
12
|
+
* ci setup
|
13
|
+
* changing path for features files with new testbed
|
14
|
+
* don't double include model methods in unparser
|
15
|
+
* new testbed setup
|
16
|
+
* don't double include model methods in unparser
|
17
|
+
* don't double include model methods in redcap parser
|
18
|
+
* don't double include model methods
|
19
|
+
|
1
20
|
0.18.0
|
2
21
|
|
3
22
|
* finalizing redcap feature. parse dependencies. closes #93
|
data/README.md
CHANGED
@@ -97,9 +97,8 @@ Surveyor depends on Ruby (1.8.7 - 1.9.1), Rails 2.3 and HAML/SASS http://haml.ha
|
|
97
97
|
|
98
98
|
To work on the code fork this github project. Run:
|
99
99
|
|
100
|
-
`
|
101
|
-
`rake testbed`
|
100
|
+
`rake -f init_testbed.rakefile`
|
102
101
|
|
103
|
-
and start writing tests!
|
102
|
+
which will generate a test app in testbed. Run rake spec and rake cucumber there, and start writing tests!
|
104
103
|
|
105
104
|
Copyright (c) 2008-2010 Brian Chamberlain and Mark Yoon, released under the MIT license
|
data/Rakefile
CHANGED
@@ -11,106 +11,19 @@ begin
|
|
11
11
|
gem.authors = ["Brian Chamberlain", "Mark Yoon"]
|
12
12
|
gem.add_dependency 'haml'
|
13
13
|
gem.add_dependency 'fastercsv'
|
14
|
+
gem.add_development_dependency "yard", ">= 0"
|
14
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
16
|
end
|
16
17
|
Jeweler::GemcutterTasks.new
|
17
|
-
|
18
18
|
rescue LoadError
|
19
|
-
puts "Jeweler (or a dependency) not available. Install it with:
|
19
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
20
|
end
|
21
21
|
|
22
22
|
begin
|
23
|
-
require '
|
24
|
-
|
25
|
-
|
26
|
-
task :features => :check_dependencies
|
23
|
+
require 'yard'
|
24
|
+
YARD::Rake::YardocTask.new
|
27
25
|
rescue LoadError
|
28
|
-
task :
|
29
|
-
abort "
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
desc "Set up a rails app for testing in the spec dir"
|
34
|
-
task :testbed => [:"testbed:build_app", :"testbed:copy_files", :"testbed:install_surveyor"]
|
35
|
-
|
36
|
-
namespace "testbed" do
|
37
|
-
RAPPNAME = "test_app" #This is also hardcoded in the spec/spec_helper.rb and gitignore file. Change it there too...
|
38
|
-
|
39
|
-
"Generate rails app in spec dir"
|
40
|
-
task :build_app do
|
41
|
-
directory "spec"
|
42
|
-
chdir("spec") do
|
43
|
-
sh "rails #{RAPPNAME}"
|
44
|
-
puts "Put a test_app in the spec folder"
|
45
|
-
chdir("#{RAPPNAME}") do
|
46
|
-
sh "ruby script/generate rspec"
|
47
|
-
puts "Ran installer for rspec in #{RAPPNAME}"
|
48
|
-
sh "ruby script/generate cucumber --webrat"
|
49
|
-
puts "Ran installer for cucumber in #{RAPPNAME}"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
desc "Copy in setup files to test app"
|
55
|
-
task :copy_files do
|
56
|
-
chdir("spec/#{RAPPNAME}") do
|
57
|
-
sh "cp ../test_Gemfile Gemfile"
|
58
|
-
sh "cp ../test_preinitializer.rb config/preinitializer.rb"
|
59
|
-
sh "cp ../test_boot.rb config/boot.rb"
|
60
|
-
puts "NOTE: These files were created/modified as described here: http://gembundler.com/rails23.html"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
desc "Install surveyor in test app, run migrations, prep test db"
|
65
|
-
task :install_surveyor do
|
66
|
-
sh "gem install surveyor"
|
67
|
-
chdir("spec/#{RAPPNAME}") do
|
68
|
-
sh "bundle install"
|
69
|
-
sh "bundle exec script/generate surveyor"
|
70
|
-
sh "rake db:migrate"
|
71
|
-
sh "rake db:test:prepare"
|
72
|
-
end
|
73
|
-
# I don't think this is needed anymore
|
74
|
-
puts "NOTE: We installed the surveyor gem using 'gem install surveyor' to fix a problem where RVM (or bundler or both) don't let Rails see generators in a gem. ('script/generate surveyor' for example). To remove the gem run `gem uninstall surveyor` to remove the gem version of surveyor leaving the dev version" # Getting around a bug/problem in bundler. see: http://bit.ly/9NZOEz
|
75
|
-
end
|
76
|
-
|
77
|
-
desc "Remove rails test app from spec dir"
|
78
|
-
task :remove do
|
79
|
-
puts "Removing the test_app in the spec folder"
|
80
|
-
sh "rm -rf spec/#{RAPPNAME}"
|
26
|
+
task :yardoc do
|
27
|
+
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
81
28
|
end
|
82
|
-
end # namespace
|
83
|
-
|
84
|
-
require 'spec/rake/spectask'
|
85
|
-
Spec::Rake::SpecTask.new(:spec) do |spec|
|
86
|
-
spec.libs << 'lib' << 'spec'
|
87
|
-
spec.spec_files = FileList.new('spec/**/*_spec.rb') do |fl|
|
88
|
-
fl.exclude(/vendor\/plugins/) #excluding the stuff inthe embedded rails app
|
89
|
-
fl.exclude(/unparse/) #not sure why but this breaks a bunch of specs
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
94
|
-
spec.libs << 'lib' << 'spec'
|
95
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
96
|
-
spec.rcov = true
|
97
29
|
end
|
98
|
-
|
99
|
-
|
100
|
-
task :default => :spec
|
101
|
-
|
102
|
-
require 'rake/rdoctask'
|
103
|
-
Rake::RDocTask.new do |rdoc|
|
104
|
-
if File.exist?('VERSION.yml')
|
105
|
-
config = YAML.load(File.read('VERSION.yml'))
|
106
|
-
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
107
|
-
else
|
108
|
-
version = ""
|
109
|
-
end
|
110
|
-
|
111
|
-
rdoc.rdoc_dir = 'rdoc'
|
112
|
-
rdoc.title = "surveyor #{version}"
|
113
|
-
rdoc.rdoc_files.include('README*')
|
114
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
115
|
-
end
|
116
|
-
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.18.
|
1
|
+
0.18.1
|
data/ci-env.sh
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
######
|
2
|
+
# This is not an executable script. It selects and configures rvm for
|
3
|
+
# bcsec's CI process based on the RVM_RUBY environment variable.
|
4
|
+
#
|
5
|
+
# Use it by sourcing it:
|
6
|
+
#
|
7
|
+
# . ci-env.sh
|
8
|
+
#
|
9
|
+
# Assumes that the create-on-use settings are set in your ~/.rvmrc:
|
10
|
+
#
|
11
|
+
# rvm_install_on_use_flag=1
|
12
|
+
# rvm_gemset_create_on_use_flag=1
|
13
|
+
#
|
14
|
+
# Hudson Build Execute Shell Commands:
|
15
|
+
#
|
16
|
+
# source ci-env.sh
|
17
|
+
# rake -f hudson.rakefile --trace
|
18
|
+
# cd testbed
|
19
|
+
# export RAILS_ENV="hudson"
|
20
|
+
# bundle exec rake spec cucumber
|
21
|
+
|
22
|
+
export rvm_gemset_create_on_use_flag=1
|
23
|
+
export rvm_project_rvmrc=0
|
24
|
+
|
25
|
+
set +xe
|
26
|
+
echo "Loading RVM ree@surveyor-dev"
|
27
|
+
source ~/.rvm/scripts/rvm
|
28
|
+
rvm use ree@surveyor-dev
|
29
|
+
set -xe
|
@@ -3,7 +3,7 @@ Given /^I parse$/ do |string|
|
|
3
3
|
end
|
4
4
|
|
5
5
|
Given /^I parse redcap file "([^"]*)"$/ do |name|
|
6
|
-
Surveyor::RedcapParser.parse File.read(File.join(RAILS_ROOT, '..', '
|
6
|
+
Surveyor::RedcapParser.parse File.read(File.join(RAILS_ROOT, '..', 'features', 'support', name)), name
|
7
7
|
end
|
8
8
|
|
9
9
|
Then /^there should be (\d+) survey(?:s?) with:$/ do |x, table|
|
@@ -44,6 +44,16 @@ Then /^there should be (\d+) dependenc(?:y|ies) with:$/ do |x, table|
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
Then /^there should be (\d+) group dependenc(?:y|ies) with:$/ do |x, table|
|
48
|
+
Dependency.count(:conditions => ["question_group_id NOT NULL"]).should == x.to_i
|
49
|
+
table.hashes.each do |hash|
|
50
|
+
(d = Dependency.find(:first, :conditions => hash)).should_not be_nil
|
51
|
+
d.question_group_id.should_not be_nil
|
52
|
+
d.question_id.should be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
47
57
|
Then /^there should be (\d+) resolved dependency_condition(?:s?) with:$/ do |x, table|
|
48
58
|
DependencyCondition.count.should == x.to_i
|
49
59
|
table.hashes.each do |hash|
|
@@ -6,6 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
require 'uri'
|
9
|
+
require 'cgi'
|
9
10
|
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
|
10
11
|
|
11
12
|
# Commonly used webrat steps
|
@@ -19,23 +20,23 @@ When /^(?:|I )go to (.+)$/ do |page_name|
|
|
19
20
|
visit path_to(page_name)
|
20
21
|
end
|
21
22
|
|
22
|
-
When /^(?:|I )press "([
|
23
|
+
When /^(?:|I )press "([^"]*)"$/ do |button|
|
23
24
|
click_button(button)
|
24
25
|
end
|
25
26
|
|
26
|
-
When /^(?:|I )follow "([
|
27
|
+
When /^(?:|I )follow "([^"]*)"$/ do |link|
|
27
28
|
click_link(link)
|
28
29
|
end
|
29
30
|
|
30
|
-
When /^(?:|I )follow "([
|
31
|
+
When /^(?:|I )follow "([^"]*)" within "([^"]*)"$/ do |link, parent|
|
31
32
|
click_link_within(parent, link)
|
32
33
|
end
|
33
34
|
|
34
|
-
When /^(?:|I )fill in "([
|
35
|
+
When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
|
35
36
|
fill_in(field, :with => value)
|
36
37
|
end
|
37
38
|
|
38
|
-
When /^(?:|I )fill in "([
|
39
|
+
When /^(?:|I )fill in "([^"]*)" for "([^"]*)"$/ do |value, field|
|
39
40
|
fill_in(field, :with => value)
|
40
41
|
end
|
41
42
|
|
@@ -56,13 +57,13 @@ When /^(?:|I )fill in the following:$/ do |fields|
|
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
59
|
-
When /^(?:|I )select "([
|
60
|
+
When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
|
60
61
|
select(value, :from => field)
|
61
62
|
end
|
62
63
|
|
63
64
|
# Use this step in conjunction with Rail's datetime_select helper. For example:
|
64
65
|
# When I select "December 25, 2008 10:00" as the date and time
|
65
|
-
When /^(?:|I )select "([
|
66
|
+
When /^(?:|I )select "([^"]*)" as the date and time$/ do |time|
|
66
67
|
select_datetime(time)
|
67
68
|
end
|
68
69
|
|
@@ -75,7 +76,7 @@ end
|
|
75
76
|
# The following steps would fill out the form:
|
76
77
|
# When I select "November 23, 2004 11:20" as the "Preferred" date and time
|
77
78
|
# And I select "November 25, 2004 10:30" as the "Alternative" date and time
|
78
|
-
When /^(?:|I )select "([
|
79
|
+
When /^(?:|I )select "([^"]*)" as the "([^"]*)" date and time$/ do |datetime, datetime_label|
|
79
80
|
select_datetime(datetime, :from => datetime_label)
|
80
81
|
end
|
81
82
|
|
@@ -83,46 +84,46 @@ end
|
|
83
84
|
# When I select "2:20PM" as the time
|
84
85
|
# Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
|
85
86
|
# will convert the 2:20PM to 14:20 and then select it.
|
86
|
-
When /^(?:|I )select "([
|
87
|
+
When /^(?:|I )select "([^"]*)" as the time$/ do |time|
|
87
88
|
select_time(time)
|
88
89
|
end
|
89
90
|
|
90
91
|
# Use this step when using multiple time_select helpers on a page or you want to
|
91
92
|
# specify the name of the time on the form. For example:
|
92
93
|
# When I select "7:30AM" as the "Gym" time
|
93
|
-
When /^(?:|I )select "([
|
94
|
+
When /^(?:|I )select "([^"]*)" as the "([^"]*)" time$/ do |time, time_label|
|
94
95
|
select_time(time, :from => time_label)
|
95
96
|
end
|
96
97
|
|
97
98
|
# Use this step in conjunction with Rail's date_select helper. For example:
|
98
99
|
# When I select "February 20, 1981" as the date
|
99
|
-
When /^(?:|I )select "([
|
100
|
+
When /^(?:|I )select "([^"]*)" as the date$/ do |date|
|
100
101
|
select_date(date)
|
101
102
|
end
|
102
103
|
|
103
104
|
# Use this step when using multiple date_select helpers on one page or
|
104
105
|
# you want to specify the name of the date on the form. For example:
|
105
106
|
# When I select "April 26, 1982" as the "Date of Birth" date
|
106
|
-
When /^(?:|I )select "([
|
107
|
+
When /^(?:|I )select "([^"]*)" as the "([^"]*)" date$/ do |date, date_label|
|
107
108
|
select_date(date, :from => date_label)
|
108
109
|
end
|
109
110
|
|
110
|
-
When /^(?:|I )check "([
|
111
|
+
When /^(?:|I )check "([^"]*)"$/ do |field|
|
111
112
|
check(field)
|
112
113
|
end
|
113
114
|
|
114
|
-
When /^(?:|I )uncheck "([
|
115
|
+
When /^(?:|I )uncheck "([^"]*)"$/ do |field|
|
115
116
|
uncheck(field)
|
116
117
|
end
|
117
118
|
|
118
|
-
When /^(?:|I )choose "([
|
119
|
+
When /^(?:|I )choose "([^"]*)"$/ do |field|
|
119
120
|
choose(field)
|
120
121
|
end
|
121
122
|
|
122
123
|
# Adds support for validates_attachment_content_type. Without the mime-type getting
|
123
124
|
# passed to attach_file() you will get a "Photo file is not one of the allowed file types."
|
124
125
|
# error message
|
125
|
-
When /^(?:|I )attach the file "([
|
126
|
+
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
|
126
127
|
type = path.split(".")[1]
|
127
128
|
|
128
129
|
case type
|
@@ -139,17 +140,17 @@ When /^(?:|I )attach the file "([^\"]*)" to "([^\"]*)"$/ do |path, field|
|
|
139
140
|
attach_file(field, path, type)
|
140
141
|
end
|
141
142
|
|
142
|
-
Then /^(?:|I )should see "([
|
143
|
-
if
|
143
|
+
Then /^(?:|I )should see "([^"]*)"$/ do |text|
|
144
|
+
if response.respond_to? :should
|
144
145
|
response.should contain(text)
|
145
146
|
else
|
146
147
|
assert_contain text
|
147
148
|
end
|
148
149
|
end
|
149
150
|
|
150
|
-
Then /^(?:|I )should see "([
|
151
|
+
Then /^(?:|I )should see "([^"]*)" within "([^"]*)"$/ do |text, selector|
|
151
152
|
within(selector) do |content|
|
152
|
-
if
|
153
|
+
if content.respond_to? :should
|
153
154
|
content.should contain(text)
|
154
155
|
else
|
155
156
|
hc = Webrat::Matchers::HasContent.new(text)
|
@@ -160,17 +161,17 @@ end
|
|
160
161
|
|
161
162
|
Then /^(?:|I )should see \/([^\/]*)\/$/ do |regexp|
|
162
163
|
regexp = Regexp.new(regexp)
|
163
|
-
if
|
164
|
+
if response.respond_to? :should
|
164
165
|
response.should contain(regexp)
|
165
166
|
else
|
166
167
|
assert_match(regexp, response_body)
|
167
168
|
end
|
168
169
|
end
|
169
170
|
|
170
|
-
Then /^(?:|I )should see \/([^\/]*)\/ within "([
|
171
|
+
Then /^(?:|I )should see \/([^\/]*)\/ within "([^"]*)"$/ do |regexp, selector|
|
171
172
|
within(selector) do |content|
|
172
173
|
regexp = Regexp.new(regexp)
|
173
|
-
if
|
174
|
+
if content.respond_to? :should
|
174
175
|
content.should contain(regexp)
|
175
176
|
else
|
176
177
|
assert_match(regexp, content)
|
@@ -178,17 +179,17 @@ Then /^(?:|I )should see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector|
|
|
178
179
|
end
|
179
180
|
end
|
180
181
|
|
181
|
-
Then /^(?:|I )should not see "([
|
182
|
-
if
|
182
|
+
Then /^(?:|I )should not see "([^"]*)"$/ do |text|
|
183
|
+
if response.respond_to? :should_not
|
183
184
|
response.should_not contain(text)
|
184
185
|
else
|
185
186
|
assert_not_contain(text)
|
186
187
|
end
|
187
188
|
end
|
188
189
|
|
189
|
-
Then /^(?:|I )should not see "([
|
190
|
+
Then /^(?:|I )should not see "([^"]*)" within "([^"]*)"$/ do |text, selector|
|
190
191
|
within(selector) do |content|
|
191
|
-
if
|
192
|
+
if content.respond_to? :should_not
|
192
193
|
content.should_not contain(text)
|
193
194
|
else
|
194
195
|
hc = Webrat::Matchers::HasContent.new(text)
|
@@ -199,17 +200,17 @@ end
|
|
199
200
|
|
200
201
|
Then /^(?:|I )should not see \/([^\/]*)\/$/ do |regexp|
|
201
202
|
regexp = Regexp.new(regexp)
|
202
|
-
if
|
203
|
+
if response.respond_to? :should_not
|
203
204
|
response.should_not contain(regexp)
|
204
205
|
else
|
205
206
|
assert_not_contain(regexp)
|
206
207
|
end
|
207
208
|
end
|
208
209
|
|
209
|
-
Then /^(?:|I )should not see \/([^\/]*)\/ within "([
|
210
|
+
Then /^(?:|I )should not see \/([^\/]*)\/ within "([^"]*)"$/ do |regexp, selector|
|
210
211
|
within(selector) do |content|
|
211
212
|
regexp = Regexp.new(regexp)
|
212
|
-
if
|
213
|
+
if content.respond_to? :should_not
|
213
214
|
content.should_not contain(regexp)
|
214
215
|
else
|
215
216
|
assert_no_match(regexp, content)
|
@@ -217,51 +218,58 @@ Then /^(?:|I )should not see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, select
|
|
217
218
|
end
|
218
219
|
end
|
219
220
|
|
220
|
-
Then /^the "([
|
221
|
-
|
222
|
-
|
221
|
+
Then /^the "([^"]*)" field should contain "([^"]*)"$/ do |field, value|
|
222
|
+
field_value = field_labeled(field).value
|
223
|
+
if field_value.respond_to? :should
|
224
|
+
field_value.should =~ /#{value}/
|
223
225
|
else
|
224
|
-
assert_match(/#{value}/,
|
226
|
+
assert_match(/#{value}/, field_value)
|
225
227
|
end
|
226
228
|
end
|
227
229
|
|
228
|
-
Then /^the "([
|
229
|
-
|
230
|
-
|
230
|
+
Then /^the "([^"]*)" field should not contain "([^"]*)"$/ do |field, value|
|
231
|
+
field_value = field_labeled(field).value
|
232
|
+
if field_value.respond_to? :should_not
|
233
|
+
field_value.should_not =~ /#{value}/
|
231
234
|
else
|
232
|
-
assert_no_match(/#{value}/,
|
235
|
+
assert_no_match(/#{value}/, field_value)
|
233
236
|
end
|
234
237
|
end
|
235
238
|
|
236
|
-
Then /^the "([
|
237
|
-
|
238
|
-
|
239
|
+
Then /^the "([^"]*)" checkbox should be checked$/ do |label|
|
240
|
+
field = field_labeled(label)
|
241
|
+
if field.respond_to? :should
|
242
|
+
field.should be_checked
|
239
243
|
else
|
240
|
-
assert
|
244
|
+
assert field.checked?
|
241
245
|
end
|
242
246
|
end
|
243
247
|
|
244
|
-
Then /^the "([
|
245
|
-
|
246
|
-
|
248
|
+
Then /^the "([^"]*)" checkbox should not be checked$/ do |label|
|
249
|
+
field = field_labeled(label)
|
250
|
+
if field.respond_to? :should_not
|
251
|
+
field.should_not be_checked
|
247
252
|
else
|
248
|
-
assert !
|
253
|
+
assert !field.checked?
|
249
254
|
end
|
250
255
|
end
|
251
256
|
|
252
257
|
Then /^(?:|I )should be on (.+)$/ do |page_name|
|
253
|
-
|
254
|
-
|
258
|
+
current_path = URI.parse(current_url).path
|
259
|
+
if current_path.respond_to? :should
|
260
|
+
current_path.should == path_to(page_name)
|
255
261
|
else
|
256
|
-
assert_equal path_to(page_name),
|
262
|
+
assert_equal path_to(page_name), current_path
|
257
263
|
end
|
258
264
|
end
|
259
265
|
|
260
266
|
Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
267
|
+
query = URI.parse(current_url).query
|
268
|
+
actual_params = query ? CGI.parse(query) : {}
|
269
|
+
expected_params = {}
|
270
|
+
expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
|
271
|
+
|
272
|
+
if actual_params.respond_to? :should
|
265
273
|
actual_params.should == expected_params
|
266
274
|
else
|
267
275
|
assert_equal expected_params, actual_params
|
@@ -270,4 +278,4 @@ end
|
|
270
278
|
|
271
279
|
Then /^show me the page$/ do
|
272
280
|
save_and_open_page
|
273
|
-
end
|
281
|
+
end
|