surveyor 0.18.0 → 0.18.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|