releaf-content 2.0.0 → 2.0.1

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.
@@ -1,19 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Content::Node::Service do
4
- class DummyNodeServiceIncluder
5
- include Releaf::Content::Node::Service
6
- end
7
-
8
- let(:node){ Node.new }
9
- subject{ DummyNodeServiceIncluder.new(node: node) }
10
-
11
- describe "#add_error_and_raise" do
12
- it "adds errors to base and raise validation error" do
13
- expect{ subject.add_error_and_raise("shit happen") }.to raise_error do |exception|
14
- expect(exception).to be_instance_of ActiveRecord::RecordInvalid
15
- expect(exception.record.errors[:base]).to eq(["shit happen"])
16
- end
17
- end
18
- end
19
- end
@@ -1,56 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe Releaf::Content::Node::ParentValidator do
4
- let!(:root_node) { FactoryBot.create(:node, content_type: 'HomePage') }
5
-
6
- class DummyNodeParentValidatorModel < ActiveRecord::Base
7
- acts_as_node
8
- self.table_name = 'texts'
9
- end
10
-
11
- class DummyNodeParentValidator1Controller < ActionController::Base
12
- acts_as_node
13
- end
14
-
15
- class DummyNodeParentValidator2Controller < ActionController::Base
16
- acts_as_node
17
- end
18
-
19
-
20
- class DummyNodeParentValidatorNode < ActiveRecord::Base
21
- self.table_name = 'nodes'
22
- include Releaf::Content::Node
23
- validates_with Releaf::Content::Node::ParentValidator, for: DummyNodeParentValidatorModel, under: DummyNodeParentValidator1Controller
24
- end
25
-
26
- context "when parent is valid" do
27
- it "doesn't add error" do
28
- parent = DummyNodeParentValidatorNode.create!( FactoryBot.attributes_for(:node, content_type: 'DummyNodeParentValidator1Controller') )
29
- child = DummyNodeParentValidatorNode.new( FactoryBot.attributes_for(:node, content_type: 'DummyNodeParentValidatorModel', parent_id: parent.id) )
30
-
31
- expect( child ).to be_valid
32
- end
33
- end
34
-
35
- context "when parent is invalid" do
36
- it "adds error on content_type" do
37
- parent = DummyNodeParentValidatorNode.create!( FactoryBot.attributes_for(:node, content_type: 'DummyNodeParentValidator2Controller') )
38
- child = DummyNodeParentValidatorNode.new( FactoryBot.attributes_for(:node, content_type: 'DummyNodeParentValidatorModel', parent_id: parent.id) )
39
-
40
- expect( child ).to be_invalid
41
- expect( child.errors[:content_type].size ).to eq(1)
42
- expect( child.errors[:content_type] ).to include("invalid parent node")
43
- end
44
-
45
- end
46
-
47
- context "when content_type is not in child list" do
48
- it "doesn't add error" do
49
- parent = DummyNodeParentValidatorNode.create!( FactoryBot.attributes_for(:node, content_type: 'DummyNodeParentValidator1Controller') )
50
- child = DummyNodeParentValidatorNode.new( FactoryBot.attributes_for(:node, content_type: 'DummyNodeParentValidator2Controller', parent_id: parent.id) )
51
-
52
- expect( child ).to be_valid
53
- end
54
- end
55
-
56
- end
@@ -1,69 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe Releaf::Content::Node::RootValidator do
4
-
5
-
6
- class DummyRootValidatorController < ActionController::Base
7
- acts_as_node
8
- end
9
-
10
- class DummyRootValidator2Controller < ActionController::Base
11
- acts_as_node
12
- end
13
-
14
- class DummyRootValidatorNode < ActiveRecord::Base
15
- self.table_name = 'nodes'
16
- include Releaf::Content::Node
17
- validates_with Releaf::Content::Node::RootValidator, allow: DummyRootValidatorController
18
- end
19
-
20
-
21
- def create_node *params
22
- DummyRootValidatorNode.create!( FactoryBot.attributes_for(:node, *params) )
23
- end
24
-
25
- def build_node *params
26
- DummyRootValidatorNode.new( FactoryBot.attributes_for(:node, *params) )
27
- end
28
-
29
- context "when node is allowed to be root node" do
30
- context "when node is a root node" do
31
- it "doesn't add an error" do
32
- root_node = build_node(content_type: 'DummyRootValidatorController')
33
- expect( root_node ).to be_valid
34
- end
35
- end
36
-
37
- context "when node is not a root node" do
38
- it "adds an error" do
39
- root_node = create_node(content_type: 'DummyRootValidatorController')
40
- subnode = build_node(content_type: 'DummyRootValidatorController', parent: root_node)
41
- expect( subnode ).to be_invalid
42
- expect( subnode.errors[:content_type].size ).to eq(1)
43
- expect( subnode.errors[:content_type] ).to include("can't be subnode")
44
- end
45
- end
46
- end
47
-
48
- context "when node is not allowed to be a root node" do
49
- context "when node is a root node" do
50
- it "adds an error" do
51
- root_node = build_node(content_type: 'DummyRootValidator2Controller')
52
- expect( root_node ).to be_invalid
53
- expect( root_node.errors[:content_type].size ).to eq(1)
54
- expect( root_node.errors[:content_type] ).to include("can't be root node")
55
- end
56
- end
57
-
58
- context "when node is not a root node" do
59
- it "doesn't add an error" do
60
- root_node = create_node(content_type: 'DummyRootValidatorController')
61
- subnode = build_node(content_type: 'DummyRootValidator2Controller', parent: root_node)
62
-
63
- expect( subnode ).to be_valid
64
- end
65
- end
66
- end
67
-
68
-
69
- end
@@ -1,145 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe Releaf::Content::Node::SinglenessValidator do
4
-
5
-
6
- class DummySinglenessValidatorModel < ActiveRecord::Base
7
- acts_as_node
8
- self.table_name = 'text_pages'
9
- end
10
-
11
- class DummySinglenessValidator2Model < ActiveRecord::Base
12
- acts_as_node
13
- self.table_name = 'text_pages'
14
- end
15
-
16
- class DummySinglenessValidatorController < ActionController::Base
17
- acts_as_node
18
- end
19
-
20
- class DummySinglenessValidator2Controller < ActionController::Base
21
- acts_as_node
22
- end
23
-
24
- class DummySinglenessValidatorNode < ActiveRecord::Base
25
- self.table_name = 'nodes'
26
- include Releaf::Content::Node
27
- validates_with Releaf::Content::Node::SinglenessValidator, for: DummySinglenessValidatorModel
28
- validates_with Releaf::Content::Node::SinglenessValidator, for: DummySinglenessValidator2Controller, under: TextPage
29
- end
30
-
31
-
32
- def create_node *params
33
- DummySinglenessValidatorNode.create!( FactoryBot.attributes_for(:node, *params) )
34
- end
35
-
36
- def build_node *params
37
- DummySinglenessValidatorNode.new( FactoryBot.attributes_for(:node, *params) )
38
- end
39
-
40
- let!(:root_node) { create_node(content_type: 'HomePage') }
41
-
42
-
43
- context "when scope is entire page" do
44
-
45
- context "When node not mentioned in list" do
46
- it "doesn't add error" do
47
- node = build_node(content_type: 'DummySinglenessValidatorController', parent_id: root_node.id)
48
- expect( node ).to be_valid
49
- end
50
- end
51
-
52
-
53
- context "when node with given content doesn't exist in tree" do
54
- it "doesn't add error" do
55
- node = build_node(content_type: 'DummySinglenessValidatorModel', parent_id: root_node.id)
56
- expect( node ).to be_valid
57
- end
58
- end
59
-
60
- context "when node with given content exists in tree" do
61
- before do
62
- create_node(content_type: 'DummySinglenessValidatorModel', parent_id: root_node.id)
63
- end
64
-
65
- it "adds error to #content_type" do
66
- node = build_node(content_type: 'DummySinglenessValidatorModel', parent_id: root_node.id)
67
- expect( node ).to be_invalid
68
- expect( node.errors[:content_type].size ).to eq(1)
69
- expect( node.errors[:content_type] ).to include("node exists")
70
- end
71
-
72
- end
73
-
74
- context "when node is saved, and is only one in the tree" do
75
- it "doesn't add error" do
76
- node = create_node(content_type: 'DummySinglenessValidatorModel', parent_id: root_node.id)
77
- expect( node ).to be_valid
78
- end
79
- end
80
- end
81
-
82
- context "when scope is subtree" do
83
- context "when has ancestor in :under list" do
84
- let!(:grand_parent_node) { create_node(content_type: 'TextPage', parent_id: root_node.id) }
85
- let!(:parent_node) { create_node(content_type: 'DummySinglenessValidator2Model', parent_id: grand_parent_node.id) }
86
-
87
- context "when node with given content doesn't exist in subtree" do
88
- it "doesn't add error" do
89
- node = build_node(content_type: 'DummySinglenessValidator2Controller', parent_id: parent_node.id)
90
- expect( node ).to be_valid
91
- end
92
- end
93
-
94
- context "when node with given content exists in subtree" do
95
- before do
96
- create_node(content_type: 'DummySinglenessValidator2Controller', parent_id: grand_parent_node.id)
97
- end
98
-
99
- it "adds error to #content_type" do
100
- node = build_node(content_type: 'DummySinglenessValidator2Controller', parent_id: parent_node.id)
101
- expect( node ).to be_invalid
102
- expect( node.errors[:content_type].size ).to eq(1)
103
- expect( node.errors[:content_type] ).to include("node exists")
104
- end
105
-
106
- end
107
-
108
- context "when node is saved, and is only one in subtree" do
109
- it "doesn't add error" do
110
- node = create_node(content_type: 'DummySinglenessValidator2Controller', parent_id: parent_node.id)
111
- expect( node ).to be_valid
112
- end
113
- end
114
-
115
-
116
- end
117
-
118
- context "when node has no ancestor in :under list" do
119
- it "doesn't add error" do
120
- node = create_node(content_type: 'DummySinglenessValidator2Controller', parent_id: root_node.id)
121
- expect( node ).to be_valid
122
- end
123
- end
124
- end
125
-
126
- context "regression tests" do
127
- context "@node.parent.self_and_ancestors bug" do
128
- it "works correctly / is worked around" do
129
- # for details see Releaf::Content::Node::SinglenessValidator#base_relation_for_subtree
130
- @node1 = create_node(content_type: 'TextPage', locale: 'en')
131
- @node2 = create_node(content_type: 'TextPage', locale: 'lv')
132
- @node3 = create_node(content_type: 'TextPage', locale: 'ru')
133
- @node4 = create_node(content_type: 'TextPage', locale: 'sp')
134
-
135
- @node1_1 = create_node(content_type: 'DummySinglenessValidator2Controller', parent: @node1)
136
- expect do
137
- @node1_2 = create_node(content_type: 'DummySinglenessValidator2Controller', parent: @node2)
138
- @node1_3 = create_node(content_type: 'DummySinglenessValidator2Controller', parent: @node3)
139
- @node1_4 = create_node(content_type: 'DummySinglenessValidator2Controller', parent: @node4)
140
- end.to_not raise_error
141
- end
142
- end
143
- end
144
-
145
- end