active_record_survey 0.1.37 → 0.1.38
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 241fd16207e3dbcd096b90623040aa4142152663
|
4
|
+
data.tar.gz: 6ccfd912a9438462a86152a38e4b783c3088d85d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e30a4dda78ec1c903d70100db1a83dc6fdbbf0a93d213b329a389a02f5beadad0cefdcff43e02d1b790ce053e924345beabd502da3c89bd54369a36a7a6efb1c
|
7
|
+
data.tar.gz: a80ed53f9f0261fe74ef34537b28451d3291fd9d72ff5cf04a26b72a26cd2a3ee9bdccb3c399970e21f5570bb95f67acd00937c3661fcd42a2bed2ef642ccf76
|
@@ -86,5 +86,24 @@ module ActiveRecordSurvey
|
|
86
86
|
|
87
87
|
list.compact.uniq
|
88
88
|
end
|
89
|
+
|
90
|
+
private
|
91
|
+
# Before a node is destroyed, will re-build the node_map links from parent to child if they exist
|
92
|
+
# If a question is being destroyed and it has answers - don't link its answers - only parent questions that follow it
|
93
|
+
def before_destroy_rebuild_node_map
|
94
|
+
|
95
|
+
self.survey.node_maps.select { |i|
|
96
|
+
i.node == self
|
97
|
+
}.each { |node_map|
|
98
|
+
# Remap all of this nodes children to the parent
|
99
|
+
node_map.children.each { |child|
|
100
|
+
if !child.node.class.ancestors.include?(::ActiveRecordSurvey::Node::Answer)
|
101
|
+
node_map.parent.children << child
|
102
|
+
end
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
true
|
107
|
+
end
|
89
108
|
end
|
90
109
|
end
|
@@ -1,8 +1,58 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ActiveRecordSurvey::Node::Question, :question_spec => true do
|
4
|
+
describe "#before_destroy_rebuild_node_map" do
|
5
|
+
it 'should not relink any following questions' do
|
6
|
+
@survey = ActiveRecordSurvey::Survey.new()
|
7
|
+
@survey.save
|
8
|
+
|
9
|
+
@q1 = ActiveRecordSurvey::Node::Question.new(:text => "Question #1", :survey => @survey)
|
10
|
+
@q1_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Answer #1a")
|
11
|
+
@q1.build_answer(@q1_a1)
|
12
|
+
|
13
|
+
@q2 = ActiveRecordSurvey::Node::Question.new(:text => "Question #2", :survey => @survey)
|
14
|
+
@q2_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Answer #1b")
|
15
|
+
@q2.build_answer(@q2_a1)
|
16
|
+
|
17
|
+
@q3 = ActiveRecordSurvey::Node::Question.new(:text => "Question #3", :survey => @survey)
|
18
|
+
@q3_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Answer #1c")
|
19
|
+
@q3.build_answer(@q3_a1)
|
20
|
+
|
21
|
+
@q1_a1.build_link(@q2)
|
22
|
+
@q2_a1.build_link(@q3)
|
23
|
+
|
24
|
+
@survey.save
|
25
|
+
|
26
|
+
@q2.destroy
|
27
|
+
@survey.reload
|
28
|
+
|
29
|
+
expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Answer #1a", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should relink any following questions' do
|
33
|
+
@survey = ActiveRecordSurvey::Survey.new()
|
34
|
+
|
35
|
+
@q1 = ActiveRecordSurvey::Node::Question.new(:text => "Question #1", :survey => @survey)
|
36
|
+
@q2 = ActiveRecordSurvey::Node::Question.new(:text => "Question #2", :survey => @survey)
|
37
|
+
@q3 = ActiveRecordSurvey::Node::Question.new(:text => "Question #3", :survey => @survey)
|
38
|
+
|
39
|
+
@survey.build_first_question(@q1)
|
40
|
+
@q1.build_link(@q2)
|
41
|
+
@q2.build_link(@q3)
|
42
|
+
|
43
|
+
@survey.save
|
44
|
+
|
45
|
+
expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Question #2", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Question #3", :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}]}]}])
|
46
|
+
|
47
|
+
@q2.destroy
|
48
|
+
@survey.reload
|
49
|
+
|
50
|
+
expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Question #3", :type=>"ActiveRecordSurvey::Node::Question", :children=>[]}]}])
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
4
54
|
describe "#remove_link" do
|
5
|
-
it 'should remove the link between the question and child questions or answers child questions'
|
55
|
+
it 'should remove the link between the question and child questions or answers child questions' do
|
6
56
|
@survey = ActiveRecordSurvey::Survey.new()
|
7
57
|
@survey.save
|
8
58
|
|
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.38
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Butch Marshall
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|