surveyor 0.16.1 → 0.17.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 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