hide_ancestry 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/hide_ancestry_migration/hide_ancestry_migration_generator.rb +2 -2
- data/lib/generators/hide_ancestry_migration/templates/hide_ancestry_migration.rb +1 -1
- data/lib/hide_ancestry/has_hide_ancestry.rb +8 -8
- data/lib/hide_ancestry/instance_methods.rb +28 -28
- data/lib/hide_ancestry/model_manage/base.rb +3 -3
- data/lib/hide_ancestry/model_manage/custom_ancestry_updater.rb +23 -23
- data/lib/hide_ancestry/model_manage/hide.rb +2 -2
- data/lib/hide_ancestry/model_manage/restore.rb +2 -2
- data/lib/hide_ancestry/validators.rb +1 -1
- data/lib/hide_ancestry/version.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20161217174321_add_hide_ancestry_cols_to_monkeys.rb +1 -1
- data/spec/dummy/db/schema.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +414 -0
- data/spec/dummy/log/test.log +12651 -0
- data/spec/factories/monkey.rb +1 -1
- data/spec/lib/hide_ancestry/instance_methods_spec.rb +29 -29
- data/spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/{hided_nodes_cases_spec.rb → hidden_nodes_cases_spec.rb} +12 -12
- data/spec/lib/hide_ancestry/model_manage/hide_spec.rb +6 -6
- data/spec/lib/hide_ancestry/model_manage/restore_spec.rb +6 -6
- data/spec/lib/hide_ancestry/model_manage/validators_spec.rb +5 -5
- data/spec/models/bonobo_spec.rb +1 -1
- data/spec/support/shared_examples/has_hide_ancestry_examples.rb +4 -4
- data/spec/support/shared_examples/instance_methods_examples.rb +9 -9
- metadata +3 -3
data/spec/factories/monkey.rb
CHANGED
@@ -18,23 +18,23 @@ describe HideAncestry::InstanceMethods do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
context '#restore' do
|
21
|
-
let(:
|
21
|
+
let(:hidden) { create :hidden_monkey }
|
22
22
|
|
23
23
|
it 'return #not_valid_error unless #valid?' do
|
24
|
-
allow(
|
25
|
-
|
26
|
-
expect(
|
24
|
+
allow(hidden).to receive(:valid?).and_return false
|
25
|
+
hidden.restore
|
26
|
+
expect(hidden.errors[:base].first).to include 'not valid'
|
27
27
|
end
|
28
28
|
|
29
|
-
it 'return #already_restored_error unless
|
29
|
+
it 'return #already_restored_error unless hidden' do
|
30
30
|
parent.restore
|
31
31
|
expect(parent.errors[:base].first).to include 'Already restored'
|
32
32
|
end
|
33
33
|
|
34
34
|
it do
|
35
35
|
expect(HideAncestry::ModelManage::Restore)
|
36
|
-
.to receive(:call).with(
|
37
|
-
|
36
|
+
.to receive(:call).with(hidden)
|
37
|
+
hidden.restore
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -61,49 +61,49 @@ describe HideAncestry::InstanceMethods do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
context '#
|
65
|
-
subject { child.reload.
|
64
|
+
context '#hidden_parent_changed?' do
|
65
|
+
subject { child.reload.hidden_parent_changed? }
|
66
66
|
|
67
|
-
it 'true if node grandparent !=
|
67
|
+
it 'true if node grandparent != hidden parent old parent' do
|
68
68
|
HideAncestry::ModelManage::Hide.call(parent)
|
69
69
|
allow(child).to receive(:parent_id).and_return 111
|
70
70
|
is_expected.to be_truthy
|
71
71
|
end
|
72
72
|
|
73
|
-
it 'false if node grandparent ==
|
73
|
+
it 'false if node grandparent == hidden parent old parent' do
|
74
74
|
HideAncestry::ModelManage::Hide.call(parent)
|
75
75
|
is_expected.to be_falsey
|
76
76
|
end
|
77
77
|
|
78
|
-
it 'false if no
|
79
|
-
allow(child).to receive(:
|
78
|
+
it 'false if no hidden parent' do
|
79
|
+
allow(child).to receive(:hidden_parent).and_return nil
|
80
80
|
is_expected.to be_falsey
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
context '#
|
84
|
+
context '#hidden_parent' do
|
85
85
|
before { HideAncestry::ModelManage::Hide.call(grandparent) }
|
86
86
|
|
87
|
-
it 'return record#
|
87
|
+
it 'return record#hidden? which ' \
|
88
88
|
'includes node#id in #old_child_ids' do
|
89
|
-
expect(parent.
|
89
|
+
expect(parent.hidden_parent).to eq grandparent
|
90
90
|
expect(parent.reload.parent).to be_nil
|
91
91
|
end
|
92
92
|
|
93
|
-
it 'return nil if no record#
|
93
|
+
it 'return nil if no record#hidden? ' \
|
94
94
|
'with node#id in #old_child_ids' do
|
95
|
-
expect(child.
|
95
|
+
expect(child.hidden_parent).to be_nil
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
-
context '#
|
99
|
+
context '#hidden_descendants_ids' do
|
100
100
|
before { HideAncestry::ModelManage::Hide.call(parent) }
|
101
101
|
|
102
|
-
it 'return ids nodes#
|
102
|
+
it 'return ids nodes#hidden?, ' \
|
103
103
|
'which #old_parent_id eql to descendants ids' do
|
104
104
|
|
105
|
-
expect(grandparent.
|
106
|
-
expect(child.
|
105
|
+
expect(grandparent.hidden_descendants_ids).to include parent.id
|
106
|
+
expect(child.hidden_descendants_ids).to be_blank
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -122,18 +122,18 @@ describe HideAncestry::InstanceMethods do
|
|
122
122
|
expect(grandparent.find_first_real_parent).to be_nil
|
123
123
|
end
|
124
124
|
|
125
|
-
it 'call itself to finded if record#
|
125
|
+
it 'call itself to finded if record#hidden?' do
|
126
126
|
HideAncestry::ModelManage::Hide.call(parent)
|
127
127
|
HideAncestry::ModelManage::Hide.call(child)
|
128
128
|
expect(child.find_first_real_parent).to eq grandparent
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
context '#
|
132
|
+
context '#depth_with_hidden' do
|
133
133
|
it 'return #size of #hide_ancestry_ids' do
|
134
134
|
ids = [1, 2, 3]
|
135
135
|
allow(parent).to receive(:hide_ancestry_ids).and_return(ids)
|
136
|
-
expect(parent.
|
136
|
+
expect(parent.depth_with_hidden).to eq 3
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -146,17 +146,17 @@ describe HideAncestry::InstanceMethods do
|
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
-
context '#
|
149
|
+
context '#subtree_with_hidden' do
|
150
150
|
it 'calls subtree ids as array' do
|
151
151
|
expect(parent).to receive_message_chain('subtree.pluck')
|
152
152
|
.with(:id)
|
153
153
|
.and_return []
|
154
154
|
|
155
|
-
parent.
|
155
|
+
parent.subtree_with_hidden
|
156
156
|
end
|
157
157
|
|
158
158
|
context 'return ordered relation' do
|
159
|
-
let(:relation) { grandparent.
|
159
|
+
let(:relation) { grandparent.subtree_with_hidden }
|
160
160
|
|
161
161
|
after do
|
162
162
|
expect(relation.first.id).to eq grandparent.id
|
@@ -168,7 +168,7 @@ describe HideAncestry::InstanceMethods do
|
|
168
168
|
relation
|
169
169
|
end
|
170
170
|
|
171
|
-
it 'return ordered relation even node is
|
171
|
+
it 'return ordered relation even node is hidden' do
|
172
172
|
parent.hide
|
173
173
|
relation
|
174
174
|
end
|
@@ -5,7 +5,7 @@ describe HideAncestry::ModelManage::CustomAncestryUpdater do
|
|
5
5
|
|
6
6
|
let(:root_monkey) { create :monkey }
|
7
7
|
|
8
|
-
describe 'when #
|
8
|
+
describe 'when #hidden_status' do
|
9
9
|
context 'does not change custom ancestry cols' do
|
10
10
|
context 'of called node' do
|
11
11
|
let!(:before_hide_ancestry) { parent.hide_ancestry }
|
@@ -34,8 +34,8 @@ describe HideAncestry::ModelManage::CustomAncestryUpdater do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
context 'and parent of
|
38
|
-
let!(:
|
37
|
+
context 'and parent of hidden node changes its parent' do
|
38
|
+
let!(:old_hidden_path) { parent.hide_ancestry_ids }
|
39
39
|
|
40
40
|
let(:new_parent) { create :monkey }
|
41
41
|
|
@@ -46,13 +46,13 @@ describe HideAncestry::ModelManage::CustomAncestryUpdater do
|
|
46
46
|
|
47
47
|
it 'node#hide_ancestry changes' do
|
48
48
|
expect(parent.reload.hide_ancestry_ids).to include new_parent.id
|
49
|
-
expect(parent.hide_ancestry_ids).not_to eq
|
49
|
+
expect(parent.hide_ancestry_ids).not_to eq old_hidden_path
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
describe 'and parent of
|
55
|
-
let!(:
|
54
|
+
describe 'and parent of hidden node changes its parent' do
|
55
|
+
let!(:old_hidden_path) { parent.hide_ancestry_ids }
|
56
56
|
|
57
57
|
let(:new_parent) { create :monkey }
|
58
58
|
|
@@ -63,12 +63,12 @@ describe HideAncestry::ModelManage::CustomAncestryUpdater do
|
|
63
63
|
|
64
64
|
it 'node#hide_ancestry changes' do
|
65
65
|
expect(parent.reload.hide_ancestry_ids).to include new_parent.id
|
66
|
-
expect(parent.hide_ancestry_ids).not_to eq
|
66
|
+
expect(parent.hide_ancestry_ids).not_to eq old_hidden_path
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
describe do
|
71
|
-
context '
|
71
|
+
context 'hidden parent, child changes path' do
|
72
72
|
before do
|
73
73
|
parent.hide
|
74
74
|
child.update parent: root_monkey
|
@@ -81,7 +81,7 @@ describe HideAncestry::ModelManage::CustomAncestryUpdater do
|
|
81
81
|
it { expect(subject).not_to include grandparent.id }
|
82
82
|
end
|
83
83
|
|
84
|
-
context '
|
84
|
+
context 'hidden parent, child does not changes path' do
|
85
85
|
before { parent.hide }
|
86
86
|
|
87
87
|
subject { child.reload.hide_ancestry_ids }
|
@@ -91,15 +91,15 @@ describe HideAncestry::ModelManage::CustomAncestryUpdater do
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
describe '
|
95
|
-
let!(:
|
94
|
+
describe 'hidden parent, changed subtree' do
|
95
|
+
let!(:some_hidden_monkey) { create :hidden_monkey }
|
96
96
|
|
97
97
|
before do
|
98
98
|
parent.hide
|
99
99
|
grandparent.update parent: root_monkey
|
100
100
|
end
|
101
101
|
|
102
|
-
it 'changes #hide_ancestry of subtree
|
102
|
+
it 'changes #hide_ancestry of subtree hidden monkeys' do
|
103
103
|
expect(parent.reload.hide_ancestry_ids).to include root_monkey.id
|
104
104
|
end
|
105
105
|
end
|
@@ -8,7 +8,7 @@ describe HideAncestry::ModelManage::Hide do
|
|
8
8
|
subject { described_class.new(parent) }
|
9
9
|
after { subject.call }
|
10
10
|
|
11
|
-
it { is_expected.to receive(:
|
11
|
+
it { is_expected.to receive(:change_hidden_status).with(true) }
|
12
12
|
it { is_expected.to receive :save_parent_id }
|
13
13
|
it { is_expected.to receive :save_child_ids }
|
14
14
|
|
@@ -19,8 +19,8 @@ describe HideAncestry::ModelManage::Hide do
|
|
19
19
|
describe 'set' do
|
20
20
|
before { described_class.call(parent) }
|
21
21
|
|
22
|
-
it '#
|
23
|
-
expect(parent.
|
22
|
+
it '#hidden_status to true' do
|
23
|
+
expect(parent.hidden_status).to eq true
|
24
24
|
end
|
25
25
|
|
26
26
|
it '#ancestry to nil' do
|
@@ -36,7 +36,7 @@ describe HideAncestry::ModelManage::Hide do
|
|
36
36
|
is_expected.to eq grandparent.id
|
37
37
|
end
|
38
38
|
|
39
|
-
it 'first real parent if actual parent #
|
39
|
+
it 'first real parent if actual parent #hidden?' do
|
40
40
|
grandparent.update(parent: some_monkey)
|
41
41
|
described_class.call(grandparent)
|
42
42
|
|
@@ -65,7 +65,7 @@ describe HideAncestry::ModelManage::Hide do
|
|
65
65
|
is_expected.to include child.id
|
66
66
|
end
|
67
67
|
|
68
|
-
it 'of previously
|
68
|
+
it 'of previously hidden children' do
|
69
69
|
some_monkey.update parent_id: parent.id
|
70
70
|
parent.reload
|
71
71
|
|
@@ -85,7 +85,7 @@ describe HideAncestry::ModelManage::Hide do
|
|
85
85
|
is_expected.to eq grandparent.id
|
86
86
|
end
|
87
87
|
|
88
|
-
it 'of
|
88
|
+
it 'of hidden parent if present' do
|
89
89
|
grandparent.update parent: some_monkey
|
90
90
|
described_class.call(grandparent)
|
91
91
|
|
@@ -12,7 +12,7 @@ describe HideAncestry::ModelManage::Restore do
|
|
12
12
|
it { is_expected.to receive :restore_children }
|
13
13
|
|
14
14
|
it do
|
15
|
-
is_expected.to receive(:
|
15
|
+
is_expected.to receive(:change_hidden_status).with false
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -33,8 +33,8 @@ describe HideAncestry::ModelManage::Restore do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
context 'restore children' do
|
36
|
-
it 'doesn`t restore
|
37
|
-
allow(child).to receive(:
|
36
|
+
it 'doesn`t restore hidden children' do
|
37
|
+
allow(child).to receive(:hidden?).and_return true
|
38
38
|
described_class.call(grandparent)
|
39
39
|
expect(grandparent.reload.child_ids).not_to include child.id
|
40
40
|
end
|
@@ -62,12 +62,12 @@ describe HideAncestry::ModelManage::Restore do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
context 'change #
|
66
|
-
before { parent.update_attribute :
|
65
|
+
context 'change #hidden_status' do
|
66
|
+
before { parent.update_attribute :hidden_status, true }
|
67
67
|
|
68
68
|
it 'to false' do
|
69
69
|
described_class.call(parent)
|
70
|
-
expect(parent.
|
70
|
+
expect(parent.hidden_status).to be_falsey
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
@@ -2,15 +2,15 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe HideAncestry::Validators do
|
4
4
|
let(:monkey) { build :monkey }
|
5
|
-
let(:
|
5
|
+
let(:hidden_monkey) { create :hidden_monkey }
|
6
6
|
|
7
7
|
context '#can_not_has_parent_or_children' do
|
8
8
|
it 'when ancestry changed' do
|
9
|
-
error_message = '
|
10
|
-
|
9
|
+
error_message = 'hidden node can`t has any real parent or children'
|
10
|
+
hidden_monkey.ancestry = '1/2/3'
|
11
11
|
|
12
|
-
|
13
|
-
expect(
|
12
|
+
hidden_monkey.valid?
|
13
|
+
expect(hidden_monkey.errors[:base]).to include error_message
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
data/spec/models/bonobo_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bonobo, type: :model do
|
4
|
-
it { is_expected.not_to have_db_column :
|
4
|
+
it { is_expected.not_to have_db_column :hidden_status }
|
5
5
|
|
6
6
|
it_behaves_like '.has_hide_ancestry owner'
|
7
7
|
it_behaves_like 'hide_ancestry instance methods owner'
|
@@ -15,10 +15,10 @@ shared_examples '.has_hide_ancestry owner' do |false_expectation|
|
|
15
15
|
context 'scopes' do
|
16
16
|
subject { described_class }
|
17
17
|
|
18
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
19
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
20
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
21
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
18
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden) }
|
19
|
+
it { is_expected.public_send predicate_matcher, respond_to(:unhidden) }
|
20
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_nodes) }
|
21
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_childs) }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -7,19 +7,19 @@ shared_examples 'hide_ancestry instance methods owner' do |false_expectation|
|
|
7
7
|
it { is_expected.public_send predicate_matcher, respond_to(:restore) }
|
8
8
|
it { is_expected.public_send predicate_matcher, respond_to(:first_hiding?) }
|
9
9
|
|
10
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
10
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden?) }
|
11
11
|
it { is_expected.public_send predicate_matcher, respond_to(:hide_ancestry_ids) }
|
12
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
12
|
+
it { is_expected.public_send predicate_matcher, respond_to(:children_of_hidden) }
|
13
13
|
|
14
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
15
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
16
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
14
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_children) }
|
15
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_parent_changed?) }
|
16
|
+
it { is_expected.public_send predicate_matcher, respond_to(:subtree_with_hidden) }
|
17
17
|
|
18
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
19
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
20
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
18
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_parent) }
|
19
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_children_present?) }
|
20
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_descendants_ids) }
|
21
21
|
|
22
|
-
it { is_expected.public_send predicate_matcher, respond_to(:
|
22
|
+
it { is_expected.public_send predicate_matcher, respond_to(:hidden_ids) }
|
23
23
|
it { is_expected.public_send predicate_matcher, respond_to(:find_first_real_parent) }
|
24
24
|
|
25
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hide_ancestry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimkarodinz
|
@@ -197,7 +197,7 @@ files:
|
|
197
197
|
- spec/dummy/public/favicon.ico
|
198
198
|
- spec/factories/monkey.rb
|
199
199
|
- spec/lib/hide_ancestry/instance_methods_spec.rb
|
200
|
-
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/
|
200
|
+
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/hidden_nodes_cases_spec.rb
|
201
201
|
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/mixed_cases_spec.rb
|
202
202
|
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/updating_parent_cases_spec.rb
|
203
203
|
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/custom_ancestry_updater_spec.rb
|
@@ -298,7 +298,7 @@ test_files:
|
|
298
298
|
- spec/lib/hide_ancestry/model_manage/restore_spec.rb
|
299
299
|
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/updating_parent_cases_spec.rb
|
300
300
|
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/mixed_cases_spec.rb
|
301
|
-
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/
|
301
|
+
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/cases/hidden_nodes_cases_spec.rb
|
302
302
|
- spec/lib/hide_ancestry/model_manage/custom_ancestry_updater/custom_ancestry_updater_spec.rb
|
303
303
|
- spec/lib/hide_ancestry/model_manage/hide_spec.rb
|
304
304
|
- spec/lib/hide_ancestry/instance_methods_spec.rb
|