active_record_survey 0.1.23 → 0.1.25
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.
- 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
|