surveyor 0.16.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,4 +3,6 @@
3
3
  coverage
4
4
  rdoc
5
5
  pkg
6
- surveys/fixtures/*.yml
6
+ spec/test_app/**
7
+ .bundle
8
+ surveys/fixtures/*.yml
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm_gemset_create_on_use_flag=1; rvm gemset use surveyor-dev
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source :rubygems
2
+
3
+ gem 'rails', '2.3.10'
4
+ gem 'jeweler'
5
+ gem 'rspec', '~> 1.3'
6
+ gem 'rspec-rails', '1.3.3'
7
+ gem 'sqlite3-ruby', '1.2.5' #Using this version for ruby 1.8.7 compatibility reasons
8
+ gem 'webrat'
9
+ gem 'cucumber', '~> 0.8.0'
10
+ gem 'cucumber-rails'
11
+ gem 'database_cleaner'
12
+ gem 'factory_girl'
13
+ gem 'yard', '~> 0.6'
14
+
15
+ plugin_root = File.dirname(__FILE__)
16
+ gem 'surveyor', :path => plugin_root
17
+
data/Gemfile.lock ADDED
@@ -0,0 +1,86 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ surveyor (0.16.1)
5
+ fastercsv
6
+ haml
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ actionmailer (2.3.10)
12
+ actionpack (= 2.3.10)
13
+ actionpack (2.3.10)
14
+ activesupport (= 2.3.10)
15
+ rack (~> 1.1.0)
16
+ activerecord (2.3.10)
17
+ activesupport (= 2.3.10)
18
+ activeresource (2.3.10)
19
+ activesupport (= 2.3.10)
20
+ activesupport (2.3.10)
21
+ builder (2.1.2)
22
+ cucumber (0.8.5)
23
+ builder (~> 2.1.2)
24
+ diff-lcs (~> 1.1.2)
25
+ gherkin (~> 2.1.4)
26
+ json_pure (~> 1.4.3)
27
+ term-ansicolor (~> 1.0.4)
28
+ cucumber-rails (0.3.2)
29
+ cucumber (>= 0.8.0)
30
+ database_cleaner (0.6.0)
31
+ diff-lcs (1.1.2)
32
+ factory_girl (1.3.2)
33
+ fastercsv (1.5.3)
34
+ gemcutter (0.6.1)
35
+ gherkin (2.1.5)
36
+ trollop (~> 1.16.2)
37
+ git (1.2.5)
38
+ haml (3.0.23)
39
+ jeweler (1.4.0)
40
+ gemcutter (>= 0.1.0)
41
+ git (>= 1.2.5)
42
+ rubyforge (>= 2.0.0)
43
+ json_pure (1.4.6)
44
+ nokogiri (1.4.3.1)
45
+ rack (1.1.0)
46
+ rack-test (0.5.6)
47
+ rack (>= 1.0)
48
+ rails (2.3.10)
49
+ actionmailer (= 2.3.10)
50
+ actionpack (= 2.3.10)
51
+ activerecord (= 2.3.10)
52
+ activeresource (= 2.3.10)
53
+ activesupport (= 2.3.10)
54
+ rake (>= 0.8.3)
55
+ rake (0.8.7)
56
+ rspec (1.3.1)
57
+ rspec-rails (1.3.3)
58
+ rack (>= 1.0.0)
59
+ rspec (= 1.3.1)
60
+ rubyforge (2.0.4)
61
+ json_pure (>= 1.1.7)
62
+ sqlite3-ruby (1.2.5)
63
+ term-ansicolor (1.0.5)
64
+ trollop (1.16.2)
65
+ webrat (0.7.2)
66
+ nokogiri (>= 1.2.0)
67
+ rack (>= 1.0)
68
+ rack-test (>= 0.5.3)
69
+ yard (0.6.1)
70
+
71
+ PLATFORMS
72
+ ruby
73
+
74
+ DEPENDENCIES
75
+ cucumber (~> 0.8.0)
76
+ cucumber-rails
77
+ database_cleaner
78
+ factory_girl
79
+ jeweler
80
+ rails (= 2.3.10)
81
+ rspec (~> 1.3)
82
+ rspec-rails (= 1.3.3)
83
+ sqlite3-ruby (= 1.2.5)
84
+ surveyor!
85
+ webrat
86
+ yard (~> 0.6)
data/README.md CHANGED
@@ -55,13 +55,7 @@ The survey above shows a couple simple question types. The first one is a "pick
55
55
 
56
56
  # Installation
57
57
 
58
- As a plugin:
59
-
60
- gem install haml
61
- gem install fastercsv
62
- script/plugin install git://github.com/breakpointer/surveyor.git
63
-
64
- Or as a gem:
58
+ As a gem:
65
59
 
66
60
  # in environment.rb
67
61
  config.gem "surveyor", :source => 'http://gemcutter.org'
@@ -70,7 +64,7 @@ Or as a gem:
70
64
 
71
65
  Or as a gem (with bundler):
72
66
 
73
- # in environment.rb
67
+ # in Gemfile
74
68
  gem "surveyor"
75
69
 
76
70
  bundle install
@@ -114,6 +108,25 @@ To work on the plugin code (for enhancements, and bug fixes, etc...) fork this g
114
108
 
115
109
  # Changes
116
110
 
111
+ 0.17.0
112
+
113
+ * cucumber tests now work
114
+ * correction to post install notes in rakefile
115
+ * fix to rakefile instructions
116
+ * un-dryed the gemfile to try to fix a gem location problem
117
+ * added test boot file for test app usage, modified the rake task to copy in this file as well
118
+ * removed unparser from specs, it was breakin a bunch of them. deferred investigation
119
+ * got specs running and passing by adding internal rails app
120
+ * added rvmrc to create default gemset and added bundler
121
+ * Plugin installation is no longer supported
122
+ * wrong information in readme
123
+ * Merge branch 'master' into issue87
124
+ * Add count operator example to kitchen sink survey
125
+ * Generalize count operator to handle < <= >= !=
126
+ * Parse/unparse surveys w/ count> DC operator
127
+ * Add custom validation to handle count operator
128
+ * Remove count> "operator."
129
+
117
130
  0.16.1
118
131
 
119
132
  * fixed surveyor.sections translation line
data/Rakefile CHANGED
@@ -19,10 +19,80 @@ rescue LoadError
19
19
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
20
20
  end
21
21
 
22
+ begin
23
+ require 'cucumber/rake/task'
24
+ Cucumber::Rake::Task.new(:features)
25
+
26
+ task :features => :check_dependencies
27
+ rescue LoadError
28
+ task :features do
29
+ abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
30
+ end
31
+ end
32
+
33
+
34
+ namespace "testbed" do
35
+
36
+ RAPPNAME = "test_app" #This is also hardcoded in the spec/spec_helper.rb and gitignore file. Change it there too...
37
+
38
+ desc "Install rails base app in spec dir"
39
+ task :build_app do
40
+ directory "spec"
41
+ chdir("spec") do
42
+ sh "rails #{RAPPNAME}"
43
+ puts "Put a test_app in the spec folder"
44
+ chdir("#{RAPPNAME}") do
45
+ sh "ruby script/generate rspec"
46
+ puts "Ran installer for rspec in #{RAPPNAME}"
47
+ sh "ruby script/generate cucumber --webrat"
48
+ puts "Ran installer for cucumber in #{RAPPNAME}"
49
+ end
50
+ end
51
+ end
52
+
53
+ desc "Copy in setup files to test app"
54
+ task :copy_files do
55
+ chdir("spec/#{RAPPNAME}") do
56
+ sh "cp ../test_Gemfile Gemfile"
57
+ sh "cp ../test_preinitializer.rb config/preinitializer.rb"
58
+ sh "cp ../test_boot.rb config/boot.rb"
59
+ puts "NOTE: These files were created/modified as described here: http://gembundler.com/rails23.html"
60
+ end
61
+ end
62
+
63
+ desc "Install surveyor in rails base app, runs migrations, preps for testing"
64
+ task :install_surveyor do
65
+ sh "gem install surveyor"
66
+ chdir("spec/#{RAPPNAME}") do
67
+ sh "bundle install"
68
+ sh "bundle exec script/generate surveyor"
69
+ sh "rake db:migrate"
70
+ sh "rake db:test:prepare"
71
+ end
72
+ # I don't think this is needed anymore
73
+ 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
74
+ end
75
+
76
+ desc "Remove rails base app in spec dir"
77
+ task :remove_app do
78
+ puts "Removing the test_app in the spec folder"
79
+ sh "rm -rf spec/#{RAPPNAME}"
80
+ end
81
+
82
+ desc "Setup for the test app (create)"
83
+ task :setup => [:build_app, :copy_files, :install_surveyor]
84
+ desc "Teardown for the test app (remove)"
85
+ task :teardown => [:remove_app]
86
+
87
+ end # namespace
88
+
22
89
  require 'spec/rake/spectask'
23
90
  Spec::Rake::SpecTask.new(:spec) do |spec|
24
91
  spec.libs << 'lib' << 'spec'
25
- spec.spec_files = FileList['spec/**/*_spec.rb']
92
+ spec.spec_files = FileList.new('spec/**/*_spec.rb') do |fl|
93
+ fl.exclude(/vendor\/plugins/) #excluding the stuff inthe embedded rails app
94
+ fl.exclude(/unparse/) #not sure why but this breaks a bunch of specs
95
+ end
26
96
  end
27
97
 
28
98
  Spec::Rake::SpecTask.new(:rcov) do |spec|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.16.1
1
+ 0.17.0
@@ -46,7 +46,7 @@ Then /^there should be (\d+) resolved dependency_condition(?:s?) with:$/ do |x,
46
46
  d = DependencyCondition.find(:first, :conditions => hash)
47
47
  d.should_not be_nil
48
48
  d.question.should_not be_nil
49
- d.answer.should_not be_nil
49
+ d.answer.should_not be_nil unless d.operator.match(/^count[<>=!]{1,2}\d+/)
50
50
  end
51
51
  end
52
52
 
@@ -5,7 +5,7 @@
5
5
  # files.
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "cucumber"
8
- require File.expand_path(File.dirname(__FILE__) + '/../../../../../config/environment')
8
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec/test_app/config/environment')
9
9
 
10
10
  require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
11
11
  require 'cucumber/rails/world'
@@ -15,43 +15,4 @@ require 'cucumber/web/tableish'
15
15
  require 'webrat'
16
16
  require 'webrat/core/matchers'
17
17
 
18
- Webrat.configure do |config|
19
- config.mode = :rails
20
- config.open_error_files = false # Set to true if you want error pages to pop up in the browser
21
- end
22
-
23
-
24
- # If you set this to false, any error raised from within your app will bubble
25
- # up to your step definition and out to cucumber unless you catch it somewhere
26
- # on the way. You can make Rails rescue errors and render error pages on a
27
- # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
28
- #
29
- # If you set this to true, Rails will rescue all errors and render error
30
- # pages, more or less in the same way your application would behave in the
31
- # default production environment. It's not recommended to do this for all
32
- # of your scenarios, as this makes it hard to discover errors in your application.
33
- ActionController::Base.allow_rescue = false
34
-
35
- # If you set this to true, each scenario will run in a database transaction.
36
- # You can still turn off transactions on a per-scenario basis, simply tagging
37
- # a feature or scenario with the @no-txn tag. If you are using Capybara,
38
- # tagging with @culerity or @javascript will also turn transactions off.
39
- #
40
- # If you set this to false, transactions will be off for all scenarios,
41
- # regardless of whether you use @no-txn or not.
42
- #
43
- # Beware that turning transactions off will leave data in your database
44
- # after each scenario, which can lead to hard-to-debug failures in
45
- # subsequent scenarios. If you do this, we recommend you create a Before
46
- # block that will explicitly put your database in a known state.
47
- Cucumber::Rails::World.use_transactional_fixtures = true
48
-
49
- # How to clean your database when transactions are turned off. See
50
- # http://github.com/bmabey/database_cleaner for more info.
51
- if defined?(ActiveRecord::Base)
52
- begin
53
- require 'database_cleaner'
54
- DatabaseCleaner.strategy = :truncation
55
- rescue LoadError => ignore_if_database_cleaner_not_present
56
- end
57
- end
18
+ # Since we're using the test_app, and it has cucumber installed we don't need to do any configuration here.
@@ -119,22 +119,35 @@ Feature: Survey creation
119
119
  a :text, :custom_class => 'mapper'
120
120
  validation :rule => "AC"
121
121
  vcondition_AC "=~", :regexp => /[0-9a-zA-z\. #]/
122
+
123
+ q_2 "Which colors do you loathe?", :pick => :any
124
+ a_1 "red"
125
+ a_2 "blue"
126
+ a_3 "green"
127
+ a_4 "yellow"
128
+
129
+ q_2a "Please explain why you hate so many colors?"
130
+ a_1 "explanation", :text
131
+ dependency :rule => "Z"
132
+ condition_Z :q_2, "count>2"
122
133
  end
123
134
  end
124
135
  """
125
136
  Then there should be 1 survey with:
126
137
  | title |
127
138
  | Dependency and validation survey |
128
- And there should be 4 questions with:
139
+ And there should be 6 questions with:
129
140
  | text | pick | display_type | custom_class |
130
141
  | What... is your name? (e.g. It is 'Arthur', King of the Britons) | none | default | nil |
131
142
  | What is your address? | none | default | address |
132
- And there should be 1 dependency with:
143
+ And there should be 2 dependency with:
133
144
  | rule |
134
145
  | A |
135
- And there should be 1 resolved dependency_condition with:
146
+ | Z |
147
+ And there should be 2 resolved dependency_condition with:
136
148
  | rule_key |
137
149
  | A |
150
+ | Z |
138
151
  And there should be 2 validations with:
139
152
  | rule |
140
153
  | A |
@@ -64,7 +64,7 @@ body
64
64
  :padding 0.5em 1em 1em 0.3em
65
65
  :margin 0
66
66
  :font-size 2em
67
- :font-weight bolid
67
+ :font-weight bold
68
68
  .previous_section
69
69
  :font-size 0.8em
70
70
  :margin -0.6em 0 0.5em -1em
@@ -32,6 +32,15 @@ survey "&#8220;Kitchen Sink&#8221; survey" do
32
32
  condition_C :q_2, "==", :a_3
33
33
  condition_D :q_2, "==", :a_4
34
34
 
35
+ # A dependant question demonstrating the count operator. The
36
+ # dependency condition checks the answer count for the referenced question.
37
+ # It understands conditions of the form count> count< count>= count<=
38
+ # count!=
39
+ q_2b "Please explain why you dislike so many colors?"
40
+ a_1 "explanation", :text
41
+ dependency :rule => "Z"
42
+ condition_Z :q_2, "count>2"
43
+
35
44
  # When :pick isn't specified, the default is :none (no checkbox or radio button)
36
45
  q_montypython3 "What... is your name? (e.g. It is 'Arthur', King of the Britons)"
37
46
  a_1 :string
@@ -27,4 +27,4 @@ module Surveyor
27
27
 
28
28
  end
29
29
  end
30
- end
30
+ end
@@ -10,10 +10,10 @@ module Surveyor
10
10
 
11
11
  # Validations
12
12
  base.send :validates_presence_of, :operator, :rule_key
13
- base.send :validates_inclusion_of, :operator, :in => Surveyor::Common::OPERATORS
13
+ base.send :validate, :validates_operator
14
14
  base.send :validates_uniqueness_of, :rule_key, :scope => :dependency_id
15
15
  # this causes issues with building and saving
16
- # base.send :validates_numericality_of, :question_id, :answer_id, :dependency_id
16
+ # base.send :validates_numericality_of, :question_id, :dependency_id
17
17
 
18
18
  base.send :include, Surveyor::ActsAsResponse # includes "as" instance method
19
19
 
@@ -27,22 +27,44 @@ module Surveyor
27
27
 
28
28
  # Instance methods
29
29
  def to_hash(response_set)
30
- response = response_set.responses.detect{|r| r.answer_id.to_i == self.answer_id.to_i} || false # eval("nil and false") => nil so return false if no response is found
31
- {rule_key.to_sym => (response and self.is_met?(response))}
30
+ # all responses to associated question
31
+ responses = response_set.responses.select do |r|
32
+ question && question.answers.include?(r.answer)
33
+ end
34
+ {rule_key.to_sym => (!responses.empty? and self.is_met?(responses))}
32
35
  end
33
36
 
34
- # Checks to see if the response passed in meets the dependency condition
35
- def is_met?(response)
37
+ # Checks to see if the responses passed in meet the dependency condition
38
+ def is_met?(responses)
39
+ # response to associated answer if available, or first response
40
+ response = if self.answer_id
41
+ responses.detect do |r|
42
+ r.answer == self.answer
43
+ end
44
+ end || responses.first
36
45
  klass = response.answer.response_class
37
46
  return case self.operator
38
47
  when "==", "<", ">", "<=", ">="
39
48
  response.as(klass).send(self.operator, self.as(klass))
40
49
  when "!="
41
50
  !(response.as(klass) == self.as(klass))
51
+ when /^count[<>=]{1,2}\d+$/
52
+ op, i = self.operator.scan(/^count([<>!=]{1,2})(\d+)$/).flatten
53
+ responses.count.send(op, i.to_i)
54
+ when /^count!=\d+$/
55
+ !(responses.count == self.operator.scan(/\d+/).first.to_i)
42
56
  else
43
57
  false
44
58
  end
45
59
  end
60
+
61
+ protected
62
+
63
+ def validates_operator
64
+ errors.add(:operator, "Invalid operator") unless
65
+ Surveyor::Common::OPERATORS.include?(self.operator) ||
66
+ self.operator && self.operator.match(/^count(<|>|==|>=|<=|!=)(\d+)/)
67
+ end
46
68
  end
47
69
  end
48
- end
70
+ end
@@ -171,12 +171,20 @@ class DependencyCondition < ActiveRecord::Base
171
171
 
172
172
  # build and set context
173
173
  a0, a1, a2 = args
174
- context[:dependency_condition] = context[:dependency].dependency_conditions.build({
175
- :context_reference => context,
176
- :operator => a1 || "==",
177
- :question_reference => a0.to_s.gsub("q_", ""),
178
- :rule_key => reference_identifier}.merge(a2.is_a?(Hash) ? a2 : {:answer_reference => a2.to_s.gsub("a_", "")}))
174
+ context[:dependency_condition] = context[:dependency].
175
+ dependency_conditions.build(
176
+ {
177
+ :context_reference => context,
178
+ :operator => a1 || "==",
179
+ :question_reference => a0.to_s.gsub("q_", ""),
180
+ :rule_key => reference_identifier
181
+ }.merge(
182
+ a2.is_a?(Hash) ? a2 : { :answer_reference =>
183
+ a2.to_s.gsub("a_", "") }
184
+ )
185
+ )
179
186
  end
187
+
180
188
  def resolve_references
181
189
  if context_reference
182
190
  # Looking up references to questions and answers for linking the dependency objects
@@ -185,8 +193,8 @@ class DependencyCondition < ActiveRecord::Base
185
193
  print (self.answer = context_reference[:answer_references][question_reference][answer_reference]) ? "found answer:#{answer_reference} " : "lost! answer:#{answer_reference} "
186
194
  end
187
195
  end
188
-
189
196
  end
197
+
190
198
  class Answer < ActiveRecord::Base
191
199
  # nonblock
192
200
  include Surveyor::Models::AnswerMethods
@@ -97,7 +97,7 @@ class DependencyCondition < ActiveRecord::Base
97
97
  dsl << " condition"
98
98
  dsl << "_#{rule_key}" unless rule_key.blank?
99
99
  dsl << " :q_#{question.reference_identifier}, \"#{operator}\""
100
- dsl << (attrs.blank? ? ", {:answer_reference=>\"#{answer.reference_identifier}\"}\n" : ", {#{attrs.inspect.gsub(/\{|\}/, "")}, :answer_reference=>\"#{answer.reference_identifier}\"}\n")
100
+ dsl << (attrs.blank? ? ", {:answer_reference=>\"#{answer && answer.reference_identifier}\"}\n" : ", {#{attrs.inspect.gsub(/\{|\}/, "")}, :answer_reference=>\"#{answer && answer.reference_identifier}\"}\n")
101
101
  end
102
102
  end
103
103
  class Answer < ActiveRecord::Base
@@ -3,7 +3,9 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
3
 
4
4
  describe DependencyCondition, "Class methods" do
5
5
  it "should have a list of operators" do
6
- %w(== != < > <= >=).each{|operator| DependencyCondition.operators.include?(operator).should be_true }
6
+ %w(== != < > <= >=).each do |operator|
7
+ DependencyCondition.operators.include?(operator).should be_true
8
+ end
7
9
  end
8
10
  end
9
11
 
@@ -16,14 +18,12 @@ describe DependencyCondition, "instance" do
16
18
  @dependency_condition.should be_valid
17
19
  end
18
20
 
19
- it "should be invalid without a parent dependency_id, question_id, answer_id" do
21
+ it "should be invalid without a parent dependency_id, question_id" do
20
22
  # this causes issues with building and saving
21
23
  # @dependency_condition.dependency_id = nil
22
24
  # @dependency_condition.should have(1).errors_on(:dependency_id)
23
25
  # @dependency_condition.question_id = nil
24
26
  # @dependency_condition.should have(1).errors_on(:question_id)
25
- # @dependency_condition.answer_id = nil
26
- # @dependency_condition.should have(1).errors_on(:answer_id)
27
27
  end
28
28
 
29
29
  it "should be invalid without an operator" do
@@ -59,15 +59,15 @@ describe DependencyCondition, "instance" do
59
59
  it "should evaluate within the context of a response set object" do
60
60
  @response = Response.new(:question_id => 45, :response_set_id => 40, :answer_id => 23)
61
61
  @response.answer = Answer.new(:question_id => 45, :response_class => "answer")
62
- @dependency_condition.is_met?(@response).should be_true
62
+ @dependency_condition.is_met?([@response]).should be_true
63
63
  # inversion
64
64
  @alt_response = Response.new(:question_id => 45, :response_set_id => 40, :answer_id => 55)
65
65
  @alt_response.answer = Answer.new(:question_id => 45, :response_class => "answer")
66
66
 
67
- @dependency_condition.is_met?(@alt_response).should be_false
67
+ @dependency_condition.is_met?([@alt_response]).should be_false
68
68
  end
69
69
 
70
- it "converts to a hash for evaluation by the depedency object" do
70
+ it "converts to a hash for evaluation by the dependency object" do
71
71
  @response = Response.new(:question_id => 45, :response_set_id => 40, :answer_id => 23)
72
72
  @rs = mock(ResponseSet, :responses => [@response])
73
73
  @dependency_condition.stub!(:is_met?).and_return(true)
@@ -75,7 +75,7 @@ describe DependencyCondition, "instance" do
75
75
  end
76
76
  end
77
77
 
78
- describe DependencyCondition, "evaluting the resonse_set state" do
78
+ describe DependencyCondition, "evaluating the response_set state" do
79
79
 
80
80
  describe "when if given a response object whether the dependency is satisfied using '=='" do
81
81
  before(:each) do
@@ -90,45 +90,45 @@ describe DependencyCondition, "evaluting the resonse_set state" do
90
90
  end
91
91
 
92
92
  it "knows checkbox/radio type response" do
93
- @dep_c.is_met?(@response).should be_true
93
+ @dep_c.is_met?([@response]).should be_true
94
94
  @dep_c.answer_id = 12
95
- @dep_c.is_met?(@response).should be_false
95
+ @dep_c.is_met?([@response]).should be_false
96
96
  end
97
97
 
98
98
  it "knows string value response" do
99
99
  @select_answer.response_class = "string"
100
100
  @response.string_value = "hello123"
101
101
  @dep_c.string_value = "hello123"
102
- @dep_c.is_met?(@response).should be_true
102
+ @dep_c.is_met?([@response]).should be_true
103
103
  @response.string_value = "foo_abc"
104
- @dep_c.is_met?(@response).should be_false
104
+ @dep_c.is_met?([@response]).should be_false
105
105
  end
106
106
 
107
107
  it "knows a text value response" do
108
108
  @select_answer.response_class = "text"
109
109
  @response.text_value = "hello this is some text for comparison"
110
110
  @dep_c.text_value = "hello this is some text for comparison"
111
- @dep_c.is_met?(@response).should be_true
111
+ @dep_c.is_met?([@response]).should be_true
112
112
  @response.text_value = "Not the same text"
113
- @dep_c.is_met?(@response).should be_false
113
+ @dep_c.is_met?([@response]).should be_false
114
114
  end
115
115
 
116
116
  it "knows an integer value response" do
117
117
  @select_answer.response_class = "integer"
118
118
  @response.integer_value = 10045
119
119
  @dep_c.integer_value = 10045
120
- @dep_c.is_met?(@response).should be_true
120
+ @dep_c.is_met?([@response]).should be_true
121
121
  @response.integer_value = 421
122
- @dep_c.is_met?(@response).should be_false
122
+ @dep_c.is_met?([@response]).should be_false
123
123
  end
124
124
 
125
125
  it "knows a float value response" do
126
126
  @select_answer.response_class = "float"
127
127
  @response.float_value = 121.1
128
128
  @dep_c.float_value = 121.1
129
- @dep_c.is_met?(@response).should be_true
129
+ @dep_c.is_met?([@response]).should be_true
130
130
  @response.float_value = 130.123
131
- @dep_c.is_met?(@response).should be_false
131
+ @dep_c.is_met?([@response]).should be_false
132
132
  end
133
133
 
134
134
  end
@@ -146,45 +146,45 @@ describe DependencyCondition, "evaluting the resonse_set state" do
146
146
  end
147
147
 
148
148
  it "knows checkbox/radio type response" do
149
- @dep_c.is_met?(@response).should be_false
149
+ @dep_c.is_met?([@response]).should be_false
150
150
  @dep_c.answer_id = 12
151
- @dep_c.is_met?(@response).should be_true
151
+ @dep_c.is_met?([@response]).should be_true
152
152
  end
153
153
 
154
154
  it "knows string value response" do
155
155
  @select_answer.response_class = "string"
156
156
  @response.string_value = "hello123"
157
157
  @dep_c.string_value = "hello123"
158
- @dep_c.is_met?(@response).should be_false
158
+ @dep_c.is_met?([@response]).should be_false
159
159
  @response.string_value = "foo_abc"
160
- @dep_c.is_met?(@response).should be_true
160
+ @dep_c.is_met?([@response]).should be_true
161
161
  end
162
162
 
163
163
  it "knows a text value response" do
164
164
  @select_answer.response_class = "text"
165
165
  @response.text_value = "hello this is some text for comparison"
166
166
  @dep_c.text_value = "hello this is some text for comparison"
167
- @dep_c.is_met?(@response).should be_false
167
+ @dep_c.is_met?([@response]).should be_false
168
168
  @response.text_value = "Not the same text"
169
- @dep_c.is_met?(@response).should be_true
169
+ @dep_c.is_met?([@response]).should be_true
170
170
  end
171
171
 
172
172
  it "knows an integer value response" do
173
173
  @select_answer.response_class = "integer"
174
174
  @response.integer_value = 10045
175
175
  @dep_c.integer_value = 10045
176
- @dep_c.is_met?(@response).should be_false
176
+ @dep_c.is_met?([@response]).should be_false
177
177
  @response.integer_value = 421
178
- @dep_c.is_met?(@response).should be_true
178
+ @dep_c.is_met?([@response]).should be_true
179
179
  end
180
180
 
181
181
  it "knows a float value response" do
182
182
  @select_answer.response_class = "float"
183
183
  @response.float_value = 121.1
184
184
  @dep_c.float_value = 121.1
185
- @dep_c.is_met?(@response).should be_false
185
+ @dep_c.is_met?([@response]).should be_false
186
186
  @response.float_value = 130.123
187
- @dep_c.is_met?(@response).should be_true
187
+ @dep_c.is_met?([@response]).should be_true
188
188
  end
189
189
 
190
190
  end
@@ -203,18 +203,18 @@ describe DependencyCondition, "evaluting the resonse_set state" do
203
203
  @select_answer.response_class = "integer"
204
204
  @response.integer_value = 50
205
205
  @dep_c.integer_value = 100
206
- @dep_c.is_met?(@response).should be_true
206
+ @dep_c.is_met?([@response]).should be_true
207
207
  @response.integer_value = 421
208
- @dep_c.is_met?(@response).should be_false
208
+ @dep_c.is_met?([@response]).should be_false
209
209
  end
210
210
 
211
211
  it "knows operator on float value response" do
212
212
  @select_answer.response_class = "float"
213
213
  @response.float_value = 5.1
214
214
  @dep_c.float_value = 121.1
215
- @dep_c.is_met?(@response).should be_true
215
+ @dep_c.is_met?([@response]).should be_true
216
216
  @response.float_value = 130.123
217
- @dep_c.is_met?(@response).should be_false
217
+ @dep_c.is_met?([@response]).should be_false
218
218
  end
219
219
 
220
220
  end
@@ -233,22 +233,22 @@ describe DependencyCondition, "evaluting the resonse_set state" do
233
233
  @select_answer.response_class = "integer"
234
234
  @response.integer_value = 50
235
235
  @dep_c.integer_value = 100
236
- @dep_c.is_met?(@response).should be_true
236
+ @dep_c.is_met?([@response]).should be_true
237
237
  @response.integer_value = 100
238
- @dep_c.is_met?(@response).should be_true
238
+ @dep_c.is_met?([@response]).should be_true
239
239
  @response.integer_value = 421
240
- @dep_c.is_met?(@response).should be_false
240
+ @dep_c.is_met?([@response]).should be_false
241
241
  end
242
242
 
243
243
  it "knows operator on float value response" do
244
244
  @select_answer.response_class = "float"
245
245
  @response.float_value = 5.1
246
246
  @dep_c.float_value = 121.1
247
- @dep_c.is_met?(@response).should be_true
247
+ @dep_c.is_met?([@response]).should be_true
248
248
  @response.float_value = 121.1
249
- @dep_c.is_met?(@response).should be_true
249
+ @dep_c.is_met?([@response]).should be_true
250
250
  @response.float_value = 130.123
251
- @dep_c.is_met?(@response).should be_false
251
+ @dep_c.is_met?([@response]).should be_false
252
252
  end
253
253
 
254
254
  end
@@ -267,18 +267,18 @@ describe DependencyCondition, "evaluting the resonse_set state" do
267
267
  @select_answer.response_class = "integer"
268
268
  @response.integer_value = 50
269
269
  @dep_c.integer_value = 100
270
- @dep_c.is_met?(@response).should be_false
270
+ @dep_c.is_met?([@response]).should be_false
271
271
  @response.integer_value = 421
272
- @dep_c.is_met?(@response).should be_true
272
+ @dep_c.is_met?([@response]).should be_true
273
273
  end
274
274
 
275
275
  it "knows operator on float value response" do
276
276
  @select_answer.response_class = "float"
277
277
  @response.float_value = 5.1
278
278
  @dep_c.float_value = 121.1
279
- @dep_c.is_met?(@response).should be_false
279
+ @dep_c.is_met?([@response]).should be_false
280
280
  @response.float_value = 130.123
281
- @dep_c.is_met?(@response).should be_true
281
+ @dep_c.is_met?([@response]).should be_true
282
282
  end
283
283
 
284
284
  end
@@ -297,26 +297,82 @@ describe DependencyCondition, "evaluting the resonse_set state" do
297
297
  @select_answer.response_class = "integer"
298
298
  @response.integer_value = 50
299
299
  @dep_c.integer_value = 100
300
- @dep_c.is_met?(@response).should be_false
300
+ @dep_c.is_met?([@response]).should be_false
301
301
  @response.integer_value = 100
302
- @dep_c.is_met?(@response).should be_true
302
+ @dep_c.is_met?([@response]).should be_true
303
303
  @response.integer_value = 421
304
- @dep_c.is_met?(@response).should be_true
304
+ @dep_c.is_met?([@response]).should be_true
305
305
  end
306
306
 
307
307
  it "knows operator on float value response" do
308
308
  @select_answer.response_class = "float"
309
309
  @response.float_value = 5.1
310
310
  @dep_c.float_value = 121.1
311
- @dep_c.is_met?(@response).should be_false
311
+ @dep_c.is_met?([@response]).should be_false
312
312
  @response.float_value = 121.1
313
- @dep_c.is_met?(@response).should be_true
313
+ @dep_c.is_met?([@response]).should be_true
314
314
  @response.float_value = 130.123
315
- @dep_c.is_met?(@response).should be_true
315
+ @dep_c.is_met?([@response]).should be_true
316
316
  end
317
317
  end
318
318
 
319
-
319
+ describe "when given responses whether the dependency is satisfied using 'count'" do
320
+ before(:each) do
321
+ @dep_c = DependencyCondition.new(:answer_id => nil,
322
+ :operator => "count>2")
323
+ @question = Question.new
324
+ @select_answers = []
325
+ 3.times do
326
+ @select_answers << Answer.new(:question => @question,
327
+ :response_class => "answer")
328
+ end
329
+ @responses = []
330
+ @select_answers.slice(0,2).each do |a|
331
+ @responses << Response.new(:question => @question, :answer => a,
332
+ :response_set_id => 159)
333
+ end
334
+ end
335
+
336
+ it "knows operator with >" do
337
+ @dep_c.is_met?(@responses).should be_false
338
+ @responses << Response.new(:question => @question,
339
+ :answer => @select_answers.last,
340
+ :response_set_id => 159)
341
+ @dep_c.is_met?(@responses).should be_true
342
+ end
320
343
 
321
- end
344
+ it "knows operator with <" do
345
+ @dep_c.operator = "count<2"
346
+ @dep_c.is_met?(@responses).should be_false
347
+ @dep_c.operator = "count<3"
348
+ @dep_c.is_met?(@responses).should be_true
349
+ end
322
350
 
351
+ it "knows operator with <=" do
352
+ @dep_c.operator = "count<=1"
353
+ @dep_c.is_met?(@responses).should be_false
354
+ @dep_c.operator = "count<=2"
355
+ @dep_c.is_met?(@responses).should be_true
356
+ @dep_c.operator = "count<=3"
357
+ @dep_c.is_met?(@responses).should be_true
358
+ end
359
+
360
+ it "knows operator with >=" do
361
+ @dep_c.operator = "count>=1"
362
+ @dep_c.is_met?(@responses).should be_true
363
+ @dep_c.operator = "count>=2"
364
+ @dep_c.is_met?(@responses).should be_true
365
+ @dep_c.operator = "count>=3"
366
+ @dep_c.is_met?(@responses).should be_false
367
+ end
368
+
369
+ it "knows operator with !=" do
370
+ @dep_c.operator = "count!=1"
371
+ @dep_c.is_met?(@responses).should be_true
372
+ @dep_c.operator = "count!=2"
373
+ @dep_c.is_met?(@responses).should be_false
374
+ @dep_c.operator = "count!=3"
375
+ @dep_c.is_met?(@responses).should be_true
376
+ end
377
+ end
378
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,20 @@
1
- ENV["RAILS_ENV"] = "test"
2
- require File.expand_path(File.dirname(__FILE__) + "/../../../../config/environment")
3
- require 'spec/autorun'
4
- require 'spec/rails'
5
1
 
6
- require File.dirname(__FILE__) + "/factories"
2
+ require 'rubygems'
3
+ require 'bundler'
4
+ Bundler.setup
7
5
 
8
- $LOAD_PATH.unshift(File.dirname(__FILE__))
9
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ require "spec"
7
+
8
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
9
+
10
+
11
+ this_dir = File.dirname(__FILE__)
12
+ raise "Alert! Run the rake task to install the test Rails app. It seems to be missing." unless File.directory?(File.join(this_dir,'test_app/spec'))
13
+ require File.join(this_dir, 'test_app/spec/spec_helper')
14
+ require File.join(this_dir, '/factories')
15
+
16
+ require 'surveyor'
17
+ require 'surveyor/parser'
10
18
 
11
19
  Spec::Runner.configure do |config|
12
- end
20
+ end
data/spec/test_Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source :rubygems
2
+
3
+ gem 'rails', '2.3.10'
4
+ gem 'rspec', '~> 1.3'
5
+ gem 'rspec-rails', '1.3.3'
6
+ gem 'sqlite3-ruby', '1.2.5' #Using this version for ruby 1.8.7 compatibility reasons
7
+ gem 'webrat'
8
+ gem 'cucumber', '~> 0.8.0'
9
+ gem 'cucumber-rails'
10
+ gem 'database_cleaner'
11
+ gem 'factory_girl'
12
+
13
+ plugin_root = File.expand_path("../../..", __FILE__)
14
+ #self.instance_eval File.read("#{plugin_root}/Gemfile")
15
+ gem 'surveyor', :path => plugin_root
data/spec/test_boot.rb ADDED
@@ -0,0 +1,128 @@
1
+ # Don't change this file!
2
+ # Configure your app in config/environment.rb and config/environments/*.rb
3
+
4
+ RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
5
+
6
+ module Rails
7
+ class << self
8
+ def boot!
9
+ unless booted?
10
+ preinitialize
11
+ pick_boot.run
12
+ end
13
+ end
14
+
15
+ def booted?
16
+ defined? Rails::Initializer
17
+ end
18
+
19
+ def pick_boot
20
+ (vendor_rails? ? VendorBoot : GemBoot).new
21
+ end
22
+
23
+ def vendor_rails?
24
+ File.exist?("#{RAILS_ROOT}/vendor/rails")
25
+ end
26
+
27
+ def preinitialize
28
+ load(preinitializer_path) if File.exist?(preinitializer_path)
29
+ end
30
+
31
+ def preinitializer_path
32
+ "#{RAILS_ROOT}/config/preinitializer.rb"
33
+ end
34
+ end
35
+
36
+ class Boot
37
+ def run
38
+ load_initializer
39
+ Rails::Initializer.run(:set_load_path)
40
+ end
41
+ end
42
+
43
+ class VendorBoot < Boot
44
+ def load_initializer
45
+ require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
46
+ Rails::Initializer.run(:install_gem_spec_stubs)
47
+ Rails::GemDependency.add_frozen_gem_path
48
+ end
49
+ end
50
+
51
+ class GemBoot < Boot
52
+ def load_initializer
53
+ self.class.load_rubygems
54
+ load_rails_gem
55
+ require 'initializer'
56
+ end
57
+
58
+ def load_rails_gem
59
+ if version = self.class.gem_version
60
+ gem 'rails', version
61
+ else
62
+ gem 'rails'
63
+ end
64
+ rescue Gem::LoadError => load_error
65
+ if load_error.message =~ /Could not find RubyGem rails/
66
+ STDERR.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
67
+ exit 1
68
+ else
69
+ raise
70
+ end
71
+ end
72
+
73
+ class << self
74
+ def rubygems_version
75
+ Gem::RubyGemsVersion rescue nil
76
+ end
77
+
78
+ def gem_version
79
+ if defined? RAILS_GEM_VERSION
80
+ RAILS_GEM_VERSION
81
+ elsif ENV.include?('RAILS_GEM_VERSION')
82
+ ENV['RAILS_GEM_VERSION']
83
+ else
84
+ parse_gem_version(read_environment_rb)
85
+ end
86
+ end
87
+
88
+ def load_rubygems
89
+ min_version = '1.3.2'
90
+ require 'rubygems'
91
+ unless rubygems_version >= min_version
92
+ $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
93
+ exit 1
94
+ end
95
+
96
+ rescue LoadError
97
+ $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
98
+ exit 1
99
+ end
100
+
101
+ def parse_gem_version(text)
102
+ $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
103
+ end
104
+
105
+ private
106
+ def read_environment_rb
107
+ File.read("#{RAILS_ROOT}/config/environment.rb")
108
+ end
109
+ end
110
+ end
111
+ end
112
+ class Rails::Boot
113
+ def run
114
+ load_initializer
115
+
116
+ Rails::Initializer.class_eval do
117
+ def load_gems
118
+ @bundler_loaded ||= Bundler.require :default, Rails.env
119
+ end
120
+ end
121
+
122
+ Rails::Initializer.run(:set_load_path)
123
+ end
124
+ end
125
+
126
+
127
+ # All that for this:
128
+ Rails.boot!
@@ -0,0 +1,21 @@
1
+ # To go in test_app/config
2
+
3
+ begin
4
+ require "rubygems"
5
+ require "bundler"
6
+ rescue LoadError
7
+ raise "Could not load the bundler gem. Install it with `gem install bundler`."
8
+ end
9
+
10
+ if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
11
+ raise RuntimeError, "Your bundler version is too old." +
12
+ "Run `gem install bundler` to upgrade."
13
+ end
14
+
15
+ begin
16
+ ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
17
+ Bundler.setup
18
+ rescue Bundler::GemNotFound
19
+ raise RuntimeError, "Bundler couldn't find some gems." +
20
+ "Did you run `bundle install`?"
21
+ end
data/surveyor.gemspec CHANGED
@@ -5,17 +5,20 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{surveyor}
8
- s.version = "0.16.1"
8
+ s.version = "0.17.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Chamberlain", "Mark Yoon"]
12
- s.date = %q{2010-11-02}
12
+ s.date = %q{2010-11-30}
13
13
  s.email = %q{yoon@northwestern.edu}
14
14
  s.extra_rdoc_files = [
15
15
  "README.md"
16
16
  ]
17
17
  s.files = [
18
18
  ".gitignore",
19
+ ".rvmrc",
20
+ "Gemfile",
21
+ "Gemfile.lock",
19
22
  "MIT-LICENSE",
20
23
  "README.md",
21
24
  "Rakefile",
@@ -177,6 +180,9 @@ Gem::Specification.new do |s|
177
180
  "spec/rcov.opts",
178
181
  "spec/spec.opts",
179
182
  "spec/spec_helper.rb",
183
+ "spec/test_Gemfile",
184
+ "spec/test_boot.rb",
185
+ "spec/test_preinitializer.rb",
180
186
  "spec/views/surveyor/show.html.haml_spec.rb",
181
187
  "surveyor.gemspec",
182
188
  "uninstall.rb"
@@ -204,6 +210,51 @@ Gem::Specification.new do |s|
204
210
  "spec/models/validation_condition_spec.rb",
205
211
  "spec/models/validation_spec.rb",
206
212
  "spec/spec_helper.rb",
213
+ "spec/test_app/app/controllers/application_controller.rb",
214
+ "spec/test_app/app/helpers/application_helper.rb",
215
+ "spec/test_app/config/boot.rb",
216
+ "spec/test_app/config/environment.rb",
217
+ "spec/test_app/config/environments/cucumber.rb",
218
+ "spec/test_app/config/environments/development.rb",
219
+ "spec/test_app/config/environments/production.rb",
220
+ "spec/test_app/config/environments/test.rb",
221
+ "spec/test_app/config/initializers/backtrace_silencers.rb",
222
+ "spec/test_app/config/initializers/cookie_verification_secret.rb",
223
+ "spec/test_app/config/initializers/inflections.rb",
224
+ "spec/test_app/config/initializers/mime_types.rb",
225
+ "spec/test_app/config/initializers/new_rails_defaults.rb",
226
+ "spec/test_app/config/initializers/session_store.rb",
227
+ "spec/test_app/config/preinitializer.rb",
228
+ "spec/test_app/config/routes.rb",
229
+ "spec/test_app/db/migrate/20101119172426_create_surveys.rb",
230
+ "spec/test_app/db/migrate/20101119172427_create_survey_sections.rb",
231
+ "spec/test_app/db/migrate/20101119172428_create_questions.rb",
232
+ "spec/test_app/db/migrate/20101119172429_create_question_groups.rb",
233
+ "spec/test_app/db/migrate/20101119172430_create_answers.rb",
234
+ "spec/test_app/db/migrate/20101119172431_create_response_sets.rb",
235
+ "spec/test_app/db/migrate/20101119172432_create_responses.rb",
236
+ "spec/test_app/db/migrate/20101119172433_create_dependencies.rb",
237
+ "spec/test_app/db/migrate/20101119172434_create_dependency_conditions.rb",
238
+ "spec/test_app/db/migrate/20101119172435_create_validations.rb",
239
+ "spec/test_app/db/migrate/20101119172436_create_validation_conditions.rb",
240
+ "spec/test_app/db/migrate/20101119172437_add_display_order_to_surveys.rb",
241
+ "spec/test_app/db/migrate/20101119172438_add_correct_answer_id_to_questions.rb",
242
+ "spec/test_app/db/migrate/20101119172439_add_index_to_response_sets.rb",
243
+ "spec/test_app/db/migrate/20101119172440_add_index_to_surveys.rb",
244
+ "spec/test_app/db/migrate/20101119172441_add_unique_indicies.rb",
245
+ "spec/test_app/db/migrate/20101119172442_add_section_id_to_responses.rb",
246
+ "spec/test_app/db/schema.rb",
247
+ "spec/test_app/db/seeds.rb",
248
+ "spec/test_app/features/step_definitions/web_steps.rb",
249
+ "spec/test_app/features/support/env.rb",
250
+ "spec/test_app/features/support/paths.rb",
251
+ "spec/test_app/lib/tasks/surveyor.rb",
252
+ "spec/test_app/spec/spec_helper.rb",
253
+ "spec/test_app/surveys/kitchen_sink_survey.rb",
254
+ "spec/test_app/test/performance/browsing_test.rb",
255
+ "spec/test_app/test/test_helper.rb",
256
+ "spec/test_boot.rb",
257
+ "spec/test_preinitializer.rb",
207
258
  "spec/views/surveyor/show.html.haml_spec.rb"
208
259
  ]
209
260
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: surveyor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 93
4
+ hash: 91
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 16
9
- - 1
10
- version: 0.16.1
8
+ - 17
9
+ - 0
10
+ version: 0.17.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brian Chamberlain
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-11-02 00:00:00 -05:00
19
+ date: 2010-11-30 00:00:00 -06:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -57,6 +57,9 @@ extra_rdoc_files:
57
57
  - README.md
58
58
  files:
59
59
  - .gitignore
60
+ - .rvmrc
61
+ - Gemfile
62
+ - Gemfile.lock
60
63
  - MIT-LICENSE
61
64
  - README.md
62
65
  - Rakefile
@@ -218,9 +221,55 @@ files:
218
221
  - spec/rcov.opts
219
222
  - spec/spec.opts
220
223
  - spec/spec_helper.rb
224
+ - spec/test_Gemfile
225
+ - spec/test_boot.rb
226
+ - spec/test_preinitializer.rb
221
227
  - spec/views/surveyor/show.html.haml_spec.rb
222
228
  - surveyor.gemspec
223
229
  - uninstall.rb
230
+ - spec/test_app/app/controllers/application_controller.rb
231
+ - spec/test_app/app/helpers/application_helper.rb
232
+ - spec/test_app/config/boot.rb
233
+ - spec/test_app/config/environment.rb
234
+ - spec/test_app/config/environments/cucumber.rb
235
+ - spec/test_app/config/environments/development.rb
236
+ - spec/test_app/config/environments/production.rb
237
+ - spec/test_app/config/environments/test.rb
238
+ - spec/test_app/config/initializers/backtrace_silencers.rb
239
+ - spec/test_app/config/initializers/cookie_verification_secret.rb
240
+ - spec/test_app/config/initializers/inflections.rb
241
+ - spec/test_app/config/initializers/mime_types.rb
242
+ - spec/test_app/config/initializers/new_rails_defaults.rb
243
+ - spec/test_app/config/initializers/session_store.rb
244
+ - spec/test_app/config/preinitializer.rb
245
+ - spec/test_app/config/routes.rb
246
+ - spec/test_app/db/migrate/20101119172426_create_surveys.rb
247
+ - spec/test_app/db/migrate/20101119172427_create_survey_sections.rb
248
+ - spec/test_app/db/migrate/20101119172428_create_questions.rb
249
+ - spec/test_app/db/migrate/20101119172429_create_question_groups.rb
250
+ - spec/test_app/db/migrate/20101119172430_create_answers.rb
251
+ - spec/test_app/db/migrate/20101119172431_create_response_sets.rb
252
+ - spec/test_app/db/migrate/20101119172432_create_responses.rb
253
+ - spec/test_app/db/migrate/20101119172433_create_dependencies.rb
254
+ - spec/test_app/db/migrate/20101119172434_create_dependency_conditions.rb
255
+ - spec/test_app/db/migrate/20101119172435_create_validations.rb
256
+ - spec/test_app/db/migrate/20101119172436_create_validation_conditions.rb
257
+ - spec/test_app/db/migrate/20101119172437_add_display_order_to_surveys.rb
258
+ - spec/test_app/db/migrate/20101119172438_add_correct_answer_id_to_questions.rb
259
+ - spec/test_app/db/migrate/20101119172439_add_index_to_response_sets.rb
260
+ - spec/test_app/db/migrate/20101119172440_add_index_to_surveys.rb
261
+ - spec/test_app/db/migrate/20101119172441_add_unique_indicies.rb
262
+ - spec/test_app/db/migrate/20101119172442_add_section_id_to_responses.rb
263
+ - spec/test_app/db/schema.rb
264
+ - spec/test_app/db/seeds.rb
265
+ - spec/test_app/features/step_definitions/web_steps.rb
266
+ - spec/test_app/features/support/env.rb
267
+ - spec/test_app/features/support/paths.rb
268
+ - spec/test_app/lib/tasks/surveyor.rb
269
+ - spec/test_app/spec/spec_helper.rb
270
+ - spec/test_app/surveys/kitchen_sink_survey.rb
271
+ - spec/test_app/test/performance/browsing_test.rb
272
+ - spec/test_app/test/test_helper.rb
224
273
  has_rdoc: true
225
274
  homepage: http://github.com/breakpointer/surveyor
226
275
  licenses: []
@@ -273,4 +322,49 @@ test_files:
273
322
  - spec/models/validation_condition_spec.rb
274
323
  - spec/models/validation_spec.rb
275
324
  - spec/spec_helper.rb
325
+ - spec/test_app/app/controllers/application_controller.rb
326
+ - spec/test_app/app/helpers/application_helper.rb
327
+ - spec/test_app/config/boot.rb
328
+ - spec/test_app/config/environment.rb
329
+ - spec/test_app/config/environments/cucumber.rb
330
+ - spec/test_app/config/environments/development.rb
331
+ - spec/test_app/config/environments/production.rb
332
+ - spec/test_app/config/environments/test.rb
333
+ - spec/test_app/config/initializers/backtrace_silencers.rb
334
+ - spec/test_app/config/initializers/cookie_verification_secret.rb
335
+ - spec/test_app/config/initializers/inflections.rb
336
+ - spec/test_app/config/initializers/mime_types.rb
337
+ - spec/test_app/config/initializers/new_rails_defaults.rb
338
+ - spec/test_app/config/initializers/session_store.rb
339
+ - spec/test_app/config/preinitializer.rb
340
+ - spec/test_app/config/routes.rb
341
+ - spec/test_app/db/migrate/20101119172426_create_surveys.rb
342
+ - spec/test_app/db/migrate/20101119172427_create_survey_sections.rb
343
+ - spec/test_app/db/migrate/20101119172428_create_questions.rb
344
+ - spec/test_app/db/migrate/20101119172429_create_question_groups.rb
345
+ - spec/test_app/db/migrate/20101119172430_create_answers.rb
346
+ - spec/test_app/db/migrate/20101119172431_create_response_sets.rb
347
+ - spec/test_app/db/migrate/20101119172432_create_responses.rb
348
+ - spec/test_app/db/migrate/20101119172433_create_dependencies.rb
349
+ - spec/test_app/db/migrate/20101119172434_create_dependency_conditions.rb
350
+ - spec/test_app/db/migrate/20101119172435_create_validations.rb
351
+ - spec/test_app/db/migrate/20101119172436_create_validation_conditions.rb
352
+ - spec/test_app/db/migrate/20101119172437_add_display_order_to_surveys.rb
353
+ - spec/test_app/db/migrate/20101119172438_add_correct_answer_id_to_questions.rb
354
+ - spec/test_app/db/migrate/20101119172439_add_index_to_response_sets.rb
355
+ - spec/test_app/db/migrate/20101119172440_add_index_to_surveys.rb
356
+ - spec/test_app/db/migrate/20101119172441_add_unique_indicies.rb
357
+ - spec/test_app/db/migrate/20101119172442_add_section_id_to_responses.rb
358
+ - spec/test_app/db/schema.rb
359
+ - spec/test_app/db/seeds.rb
360
+ - spec/test_app/features/step_definitions/web_steps.rb
361
+ - spec/test_app/features/support/env.rb
362
+ - spec/test_app/features/support/paths.rb
363
+ - spec/test_app/lib/tasks/surveyor.rb
364
+ - spec/test_app/spec/spec_helper.rb
365
+ - spec/test_app/surveys/kitchen_sink_survey.rb
366
+ - spec/test_app/test/performance/browsing_test.rb
367
+ - spec/test_app/test/test_helper.rb
368
+ - spec/test_boot.rb
369
+ - spec/test_preinitializer.rb
276
370
  - spec/views/surveyor/show.html.haml_spec.rb