surveyor 0.9.8 → 0.9.9

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/README.md CHANGED
@@ -7,12 +7,12 @@ Surveyor is a rails (gem) plugin, that brings surveys to your rails app. Before
7
7
  As a plugin:
8
8
 
9
9
  sudo gem install haml
10
- script/plugin install git://github.com/breakpointer/surveyor.git -r 'tag v0.9.0'
10
+ script/plugin install git://github.com/breakpointer/surveyor.git -r 'tag v0.9.8'
11
11
 
12
12
  Or as a gem plugin:
13
13
 
14
14
  # in environment.rb
15
- config.gem "surveyor", :version => '>=0.9.0', :source => 'http://gemcutter.org'
15
+ config.gem "surveyor", :version => '>=0.9.8', :source => 'http://gemcutter.org'
16
16
 
17
17
  sudo gem install gemcutter
18
18
  gem tumble
@@ -109,6 +109,42 @@ Surveyor depends on Rails 2.3 and the SASS style sheet language, part of HAML (h
109
109
 
110
110
  # Changes
111
111
 
112
+ 0.9.8
113
+
114
+ * @current\_user.id if @current\_user isn't nil. Closes #37
115
+
116
+ 0.9.7
117
+
118
+ * fixing typos
119
+ * remove surveyor controller from load\_once\_paths. fixes issue with dependencies and unloading in development. closes #36
120
+
121
+ 0.9.6
122
+
123
+ * response set reports progress and mandatory questions completeness. closes #33
124
+ * adding correctness to response sets
125
+ * adding correctness to responses
126
+
127
+ 0.9.5
128
+
129
+ * allow append for survey parser. closes #32
130
+
131
+ 0.9.4
132
+
133
+ * making tinycode compatible with ruby 1.8.6
134
+
135
+ 0.9.3
136
+
137
+ * fix for survey parser require
138
+
139
+ 0.9.2
140
+
141
+ * fixing specs for namespacing and move of tinycode
142
+ * namespacing SurveyParser models to avoid conflict with model extensions
143
+
144
+ 0.9.1
145
+
146
+ * fix for tinycode, more descriptive missing method
147
+
112
148
  0.9.0
113
149
 
114
150
  * validations in dsl and surveyor models
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.8
1
+ 0.9.9
@@ -112,7 +112,7 @@ class ResponseSet < ActiveRecord::Base
112
112
  }
113
113
  end
114
114
  def is_answered?(question)
115
- !is_unanswered?(question)
115
+ %w(label image).include?(question.display_type) or !is_unanswered?(question)
116
116
  end
117
117
  def is_unanswered?(question)
118
118
  self.responses.detect{|r| r.question_id == question.id}.nil?
@@ -27,12 +27,14 @@ class ValidationCondition < ActiveRecord::Base
27
27
 
28
28
  def is_valid?(response)
29
29
  klass = response.answer.response_class
30
+ compare_to = Response.find_by_question_id_and_answer_id(self.question_id, self.answer_id) || self
30
31
  case self.operator
31
32
  when "==", "<", ">", "<=", ">="
32
- response.as(klass).send(self.operator, self.as(klass))
33
+ response.as(klass).send(self.operator, compare_to.as(klass))
33
34
  when "!="
34
- !(response.as(klass) == self.as(klass))
35
+ !(response.as(klass) == compare_to.as(klass))
35
36
  when "=~"
37
+ return false if compare_to != self
36
38
  !(response.as(klass).to_s =~ Regexp.new(self.regexp || "")).nil?
37
39
  else
38
40
  false
@@ -176,6 +176,13 @@ describe ResponseSet, "with mandatory questions" do
176
176
  @response_set.mandatory_questions_complete?.should be_false
177
177
  @response_set.progress_hash.should == {:questions => 3, :triggered => 3, :triggered_mandatory => 3, :triggered_mandatory_completed => 0}
178
178
  end
179
+ it "should ignore labels and images" do
180
+ generate_responses(3, "mandatory", "responded")
181
+ Factory(:question, :survey_section => @section, :display_type => "label", :is_mandatory => true)
182
+ Factory(:question, :survey_section => @section, :display_type => "image", :is_mandatory => true)
183
+ @response_set.mandatory_questions_complete?.should be_true
184
+ @response_set.progress_hash.should == {:questions => 5, :triggered => 5, :triggered_mandatory => 5, :triggered_mandatory_completed => 5}
185
+ end
179
186
  end
180
187
  describe ResponseSet, "with mandatory, dependent questions" do
181
188
  before(:each) do
@@ -56,7 +56,7 @@ describe ValidationCondition, "validating responses" do
56
56
  def test_var(vhash, ahash, rhash)
57
57
  v = Factory(:validation_condition, vhash)
58
58
  a = Factory(:answer, ahash)
59
- r = Factory(:response, rhash.merge(:answer => a, :question => a.question))
59
+ r = Factory(:response, {:answer => a, :question => a.question}.merge(rhash))
60
60
  return v.is_valid?(r)
61
61
  end
62
62
 
@@ -70,7 +70,7 @@ describe ValidationCondition, "validating responses" do
70
70
  end
71
71
  it "should validate a response by (in)equality" do
72
72
  test_var({:operator => "!=", :datetime_value => Date.today + 1}, {:response_class => "date"}, {:datetime_value => Date.today}).should be_true
73
- test_var({:operator => "==", :answer_id => 2}, {:response_class => "answer"}, {:answer_id => 2}).should be_false
73
+ test_var({:operator => "==", :string_value => "foo"}, {:response_class => "string"}, {:string_value => "foo"}).should be_true
74
74
  end
75
75
  it "should represent itself as a hash" do
76
76
  @v = Factory(:validation_condition, :rule_key => "A")
@@ -79,4 +79,27 @@ describe ValidationCondition, "validating responses" do
79
79
  @v.stub!(:is_valid?).and_return(false)
80
80
  @v.to_hash("foo").should == {:A => false}
81
81
  end
82
+ end
83
+
84
+ describe ValidationCondition, "validating responses by other responses" do
85
+ def test_var(v_hash, a_hash, r_hash, ca_hash, cr_hash)
86
+ ca = Factory(:answer, ca_hash)
87
+ cr = Factory(:response, cr_hash.merge(:answer => ca, :question => ca.question))
88
+ v = Factory(:validation_condition, v_hash.merge({:question_id => ca.question.id, :answer_id => ca.id}))
89
+ a = Factory(:answer, a_hash)
90
+ r = Factory(:response, r_hash.merge(:answer => a, :question => a.question))
91
+ return v.is_valid?(r)
92
+ end
93
+ it "should validate a response by integer comparison" do
94
+ test_var({:operator => ">"}, {:response_class => "integer"}, {:integer_value => 4}, {:response_class => "integer"}, {:integer_value => 3}).should be_true
95
+ test_var({:operator => "<="}, {:response_class => "integer"}, {:integer_value => 512}, {:response_class => "integer"}, {:integer_value => 4}).should be_false
96
+ end
97
+ it "should validate a response by (in)equality" do
98
+ test_var({:operator => "!="}, {:response_class => "date"}, {:datetime_value => Date.today}, {:response_class => "date"}, {:datetime_value => Date.today + 1}).should be_true
99
+ test_var({:operator => "=="}, {:response_class => "string"}, {:string_value => "donuts"}, {:response_class => "string"}, {:string_value => "donuts"}).should be_true
100
+ end
101
+ it "should not validate a response by regexp" do
102
+ test_var({:operator => "=~"}, {:response_class => "date"}, {:datetime_value => Date.today}, {:response_class => "date"}, {:datetime_value => Date.today + 1}).should be_false
103
+ test_var({:operator => "=~"}, {:response_class => "string"}, {:string_value => "donuts"}, {:response_class => "string"}, {:string_value => "donuts"}).should be_false
104
+ end
82
105
  end
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{surveyor}
8
- s.version = "0.9.8"
8
+ s.version = "0.9.9"
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{2009-11-13}
12
+ s.date = %q{2009-11-16}
13
13
  s.email = %q{yoon@northwestern.edu}
14
14
  s.extra_rdoc_files = [
15
15
  "README.md"
@@ -209,3 +209,4 @@ Gem::Specification.new do |s|
209
209
  s.add_dependency(%q<haml>, [">= 0"])
210
210
  end
211
211
  end
212
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: surveyor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Chamberlain
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-11-13 00:00:00 -06:00
13
+ date: 2009-11-16 00:00:00 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency