active_record_survey 0.1.32 → 0.1.34

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18f0a2bc583b09e654fbbb966f3e9899a8d67a4b
4
- data.tar.gz: e41e6c23da5678240d833549fff30c60235bd90c
3
+ metadata.gz: 26eecc198f8c314ac2a23e3f746dcc823acb9720
4
+ data.tar.gz: 1e7076165aff517190a7e0f45b804d6b0fa0e93d
5
5
  SHA512:
6
- metadata.gz: 47469259ac340357ac77f839042871b284e0c64b98d7036697edf5eec114dc802e179e038ce72dca1d7917ffaa5b495fc6aced94ca11a004066181898f0ca3f4
7
- data.tar.gz: 2ebcef691288d4a91228da1bdcc31f41565fbdc24b103069532fae7a2cba7fb05c5edf9b956dc211703993ffbb9a003c983e3dd69f5fb7c51105f724a2e86656
6
+ metadata.gz: e4a76741e270ffcec64140526bf6467f40a82e55126c73796f357936a1e7a4a7085f07c662b71a24b4dc5dfcd340cdde9b61bff721aebe2b8a6f17496dcc4554
7
+ data.tar.gz: ae0b50818d46601fce209a7452b311bfcbd962e27c4ebbd4213254bb3b2b0a5b2504d9b54b80c0073a3db5116bf2be17686e6fe9c765083400637fed1cdbdce0
data/README.md CHANGED
@@ -12,6 +12,9 @@ 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.33**
16
+ - `ActiveRecordSurvey::Node::Answer#sibling_index` method for setting position as well
17
+
15
18
  **0.1.32**
16
19
  - `ActiveRecordSurvey::Node::Answer#sibling_index` for regular answers and chained answers
17
20
 
@@ -11,22 +11,6 @@ module ActiveRecordSurvey
11
11
  }.include?(false)
12
12
  end
13
13
 
14
- # Gets index in sibling relationship
15
- def sibling_index
16
- if node_map = self.survey.node_maps.select { |i|
17
- i.node == self
18
- }.first
19
-
20
- node_map.parent.children.each_with_index { |nm, i|
21
- if nm == node_map
22
- return i
23
- end
24
- }
25
- end
26
-
27
- return 0
28
- end
29
-
30
14
  # Returns the question that preceeds this answer
31
15
  def question
32
16
  self.survey.node_maps.select { |i|
@@ -151,9 +135,35 @@ module ActiveRecordSurvey
151
135
  }
152
136
  end
153
137
 
138
+ # Gets index in sibling relationship
139
+ def sibling_index
140
+ if node_map = self.survey.node_maps.select { |i|
141
+ i.node == self
142
+ }.first
143
+
144
+ node_map.parent.children.each_with_index { |nm, i|
145
+ if nm == node_map
146
+ return i
147
+ end
148
+ }
149
+ end
150
+
151
+ return 0
152
+ end
153
+
154
+ def sibling_index=index
155
+ current_index = self.sibling_index
156
+
157
+ offset = index - current_index
158
+
159
+ (1..offset.abs).each { |i|
160
+ self.send(((offset > 0)? "move_down" : "move_up"))
161
+ }
162
+ end
163
+
154
164
  # Moves answer up relative to other answers
155
165
  def move_up
156
- !self.survey.node_maps.select { |i|
166
+ self.survey.node_maps.select { |i|
157
167
  i.node == self
158
168
  }.collect { |node_map|
159
169
  begin
@@ -165,7 +175,7 @@ module ActiveRecordSurvey
165
175
 
166
176
  # Moves answer down relative to other answers
167
177
  def move_down
168
- !self.survey.node_maps.select { |i|
178
+ self.survey.node_maps.select { |i|
169
179
  i.node == self
170
180
  }.collect { |node_map|
171
181
  begin
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordSurvey
2
- VERSION = "0.1.32"
2
+ VERSION = "0.1.34"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveRecordSurvey::Node::Answer::Boolean, :boolean_spec => true do
4
- describe '#sibling_index', :focus => true do
4
+ describe '#sibling_index' do
5
5
  before(:each) do
6
6
  @survey = ActiveRecordSurvey::Survey.new()
7
7
  @q1 = ActiveRecordSurvey::Node::Question.new(:text => "Question #1", :survey => @survey)
@@ -34,6 +34,22 @@ describe ActiveRecordSurvey::Node::Answer::Boolean, :boolean_spec => true do
34
34
  @survey.save
35
35
  end
36
36
 
37
+ describe '#sibling_index' do
38
+ it 'should go higher if possible' do
39
+ @q1_a3.sibling_index = 0
40
+
41
+ @survey.reload
42
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer::Boolean", :children=>[{"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer::Boolean", :children=>[{"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer::Boolean", :children=>[]}]}]}]}])
43
+ end
44
+
45
+ it 'should go lower if possible' do
46
+ @q1_a1.sibling_index = 2
47
+
48
+ @survey.reload
49
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer::Boolean", :children=>[{"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer::Boolean", :children=>[{"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer::Boolean", :children=>[]}]}]}]}])
50
+ end
51
+ end
52
+
37
53
  describe '#move_up' do
38
54
  it 'should go higher of possible' do
39
55
  @q1_a2.move_up
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveRecordSurvey::Node::Answer, :answer_spec => true do
4
4
 
5
- describe '#sibling_index', :focus => true do
5
+ describe '#sibling_index' do
6
6
  before(:each) do
7
7
  @survey = ActiveRecordSurvey::Survey.new()
8
8
  @q1 = ActiveRecordSurvey::Node::Question.new(:text => "Question #1", :survey => @survey)
@@ -35,8 +35,41 @@ describe ActiveRecordSurvey::Node::Answer, :answer_spec => true do
35
35
  @survey.save
36
36
  end
37
37
 
38
+ describe '#sibling_index' do
39
+ it 'should go higher if possible' do
40
+ @q1_a3.sibling_index = 0
41
+
42
+ @survey.reload
43
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
44
+
45
+ @survey.save
46
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
47
+
48
+ @survey.reload
49
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
50
+ end
51
+
52
+ it 'should go lower by one' do
53
+ @q1_a1.sibling_index = 1
54
+ @survey.reload
55
+ end
56
+
57
+ it 'should go lower if possible' do
58
+ @q1_a1.sibling_index = 2
59
+
60
+ @survey.reload
61
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
62
+
63
+ @survey.save
64
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
65
+
66
+ @survey.reload
67
+ expect(@survey.as_map(no_ids: true)).to eq([{"text"=>"Question #1", :type=>"ActiveRecordSurvey::Node::Question", :children=>[{"text"=>"Q1 Answer #2", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #3", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}, {"text"=>"Q1 Answer #1", :type=>"ActiveRecordSurvey::Node::Answer", :children=>[]}]}])
68
+ end
69
+ end
70
+
38
71
  describe '#move_up' do
39
- it 'should go higher of possible' do
72
+ it 'should go higher if possible' do
40
73
  @q1_a2.move_up
41
74
 
42
75
  @survey.reload
@@ -52,7 +85,7 @@ describe ActiveRecordSurvey::Node::Answer, :answer_spec => true do
52
85
  end
53
86
 
54
87
  describe '#move_down' do
55
- it 'should go lower of possible' do
88
+ it 'should go lower if possible' do
56
89
  @q1_a2.move_down
57
90
 
58
91
  @survey.reload
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_survey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.32
4
+ version: 0.1.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Butch Marshall