active_record_survey 0.1.23 → 0.1.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -11
- data/lib/active_record_survey/node/answer/{chain/boolean.rb → boolean.rb} +3 -1
- data/lib/active_record_survey/node/answer/chained.rb +24 -0
- data/lib/active_record_survey/node/answer/{chain/rank.rb → rank.rb} +4 -2
- data/lib/active_record_survey/node/answer/{chain/scale.rb → scale.rb} +3 -1
- data/lib/active_record_survey/node/answer/{chain/text.rb → text.rb} +3 -1
- data/lib/active_record_survey/node/answer.rb +19 -1
- data/lib/active_record_survey/version.rb +1 -1
- data/lib/active_record_survey.rb +5 -5
- data/spec/active_record_survey/node/answer/boolean_spec.rb +6 -6
- data/spec/active_record_survey/node/answer/rank_spec.rb +6 -6
- data/spec/active_record_survey/node/answer/scale_spec.rb +4 -4
- data/spec/active_record_survey/node/answer/text_spec.rb +3 -3
- data/spec/active_record_survey/node/answer_spec.rb +44 -2
- data/spec/active_record_survey/node/question_spec.rb +8 -8
- data/spec/factories/active_record_survey/survey.rb +50 -2
- metadata +7 -7
- data/lib/active_record_survey/node/answer/chain.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e31b5194f981037636d99848bcf20cca47ff08d
|
4
|
+
data.tar.gz: 826afd06292c6edb0c7c66c125d09f719960b656
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d549e57755d6ccbfdd39d65a5250076de67bf434412f8ecbdce4009bfceb275ef935acd4f49bec8025269fc35127f08e9810a4b574889bd7c3cab7ccd2154f0b
|
7
|
+
data.tar.gz: bda3002f375e5dccff9be201873e2ca52fa3a482271ea4f730035f20c3e46ed01e8bbffc7706454f72179589e8e8b7d34feaf8717f5451823916d8755f9ec783
|
data/README.md
CHANGED
@@ -12,13 +12,16 @@ The goal is to give a simple interface for creating surveys and validating the a
|
|
12
12
|
Release Notes
|
13
13
|
============
|
14
14
|
|
15
|
+
**0.1.24**
|
16
|
+
- Refactored class `ActiveRecordSurvey::Node::Answer::Chain` to module `ActiveRecordSurvey::Node::Answer::Chained` - this functionality makes way more sense implemented as a module.
|
17
|
+
|
15
18
|
**0.1.23**
|
16
19
|
- Added `ActiveRecordSurvey::Node::Answer::Chain` for common chainable interface for answers
|
17
20
|
|
18
21
|
**0.1.22**
|
19
22
|
- answer#remove_link cleaned up so it can be understood
|
20
23
|
|
21
|
-
**0.1.
|
24
|
+
**0.1.21**
|
22
25
|
- answer#build_link now detects and throws an error when a infinite loop is added
|
23
26
|
|
24
27
|
**0.1.20**
|
@@ -60,6 +63,12 @@ rails generate active_record_survey:active_record
|
|
60
63
|
|
61
64
|
See the spec file for more detailed usage.
|
62
65
|
|
66
|
+
***Please*** be aware that the default gem does not prescribe how your `ActiveRecordSurvey::Node` should store text - that's up for you to implement.
|
67
|
+
|
68
|
+
See the spec for a sample implementation or [ActiveRecordSurveyApi](https://github.com/butchmarshall/active_record_survey_api) for a fully translatable implementation using the [Globalize](https://github.com/globalize/globalize) gem.
|
69
|
+
|
70
|
+
The usage below with `:text => ""` will not actually work unless you implement `:text`
|
71
|
+
|
63
72
|
### Build a basic survey
|
64
73
|
```ruby
|
65
74
|
|
@@ -140,7 +149,7 @@ The default answer type (think of it like a radio question) - this is currently
|
|
140
149
|
#### Boolean
|
141
150
|
|
142
151
|
```ruby
|
143
|
-
ActiveRecordSurvey::Node::Answer::
|
152
|
+
ActiveRecordSurvey::Node::Answer::Boolean
|
144
153
|
```
|
145
154
|
|
146
155
|
True/False (0/1 actually... think of it like a checkbox) answer types.
|
@@ -149,7 +158,7 @@ True/False (0/1 actually... think of it like a checkbox) answer types.
|
|
149
158
|
#### Rank
|
150
159
|
|
151
160
|
```ruby
|
152
|
-
ActiveRecordSurvey::Node::Answer::
|
161
|
+
ActiveRecordSurvey::Node::Answer::Rank
|
153
162
|
```
|
154
163
|
|
155
164
|
Rankable (answer value is 1..NUM_ANSWERS) to rank the answers in relation to one another.
|
@@ -158,7 +167,7 @@ Rankable (answer value is 1..NUM_ANSWERS) to rank the answers in relation to one
|
|
158
167
|
#### Scale
|
159
168
|
|
160
169
|
```ruby
|
161
|
-
ActiveRecordSurvey::Node::Answer::
|
170
|
+
ActiveRecordSurvey::Node::Answer::Scale
|
162
171
|
```
|
163
172
|
|
164
173
|
Scale (answer value is a min/max on a scale of A->B) where you can specificy each answer on a scale
|
@@ -167,7 +176,7 @@ Scale (answer value is a min/max on a scale of A->B) where you can specificy eac
|
|
167
176
|
#### Text
|
168
177
|
|
169
178
|
```ruby
|
170
|
-
ActiveRecordSurvey::Node::Answer::
|
179
|
+
ActiveRecordSurvey::Node::Answer::Text
|
171
180
|
```
|
172
181
|
|
173
182
|
Textual answer to a question (e.g. please tell us what you thinik...)
|
@@ -198,7 +207,7 @@ ActiveRecordSurvey::ValidationNode::MaximumAnswer
|
|
198
207
|
|
199
208
|
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Question` nodes.
|
200
209
|
|
201
|
-
Ensures that a maximum numer of answers have been selected. For chained answer nodes such as `ActiveRecordSurvey::Node::Answer::
|
210
|
+
Ensures that a maximum numer of answers have been selected. For chained answer nodes such as `ActiveRecordSurvey::Node::Answer::Boolean`,`ActiveRecordSurvey::Node::Answer::Rank`, and `ActiveRecordSurvey::Node::Answer::Scale` it enforces a maximum amount that be answered.
|
202
211
|
|
203
212
|
<a id=answer_minimum_answer""></a>
|
204
213
|
#### MinimumAnswer
|
@@ -209,7 +218,7 @@ ActiveRecordSurvey::ValidationNode::MinimumAnswer
|
|
209
218
|
|
210
219
|
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Question` nodes.
|
211
220
|
|
212
|
-
Ensures that a minimum numer of answers have been selected. For chained answer nodes such as `ActiveRecordSurvey::Node::Answer::
|
221
|
+
Ensures that a minimum numer of answers have been selected. For chained answer nodes such as `ActiveRecordSurvey::Node::Answer::Boolean`,`ActiveRecordSurvey::Node::Answer::Rank`, and `ActiveRecordSurvey::Node::Answer::Scale` it enforces a minimum amount that can be answered.
|
213
222
|
|
214
223
|
<a id="answer_maximum_value"></a>
|
215
224
|
#### MaximumValue
|
@@ -218,7 +227,7 @@ Ensures that a minimum numer of answers have been selected. For chained answer
|
|
218
227
|
ActiveRecordSurvey::ValidationNode::MaximumValue
|
219
228
|
```
|
220
229
|
|
221
|
-
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes which record an scalar answer value such as `ActiveRecordSurvey::Node::Answer::
|
230
|
+
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes which record an scalar answer value such as `ActiveRecordSurvey::Node::Answer::Scale`.
|
222
231
|
|
223
232
|
Ensures that a minimum scalar value has been entered.
|
224
233
|
|
@@ -229,7 +238,7 @@ Ensures that a minimum scalar value has been entered.
|
|
229
238
|
ActiveRecordSurvey::ValidationNode::MinimumValue
|
230
239
|
```
|
231
240
|
|
232
|
-
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes which record an scalar answer value such as `ActiveRecordSurvey::Node::Answer::
|
241
|
+
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes which record an scalar answer value such as `ActiveRecordSurvey::Node::Answer::Scale`.
|
233
242
|
|
234
243
|
Ensures that a maximum scalar value has been entered.
|
235
244
|
|
@@ -240,7 +249,7 @@ Ensures that a maximum scalar value has been entered.
|
|
240
249
|
ActiveRecordSurvey::ValidationNode::MaximumLength
|
241
250
|
```
|
242
251
|
|
243
|
-
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes nodes which record a text value such as `ActiveRecordSurvey::Node::Answer::
|
252
|
+
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes nodes which record a text value such as `ActiveRecordSurvey::Node::Answer::Text`.
|
244
253
|
|
245
254
|
Ensures that a maximum amount of text has been answered.
|
246
255
|
|
@@ -251,7 +260,7 @@ Ensures that a maximum amount of text has been answered.
|
|
251
260
|
ActiveRecordSurvey::ValidationNode::MinimumLength
|
252
261
|
```
|
253
262
|
|
254
|
-
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes nodes which record a text value such as `ActiveRecordSurvey::Node::Answer::
|
263
|
+
These nodes should only be attached to nodes which extend `ActiveRecordSurvey::Node::Answer` nodes nodes which record a text value such as `ActiveRecordSurvey::Node::Answer::Text`.
|
255
264
|
|
256
265
|
Ensures that a minimum amount of text has been answered.
|
257
266
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module ActiveRecordSurvey
|
2
2
|
# Boolean answers can have values 0|1
|
3
|
-
class Node::Answer::
|
3
|
+
class Node::Answer::Boolean < Node::Answer
|
4
|
+
include Answer::Chained
|
5
|
+
|
4
6
|
# Only boolean values
|
5
7
|
def validate_instance_node(instance_node)
|
6
8
|
# super - all validations on this node pass
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module ActiveRecordSurvey
|
2
|
+
class Answer
|
3
|
+
module Chained
|
4
|
+
# Chain nodes are different - they must find the final answer node added and add to it
|
5
|
+
def build_answer(question_node, survey)
|
6
|
+
# No node_maps exist yet from this question
|
7
|
+
if question_node.node_maps.length === 0
|
8
|
+
# Build our first node-map
|
9
|
+
question_node.node_maps.build(:node => question_node, :survey => survey)
|
10
|
+
end
|
11
|
+
|
12
|
+
last_in_chain = question_node.answers.last || question_node
|
13
|
+
|
14
|
+
# Each instance of this question needs the answer hung from it
|
15
|
+
last_in_chain.node_maps.each { |node_map|
|
16
|
+
answer_node_map = self.node_maps.build(:node => self, :survey => survey)
|
17
|
+
node_map.children << answer_node_map
|
18
|
+
}
|
19
|
+
|
20
|
+
true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module ActiveRecordSurvey
|
2
|
-
# Rank in relation to parent/children of ActiveRecordSurvey::Node::Answer::
|
3
|
-
class Node::Answer::
|
2
|
+
# Rank in relation to parent/children of ActiveRecordSurvey::Node::Answer::Rank
|
3
|
+
class Node::Answer::Rank < Node::Answer
|
4
|
+
include Answer::Chained
|
5
|
+
|
4
6
|
# Accept integer or empty values
|
5
7
|
# Must be within range of the number of ranking nodes
|
6
8
|
def validate_instance_node(instance_node)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module ActiveRecordSurvey
|
2
2
|
# Can hold a value on a scale (e.g. from 0-10)
|
3
|
-
class Node::Answer::
|
3
|
+
class Node::Answer::Scale < Node::Answer
|
4
|
+
include Answer::Chained
|
5
|
+
|
4
6
|
# Accept integer, float, or empty values
|
5
7
|
def validate_instance_node(instance_node)
|
6
8
|
# super - all validations on this node pass
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module ActiveRecordSurvey
|
2
2
|
# Text answers are... text answers
|
3
|
-
class Node::Answer::
|
3
|
+
class Node::Answer::Text < Node::Answer
|
4
|
+
include Answer::Chained
|
5
|
+
|
4
6
|
# Text answers are considered answered if they have text entered
|
5
7
|
def is_answered_for_instance?(instance)
|
6
8
|
if instance_node = self.instance_node_for_instance(instance)
|
@@ -44,9 +44,23 @@ module ActiveRecordSurvey
|
|
44
44
|
return nil
|
45
45
|
end
|
46
46
|
|
47
|
+
attr_accessor :ancestor_marked_for_destruction
|
48
|
+
protected :ancestor_marked_for_destruction
|
49
|
+
|
50
|
+
before_save do |node|
|
51
|
+
# ------------------------ WARNING ------------------------
|
52
|
+
# This code is to support #remove_link which uses mark_for_destruction
|
53
|
+
# This code is necessary to clean everything up.
|
54
|
+
# Calling save on this answer won't automatically go to its next_question -> node_maps and clean everything up
|
55
|
+
(@ancestor_marked_for_destruction || []).each { |i|
|
56
|
+
i.destroy
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
47
60
|
# Removes the link
|
48
|
-
# TODO - does this work when saved??
|
49
61
|
def remove_link
|
62
|
+
@ancestor_marked_for_destruction ||= []
|
63
|
+
|
50
64
|
# not linked to a question - nothing to remove!
|
51
65
|
return true if (question = self.next_question).nil?
|
52
66
|
|
@@ -55,6 +69,10 @@ module ActiveRecordSurvey
|
|
55
69
|
# This node_map links to the question
|
56
70
|
if question_nm.node === question
|
57
71
|
question_nm.parent = nil
|
72
|
+
if answer_nm_i > 0
|
73
|
+
question_nm.mark_for_destruction
|
74
|
+
@ancestor_marked_for_destruction << question_nm
|
75
|
+
end
|
58
76
|
false
|
59
77
|
else
|
60
78
|
true
|
data/lib/active_record_survey.rb
CHANGED
@@ -12,11 +12,11 @@ require "active_record_survey/survey"
|
|
12
12
|
require "active_record_survey/node"
|
13
13
|
require "active_record_survey/node/question"
|
14
14
|
require "active_record_survey/node/answer"
|
15
|
-
require "active_record_survey/node/answer/
|
16
|
-
require "active_record_survey/node/answer/
|
17
|
-
require "active_record_survey/node/answer/
|
18
|
-
require "active_record_survey/node/answer/
|
19
|
-
require "active_record_survey/node/answer/
|
15
|
+
require "active_record_survey/node/answer/chained"
|
16
|
+
require "active_record_survey/node/answer/text"
|
17
|
+
require "active_record_survey/node/answer/rank"
|
18
|
+
require "active_record_survey/node/answer/scale"
|
19
|
+
require "active_record_survey/node/answer/boolean"
|
20
20
|
|
21
21
|
require "active_record_survey/node_map"
|
22
22
|
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe ActiveRecordSurvey::Node::Answer::
|
3
|
+
describe ActiveRecordSurvey::Node::Answer::Boolean, :boolean_spec => true do
|
4
4
|
describe 'a boolean survey is' do
|
5
5
|
before(:all) do
|
6
6
|
@survey = ActiveRecordSurvey::Survey.new
|
7
7
|
|
8
8
|
@q1 = ActiveRecordSurvey::Node::Question.new()
|
9
|
-
@q1_a1 = ActiveRecordSurvey::Node::Answer::
|
10
|
-
@q1_a2 = ActiveRecordSurvey::Node::Answer::
|
11
|
-
@q1_a3 = ActiveRecordSurvey::Node::Answer::
|
12
|
-
@q1_a4 = ActiveRecordSurvey::Node::Answer::
|
13
|
-
@q1_a5 = ActiveRecordSurvey::Node::Answer::
|
9
|
+
@q1_a1 = ActiveRecordSurvey::Node::Answer::Boolean.new()
|
10
|
+
@q1_a2 = ActiveRecordSurvey::Node::Answer::Boolean.new()
|
11
|
+
@q1_a3 = ActiveRecordSurvey::Node::Answer::Boolean.new()
|
12
|
+
@q1_a4 = ActiveRecordSurvey::Node::Answer::Boolean.new()
|
13
|
+
@q1_a5 = ActiveRecordSurvey::Node::Answer::Boolean.new()
|
14
14
|
|
15
15
|
@survey.build_question(@q1)
|
16
16
|
@q1.build_answer(@q1_a1, @survey)
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe ActiveRecordSurvey::Node::Answer::
|
3
|
+
describe ActiveRecordSurvey::Node::Answer::Rank, :rank_spec => true do
|
4
4
|
describe 'survey is' do
|
5
5
|
before(:all) do
|
6
6
|
@survey = ActiveRecordSurvey::Survey.new
|
7
7
|
|
8
8
|
@q1 = ActiveRecordSurvey::Node::Question.new()
|
9
|
-
@q1_a1 = ActiveRecordSurvey::Node::Answer::
|
10
|
-
@q1_a2 = ActiveRecordSurvey::Node::Answer::
|
11
|
-
@q1_a3 = ActiveRecordSurvey::Node::Answer::
|
12
|
-
@q1_a4 = ActiveRecordSurvey::Node::Answer::
|
13
|
-
@q1_a5 = ActiveRecordSurvey::Node::Answer::
|
9
|
+
@q1_a1 = ActiveRecordSurvey::Node::Answer::Rank.new()
|
10
|
+
@q1_a2 = ActiveRecordSurvey::Node::Answer::Rank.new()
|
11
|
+
@q1_a3 = ActiveRecordSurvey::Node::Answer::Rank.new()
|
12
|
+
@q1_a4 = ActiveRecordSurvey::Node::Answer::Rank.new()
|
13
|
+
@q1_a5 = ActiveRecordSurvey::Node::Answer::Rank.new()
|
14
14
|
|
15
15
|
@survey.build_question(@q1)
|
16
16
|
@q1.build_answer(@q1_a1, @survey)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe ActiveRecordSurvey::Node::Answer::
|
3
|
+
describe ActiveRecordSurvey::Node::Answer::Scale, :scale_spec => true do
|
4
4
|
describe 'survey is' do
|
5
5
|
before(:all) do
|
6
6
|
@survey = ActiveRecordSurvey::Survey.new
|
7
7
|
|
8
8
|
@q1 = ActiveRecordSurvey::Node::Question.new()
|
9
|
-
@q1_a1 = ActiveRecordSurvey::Node::Answer::
|
10
|
-
@q1_a2 = ActiveRecordSurvey::Node::Answer::
|
11
|
-
@q1_a3 = ActiveRecordSurvey::Node::Answer::
|
9
|
+
@q1_a1 = ActiveRecordSurvey::Node::Answer::Scale.new()
|
10
|
+
@q1_a2 = ActiveRecordSurvey::Node::Answer::Scale.new()
|
11
|
+
@q1_a3 = ActiveRecordSurvey::Node::Answer::Scale.new()
|
12
12
|
|
13
13
|
@survey.build_question(@q1)
|
14
14
|
@q1.build_answer(@q1_a1, @survey)
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe ActiveRecordSurvey::Node::Answer::
|
3
|
+
describe ActiveRecordSurvey::Node::Answer::Text, :text_spec => true do
|
4
4
|
describe 'a text survey is' do
|
5
5
|
before(:all) do
|
6
6
|
@survey = ActiveRecordSurvey::Survey.new
|
7
7
|
|
8
8
|
@q1 = ActiveRecordSurvey::Node::Question.new()
|
9
|
-
@q1_a1 = ActiveRecordSurvey::Node::Answer::
|
10
|
-
@q1_a2 = ActiveRecordSurvey::Node::Answer::
|
9
|
+
@q1_a1 = ActiveRecordSurvey::Node::Answer::Text.new()
|
10
|
+
@q1_a2 = ActiveRecordSurvey::Node::Answer::Text.new()
|
11
11
|
|
12
12
|
@survey.build_question(@q1)
|
13
13
|
@q1.build_answer(@q1_a1)
|
@@ -31,6 +31,48 @@ describe ActiveRecordSurvey::Node::Answer, :answer_spec => true do
|
|
31
31
|
expect{q3_a1.build_link(q1)}.to raise_error(RuntimeError) # This should throw exception
|
32
32
|
end
|
33
33
|
|
34
|
+
it 'should keep consistent number of nodes after calling #remove_link and #build_link', :focus => true do
|
35
|
+
survey = FactoryGirl.build(:simple_survey)
|
36
|
+
survey.save
|
37
|
+
q = ActiveRecordSurvey::Node::Question.new(:text => "Question Linkable")
|
38
|
+
survey.build_question(q)
|
39
|
+
q_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Question Linkable Answer #1")
|
40
|
+
q_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Question Linkable Answer #2")
|
41
|
+
q.build_answer(q_a1)
|
42
|
+
q.build_answer(q_a2)
|
43
|
+
survey.save
|
44
|
+
|
45
|
+
# Find Q4 Answer #2
|
46
|
+
q4_a2 = nil
|
47
|
+
survey.questions.each { |q|
|
48
|
+
if q.text == "Question #4"
|
49
|
+
q.answers.each { |a|
|
50
|
+
q4_a2 = a if a.text == "Q4 Answer #2"
|
51
|
+
}
|
52
|
+
end
|
53
|
+
}
|
54
|
+
|
55
|
+
survey.reload
|
56
|
+
expect(survey.node_maps.length).to eq(34)
|
57
|
+
|
58
|
+
q4_a2.build_link(q)
|
59
|
+
q4_a2.save
|
60
|
+
survey.reload
|
61
|
+
expect(survey.node_maps.length).to eq(49)
|
62
|
+
|
63
|
+
q4_a2.remove_link
|
64
|
+
q4_a2.save
|
65
|
+
survey.reload
|
66
|
+
expect(survey.node_maps.length).to eq(34)
|
67
|
+
|
68
|
+
q.reload # This is needed - won't build properly... its wierd... gotta fix this
|
69
|
+
q4_a2.build_link(q)
|
70
|
+
|
71
|
+
q4_a2.save
|
72
|
+
survey.reload
|
73
|
+
expect(survey.node_maps.length).to eq(49)
|
74
|
+
end
|
75
|
+
|
34
76
|
it 'should be allowed before saving after calling #remove_link' do
|
35
77
|
survey = ActiveRecordSurvey::Survey.new()
|
36
78
|
|
@@ -59,9 +101,9 @@ describe ActiveRecordSurvey::Node::Answer, :answer_spec => true do
|
|
59
101
|
expect(survey.as_map).to eq([{"text"=>"Q1", :id=>nil, :node_id=>nil, :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 A1", :id=>nil, :node_id=>nil, :type=>"ActiveRecordSurvey::Node::Answer", :children=>[{"text"=>"Q3", :id=>nil, :node_id=>nil, :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}]}]}, {"text"=>"Q2", :id=>nil, :node_id=>nil, :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}])
|
60
102
|
|
61
103
|
survey.save
|
62
|
-
expect(survey.as_map).to eq([{"text"=>"Q1", :id=>
|
104
|
+
expect(survey.as_map).to eq([{"text"=>"Q1", :id=>339, :node_id=>93, :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 A1", :id=>340, :node_id=>94, :type=>"ActiveRecordSurvey::Node::Answer", :children=>[{"text"=>"Q3", :id=>341, :node_id=>95, :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}]}]}, {"text"=>"Q2", :id=>342, :node_id=>96, :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}])
|
63
105
|
survey.reload
|
64
|
-
expect(survey.as_map).to eq([{"text"=>"Q1", :id=>
|
106
|
+
expect(survey.as_map).to eq([{"text"=>"Q1", :id=>339, :node_id=>93, :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 A1", :id=>340, :node_id=>94, :type=>"ActiveRecordSurvey::Node::Answer", :children=>[{"text"=>"Q3", :id=>341, :node_id=>95, :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}]}]}, {"text"=>"Q2", :id=>342, :node_id=>96, :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}])
|
65
107
|
end
|
66
108
|
end
|
67
109
|
|
@@ -109,11 +109,11 @@ describe ActiveRecordSurvey::Node::Question, :question_spec => true do
|
|
109
109
|
expect(@survey.node_maps.length).to eq(31)
|
110
110
|
|
111
111
|
@q5 = ActiveRecordSurvey::Node::Question.new(:text => "Question #5")
|
112
|
-
@q5_a1 = ActiveRecordSurvey::Node::Answer::
|
113
|
-
@q5_a2 = ActiveRecordSurvey::Node::Answer::
|
114
|
-
@q5_a3 = ActiveRecordSurvey::Node::Answer::
|
115
|
-
@q5_a4 = ActiveRecordSurvey::Node::Answer::
|
116
|
-
@q5_a5 = ActiveRecordSurvey::Node::Answer::
|
112
|
+
@q5_a1 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 Answer #1")
|
113
|
+
@q5_a2 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 Answer #2")
|
114
|
+
@q5_a3 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 Answer #3")
|
115
|
+
@q5_a4 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 Answer #4")
|
116
|
+
@q5_a5 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 Answer #5")
|
117
117
|
# Boolean builds the links differently! - it chains them so there is no branching choice
|
118
118
|
@q5.build_answer(@q5_a1, @survey)
|
119
119
|
@q5.build_answer(@q5_a2, @survey)
|
@@ -135,7 +135,7 @@ describe ActiveRecordSurvey::Node::Question, :question_spec => true do
|
|
135
135
|
|
136
136
|
expect(@survey.node_maps.length).to eq(74)
|
137
137
|
|
138
|
-
expect(@survey.as_map.as_json).to eq([{"text"=>"Question #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q1 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q2 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::
|
138
|
+
expect(@survey.as_map.as_json).to eq([{"text"=>"Question #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q1 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q2 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q2 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q3 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q3 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q1 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q3 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q3 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}]}]}, {"text"=>"Q1 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q1 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}]}])
|
139
139
|
|
140
140
|
# Cannot build a link when a link already exists
|
141
141
|
expect { @q1_a2.build_link(@q2) }.to raise_error RuntimeError
|
@@ -143,11 +143,11 @@ describe ActiveRecordSurvey::Node::Question, :question_spec => true do
|
|
143
143
|
# Remove the link
|
144
144
|
@q1_a2.remove_link
|
145
145
|
|
146
|
-
expect(@survey.as_map.as_json).to eq([{"text"=>"Question #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q1 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q2 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::
|
146
|
+
expect(@survey.as_map.as_json).to eq([{"text"=>"Question #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q1 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q2 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q2 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q3 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q3 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q1 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}, {"text"=>"Q1 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q1 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}]}, {"text"=>"Question #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q3 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q3 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}]}])
|
147
147
|
|
148
148
|
@q1_a2.build_link(@q3)
|
149
149
|
|
150
|
-
expect(@survey.as_map.as_json).to eq([{"text"=>"Question #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q1 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q2 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::
|
150
|
+
expect(@survey.as_map.as_json).to eq([{"text"=>"Question #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q1 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q2 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q2 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q3 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q3 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q1 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q3 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q3 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}]}]}, {"text"=>"Q1 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q4 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}, {"text"=>"Q4 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[]}]}]}, {"text"=>"Q1 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer", "children"=>[{"text"=>"Question #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Question", "children"=>[{"text"=>"Q5 Answer #1", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #2", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #3", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #4", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[{"text"=>"Q5 Answer #5", "id"=>nil, "node_id"=>nil, "type"=>"ActiveRecordSurvey::Node::Answer::Boolean", "children"=>[]}]}]}]}]}]}]}]}])
|
151
151
|
end
|
152
152
|
end
|
153
153
|
end
|
@@ -1,5 +1,49 @@
|
|
1
1
|
module FactoryGirlSurveyHelpers
|
2
2
|
extend self
|
3
|
+
def build_simple_survey(survey)
|
4
|
+
q1 = ActiveRecordSurvey::Node::Question.new(:text => "Question #1")
|
5
|
+
survey.build_question(q1)
|
6
|
+
q1_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Q1 Answer #1")
|
7
|
+
q1_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Q1 Answer #2")
|
8
|
+
q1_a3 = ActiveRecordSurvey::Node::Answer.new(:text => "Q1 Answer #3")
|
9
|
+
q1.build_answer(q1_a1)
|
10
|
+
q1.build_answer(q1_a2)
|
11
|
+
q1.build_answer(q1_a3)
|
12
|
+
|
13
|
+
q2 = ActiveRecordSurvey::Node::Question.new(:text => "Question #2")
|
14
|
+
survey.build_question(q2)
|
15
|
+
q2_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Q2 Answer #1")
|
16
|
+
q2_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Q2 Answer #2")
|
17
|
+
q2.build_answer(q2_a1)
|
18
|
+
q2.build_answer(q2_a2)
|
19
|
+
|
20
|
+
q3 = ActiveRecordSurvey::Node::Question.new(:text => "Question #3")
|
21
|
+
survey.build_question(q3)
|
22
|
+
q3_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Q3 Answer #1")
|
23
|
+
q3_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Q3 Answer #2")
|
24
|
+
q3.build_answer(q3_a1)
|
25
|
+
q3.build_answer(q3_a2)
|
26
|
+
|
27
|
+
q4 = ActiveRecordSurvey::Node::Question.new(:text => "Question #4")
|
28
|
+
survey.build_question(q4)
|
29
|
+
q4_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Q4 Answer #1")
|
30
|
+
q4_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Q4 Answer #2")
|
31
|
+
q4.build_answer(q4_a1)
|
32
|
+
q4.build_answer(q4_a2)
|
33
|
+
|
34
|
+
# Link up Q1
|
35
|
+
q1_a1.build_link(q2)
|
36
|
+
q1_a2.build_link(q3)
|
37
|
+
q1_a3.build_link(q4)
|
38
|
+
|
39
|
+
# Link up Q2
|
40
|
+
q2_a1.build_link(q4)
|
41
|
+
q2_a2.build_link(q3)
|
42
|
+
|
43
|
+
# Link up Q3
|
44
|
+
q3_a1.build_link(q4)
|
45
|
+
q3_a2.build_link(q4)
|
46
|
+
end
|
3
47
|
def build_basic_survey(survey)
|
4
48
|
q1 = ActiveRecordSurvey::Node::Question.new(:text => "Q1")
|
5
49
|
survey.build_question(q1)
|
@@ -33,8 +77,8 @@ module FactoryGirlSurveyHelpers
|
|
33
77
|
|
34
78
|
q5 = ActiveRecordSurvey::Node::Question.new(:text => "Q5 Boolean")
|
35
79
|
survey.build_question(q5)
|
36
|
-
q5_a1 = ActiveRecordSurvey::Node::Answer::
|
37
|
-
q5_a2 = ActiveRecordSurvey::Node::Answer::
|
80
|
+
q5_a1 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 A1")
|
81
|
+
q5_a2 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q5 A2")
|
38
82
|
q5.build_answer(q5_a1)
|
39
83
|
q5.build_answer(q5_a2)
|
40
84
|
|
@@ -72,6 +116,10 @@ FactoryGirl.define do
|
|
72
116
|
|
73
117
|
end
|
74
118
|
|
119
|
+
factory :simple_survey, parent: :survey do |f|
|
120
|
+
after(:build) { |survey| FactoryGirlSurveyHelpers.build_simple_survey(survey) }
|
121
|
+
end
|
122
|
+
|
75
123
|
factory :basic_survey, parent: :survey do |f|
|
76
124
|
after(:build) { |survey| FactoryGirlSurveyHelpers.build_basic_survey(survey) }
|
77
125
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_survey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Butch Marshall
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -145,11 +145,11 @@ files:
|
|
145
145
|
- lib/active_record_survey/instance_node.rb
|
146
146
|
- lib/active_record_survey/node.rb
|
147
147
|
- lib/active_record_survey/node/answer.rb
|
148
|
-
- lib/active_record_survey/node/answer/
|
149
|
-
- lib/active_record_survey/node/answer/
|
150
|
-
- lib/active_record_survey/node/answer/
|
151
|
-
- lib/active_record_survey/node/answer/
|
152
|
-
- lib/active_record_survey/node/answer/
|
148
|
+
- lib/active_record_survey/node/answer/boolean.rb
|
149
|
+
- lib/active_record_survey/node/answer/chained.rb
|
150
|
+
- lib/active_record_survey/node/answer/rank.rb
|
151
|
+
- lib/active_record_survey/node/answer/scale.rb
|
152
|
+
- lib/active_record_survey/node/answer/text.rb
|
153
153
|
- lib/active_record_survey/node/question.rb
|
154
154
|
- lib/active_record_survey/node_map.rb
|
155
155
|
- lib/active_record_survey/node_validation.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module ActiveRecordSurvey
|
2
|
-
# Boolean answers can have values 0|1
|
3
|
-
class Node::Answer::Chain < Node::Answer
|
4
|
-
|
5
|
-
def is_answered_for_instance?(instance)
|
6
|
-
if instance_node = self.instance_node_for_instance(instance)
|
7
|
-
# Instance node is answered "1"
|
8
|
-
(instance_node.value.to_i === 1)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
# Chain nodes are different - they must find the final answer node added and add to it
|
13
|
-
def build_answer(question_node, survey)
|
14
|
-
# No node_maps exist yet from this question
|
15
|
-
if question_node.node_maps.length === 0
|
16
|
-
# Build our first node-map
|
17
|
-
question_node.node_maps.build(:node => question_node, :survey => survey)
|
18
|
-
end
|
19
|
-
|
20
|
-
last_in_chain = question_node.answers.last || question_node
|
21
|
-
|
22
|
-
# Each instance of this question needs the answer hung from it
|
23
|
-
last_in_chain.node_maps.each { |node_map|
|
24
|
-
answer_node_map = self.node_maps.build(:node => self, :survey => survey)
|
25
|
-
node_map.children << answer_node_map
|
26
|
-
}
|
27
|
-
|
28
|
-
true
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|