releaf-content 1.1.20 → 2.1.0
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 +5 -5
- data/app/assets/config/releaf_content_manifest.js +2 -0
- data/app/assets/javascripts/controllers/releaf/content/nodes.js +6 -9
- data/app/controllers/releaf/content/nodes_controller.rb +1 -1
- data/lib/releaf/content/engine.rb +2 -2
- data/lib/releaf/content/node.rb +3 -3
- data/lib/releaf/content/route.rb +0 -1
- metadata +12 -58
- data/spec/builders/content/nodes/action_dialog_spec.rb +0 -39
- data/spec/builders/content/nodes/content_form_builder_spec.rb +0 -24
- data/spec/builders/content/nodes/form_builder_spec.rb +0 -262
- data/spec/builders/content/nodes/toolbox_builder_spec.rb +0 -77
- data/spec/controllers/releaf/content/nodes_controller_spec.rb +0 -52
- data/spec/features/nodes_services_spec.rb +0 -437
- data/spec/features/nodes_spec.rb +0 -572
- data/spec/fixtures/dummy.png +0 -0
- data/spec/lib/releaf/content/acts_as_node_spec.rb +0 -90
- data/spec/lib/releaf/content/configuration_spec.rb +0 -159
- data/spec/lib/releaf/content/engine_spec.rb +0 -149
- data/spec/lib/releaf/content/node_spec.rb +0 -591
- data/spec/lib/releaf/content/route_spec.rb +0 -229
- data/spec/middleware/routes_reloader_spec.rb +0 -96
- data/spec/routing/node_mapper_spec.rb +0 -310
- data/spec/services/releaf/content/build_route_objects_spec.rb +0 -72
- data/spec/services/releaf/content/node/copy_spec.rb +0 -338
- data/spec/services/releaf/content/node/move_spec.rb +0 -20
- data/spec/services/releaf/content/node/save_under_parent_spec.rb +0 -49
- data/spec/services/releaf/content/node/service_spec.rb +0 -19
- data/spec/validators/content/node/parent_validator_spec.rb +0 -56
- data/spec/validators/content/node/root_validator_spec.rb +0 -69
- data/spec/validators/content/node/singleness_validator_spec.rb +0 -145
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 16cd52d23daee1ce3abda7a5357253113819df7c6a596a73065d9e5484c31543
|
4
|
+
data.tar.gz: 3bb29a935ac7e5c22ce32f744d84b9b52801a565209bb63dd15fe37e34d62aca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90b1d1a9a260b4d5ba4a80e5fcbbef0a692ced52047cc3a67fbfa8a6c060a1310d12bd89ff72f8bda197dca5abd70bfcfe116a6eabe705979953a4158387f9ff
|
7
|
+
data.tar.gz: e26f1e01179b74f453df60f8e4ded8e6067cab9cd7443fe21f317ee94d8f1e2f6eb75a9c107339a41ecb8271dd4a3203b82534c3ed7e99fa797f1efb2c2f818b
|
@@ -76,17 +76,14 @@ jQuery(function()
|
|
76
76
|
slug_input.trigger('sluggenerate');
|
77
77
|
});
|
78
78
|
|
79
|
-
if
|
79
|
+
// bind onchange slug generation only if starting out with an empty name
|
80
|
+
name_input.on('change', function()
|
80
81
|
{
|
81
|
-
|
82
|
-
name_input.on('change', function()
|
82
|
+
if(slug_input.val().length === 0)
|
83
83
|
{
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
}
|
88
|
-
});
|
89
|
-
}
|
84
|
+
slug_input.trigger('sluggenerate');
|
85
|
+
}
|
86
|
+
});
|
90
87
|
}
|
91
88
|
|
92
89
|
});
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Releaf::Content
|
2
2
|
class Engine < ::Rails::Engine
|
3
|
-
initializer '
|
4
|
-
app.config.assets.precompile
|
3
|
+
initializer 'releaf_content.assets_precompile', group: :all do |app|
|
4
|
+
app.config.assets.precompile << "releaf_content_manifest.js"
|
5
5
|
end
|
6
6
|
end
|
7
7
|
end
|
data/lib/releaf/content/node.rb
CHANGED
@@ -218,14 +218,14 @@ module Releaf::Content
|
|
218
218
|
scope :active, ->() { where(active: true) }
|
219
219
|
|
220
220
|
validates_presence_of :name, :slug, :content_type
|
221
|
-
validates_uniqueness_of :slug, scope: :parent_id
|
221
|
+
validates_uniqueness_of :slug, scope: :parent_id, case_sensitive: false
|
222
222
|
validates_length_of :name, :slug, :content_type, maximum: 255
|
223
|
-
validates_uniqueness_of :locale, scope: :parent_id, if: :validate_root_locale_uniqueness
|
223
|
+
validates_uniqueness_of :locale, scope: :parent_id, if: :validate_root_locale_uniqueness?, case_sensitive: false
|
224
224
|
validates_presence_of :parent, if: :parent_id?
|
225
225
|
validate :validate_parent_node_is_not_self
|
226
226
|
validate :validate_parent_is_not_descendant
|
227
227
|
validate :validate_slug
|
228
|
-
belongs_to :content, polymorphic: true, dependent: :destroy
|
228
|
+
belongs_to :content, polymorphic: true, dependent: :destroy, required: false
|
229
229
|
accepts_nested_attributes_for :content
|
230
230
|
|
231
231
|
after_save :update_settings_timestamp, unless: :prevent_auto_update_settings_timestamp?
|
data/lib/releaf/content/route.rb
CHANGED
@@ -57,7 +57,6 @@ module Releaf::Content
|
|
57
57
|
# @return [Array] array of Content::Route objects
|
58
58
|
def self.for(node_class, node_content_class, default_controller)
|
59
59
|
node_class = node_class.constantize if node_class.is_a? String
|
60
|
-
|
61
60
|
Releaf::Content::BuildRouteObjects.call(
|
62
61
|
node_class: node_class,
|
63
62
|
node_content_class: node_content_class,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: releaf-content
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CubeSystems
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: releaf-core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.1.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: stringex
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '3.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '3.0'
|
69
69
|
description: Content subsystem for releaf
|
70
70
|
email: info@cubesystems.lv
|
71
71
|
executables: []
|
@@ -73,6 +73,7 @@ extensions: []
|
|
73
73
|
extra_rdoc_files: []
|
74
74
|
files:
|
75
75
|
- LICENSE
|
76
|
+
- app/assets/config/releaf_content_manifest.js
|
76
77
|
- app/assets/javascripts/controllers/releaf/content/nodes.js
|
77
78
|
- app/assets/stylesheets/controllers/releaf/content/nodes.scss
|
78
79
|
- app/builders/releaf/content/builders/action_dialog.rb
|
@@ -108,34 +109,11 @@ files:
|
|
108
109
|
- lib/releaf/content/node_mapper.rb
|
109
110
|
- lib/releaf/content/route.rb
|
110
111
|
- lib/releaf/content/router_proxy.rb
|
111
|
-
- spec/builders/content/nodes/action_dialog_spec.rb
|
112
|
-
- spec/builders/content/nodes/content_form_builder_spec.rb
|
113
|
-
- spec/builders/content/nodes/form_builder_spec.rb
|
114
|
-
- spec/builders/content/nodes/toolbox_builder_spec.rb
|
115
|
-
- spec/controllers/releaf/content/nodes_controller_spec.rb
|
116
|
-
- spec/features/nodes_services_spec.rb
|
117
|
-
- spec/features/nodes_spec.rb
|
118
|
-
- spec/fixtures/dummy.png
|
119
|
-
- spec/lib/releaf/content/acts_as_node_spec.rb
|
120
|
-
- spec/lib/releaf/content/configuration_spec.rb
|
121
|
-
- spec/lib/releaf/content/engine_spec.rb
|
122
|
-
- spec/lib/releaf/content/node_spec.rb
|
123
|
-
- spec/lib/releaf/content/route_spec.rb
|
124
|
-
- spec/middleware/routes_reloader_spec.rb
|
125
|
-
- spec/routing/node_mapper_spec.rb
|
126
|
-
- spec/services/releaf/content/build_route_objects_spec.rb
|
127
|
-
- spec/services/releaf/content/node/copy_spec.rb
|
128
|
-
- spec/services/releaf/content/node/move_spec.rb
|
129
|
-
- spec/services/releaf/content/node/save_under_parent_spec.rb
|
130
|
-
- spec/services/releaf/content/node/service_spec.rb
|
131
|
-
- spec/validators/content/node/parent_validator_spec.rb
|
132
|
-
- spec/validators/content/node/root_validator_spec.rb
|
133
|
-
- spec/validators/content/node/singleness_validator_spec.rb
|
134
112
|
homepage: https://github.com/cubesystems/releaf
|
135
113
|
licenses:
|
136
114
|
- MIT
|
137
115
|
metadata: {}
|
138
|
-
post_install_message:
|
116
|
+
post_install_message:
|
139
117
|
rdoc_options: []
|
140
118
|
require_paths:
|
141
119
|
- lib
|
@@ -150,32 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
128
|
- !ruby/object:Gem::Version
|
151
129
|
version: '0'
|
152
130
|
requirements: []
|
153
|
-
|
154
|
-
|
155
|
-
signing_key:
|
131
|
+
rubygems_version: 3.1.4
|
132
|
+
signing_key:
|
156
133
|
specification_version: 4
|
157
134
|
summary: Node and content routes support for releaf
|
158
|
-
test_files:
|
159
|
-
- spec/builders/content/nodes/action_dialog_spec.rb
|
160
|
-
- spec/builders/content/nodes/content_form_builder_spec.rb
|
161
|
-
- spec/builders/content/nodes/form_builder_spec.rb
|
162
|
-
- spec/builders/content/nodes/toolbox_builder_spec.rb
|
163
|
-
- spec/controllers/releaf/content/nodes_controller_spec.rb
|
164
|
-
- spec/features/nodes_services_spec.rb
|
165
|
-
- spec/features/nodes_spec.rb
|
166
|
-
- spec/fixtures/dummy.png
|
167
|
-
- spec/lib/releaf/content/acts_as_node_spec.rb
|
168
|
-
- spec/lib/releaf/content/configuration_spec.rb
|
169
|
-
- spec/lib/releaf/content/engine_spec.rb
|
170
|
-
- spec/lib/releaf/content/node_spec.rb
|
171
|
-
- spec/lib/releaf/content/route_spec.rb
|
172
|
-
- spec/middleware/routes_reloader_spec.rb
|
173
|
-
- spec/routing/node_mapper_spec.rb
|
174
|
-
- spec/services/releaf/content/build_route_objects_spec.rb
|
175
|
-
- spec/services/releaf/content/node/copy_spec.rb
|
176
|
-
- spec/services/releaf/content/node/move_spec.rb
|
177
|
-
- spec/services/releaf/content/node/save_under_parent_spec.rb
|
178
|
-
- spec/services/releaf/content/node/service_spec.rb
|
179
|
-
- spec/validators/content/node/parent_validator_spec.rb
|
180
|
-
- spec/validators/content/node/root_validator_spec.rb
|
181
|
-
- spec/validators/content/node/singleness_validator_spec.rb
|
135
|
+
test_files: []
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require "rails_helper"
|
2
|
-
|
3
|
-
describe Releaf::Content::Builders::ActionDialog, type: :class do
|
4
|
-
class ConfirmDestroyDialogTestHelper < ActionView::Base
|
5
|
-
include Releaf::ApplicationHelper
|
6
|
-
end
|
7
|
-
|
8
|
-
class ActionDialogIncluder
|
9
|
-
include Releaf::Content::Builders::ActionDialog
|
10
|
-
def action; end
|
11
|
-
end
|
12
|
-
|
13
|
-
let(:template){ ConfirmDestroyDialogTestHelper.new }
|
14
|
-
let(:object){ Book.new }
|
15
|
-
let(:subject){ ActionDialogIncluder.new(template) }
|
16
|
-
|
17
|
-
describe "#confirm_button_text" do
|
18
|
-
it "returns translation for humanized builder action" do
|
19
|
-
allow(subject).to receive(:action).and_return(:move_to_the_right)
|
20
|
-
allow(subject).to receive(:t).with("Move to the right").and_return("to the left")
|
21
|
-
expect(subject.confirm_button_text).to eq("to the left")
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "#confirm_button_attributes" do
|
26
|
-
it "returns hash with confirm button attributes" do
|
27
|
-
expect(subject.confirm_button_attributes).to be_instance_of Hash
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#confirm_button" do
|
32
|
-
it "returns confirm button" do
|
33
|
-
allow(subject).to receive(:confirm_button_text).and_return("Yess")
|
34
|
-
allow(subject).to receive(:confirm_button_attributes).and_return(a: "b")
|
35
|
-
allow(subject).to receive(:button).with("Yess", "check", a: "b").and_return("x")
|
36
|
-
expect(subject.confirm_button).to eq("x")
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require "rails_helper"
|
2
|
-
|
3
|
-
describe Releaf::Content::Nodes::ContentFormBuilder, type: :class do
|
4
|
-
class FormBuilderTestHelper < ActionView::Base
|
5
|
-
include Releaf::ApplicationHelper
|
6
|
-
include Releaf::ButtonHelper
|
7
|
-
include FontAwesome::Rails::IconHelper
|
8
|
-
def controller_scope_name; end
|
9
|
-
def generate_url_releaf_content_nodes_path(args); end
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:template){ FormBuilderTestHelper.new }
|
13
|
-
let(:node){ Node.new(content_type: "TextPage", slug: "b", id: 2,
|
14
|
-
parent: Node.new(content_type: "TextPage", slug: "a", id: 1)) }
|
15
|
-
let(:object){ node.build_content }
|
16
|
-
let(:subject){ described_class.new(:resource, object, template, {}) }
|
17
|
-
|
18
|
-
describe "#field_names" do
|
19
|
-
it "returns array of node content object fields" do
|
20
|
-
allow(object.class).to receive(:acts_as_node_fields).and_return(["a", "b"])
|
21
|
-
expect(subject.field_names).to eq(["a", "b"])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,262 +0,0 @@
|
|
1
|
-
require "rails_helper"
|
2
|
-
|
3
|
-
describe Releaf::Content::Nodes::FormBuilder, type: :class do
|
4
|
-
class FormBuilderTestHelper < ActionView::Base
|
5
|
-
include Releaf::ApplicationHelper
|
6
|
-
include Releaf::ButtonHelper
|
7
|
-
include FontAwesome::Rails::IconHelper
|
8
|
-
def controller_scope_name; end
|
9
|
-
def generate_url_releaf_content_nodes_path(args); end
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:template){ FormBuilderTestHelper.new }
|
13
|
-
let(:object){ Node.new(content_type: "TextPage", slug: "b", id: 2,
|
14
|
-
parent: Node.new(content_type: "TextPage", slug: "a", id: 1)) }
|
15
|
-
let(:subject){ described_class.new(:resource, object, template, {}) }
|
16
|
-
|
17
|
-
describe "#field_names" do
|
18
|
-
it "returns hidden, node and content object fields" do
|
19
|
-
expect(subject.field_names).to eq(["node_fields_block", "content_fields_block"])
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#node_fields" do
|
24
|
-
it "returns array with renderable node fields" do
|
25
|
-
list = [:parent_id, :name, :content_type, :slug, :item_position, :active, :locale]
|
26
|
-
expect(subject.node_fields).to eq(list)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "#render_node_fields_block" do
|
31
|
-
it "renders node fields" do
|
32
|
-
allow(subject).to receive(:node_fields).and_return([1, 2])
|
33
|
-
allow(subject).to receive(:releaf_fields).with([1, 2]).and_return("x")
|
34
|
-
content = '<div class="section node-fields">x</div>'
|
35
|
-
expect(subject.render_node_fields_block).to eq(content)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#render_parent_id" do
|
40
|
-
it "renders hidden parent if field for new object" do
|
41
|
-
allow(subject.object).to receive(:new_record?).and_return(true)
|
42
|
-
allow(subject).to receive(:hidden_field).with(:parent_id).and_return("x")
|
43
|
-
expect(subject.render_parent_id).to eq("x")
|
44
|
-
end
|
45
|
-
|
46
|
-
it "renders nothing for existing object" do
|
47
|
-
allow(subject.object).to receive(:new_record?).and_return(false)
|
48
|
-
expect(subject.render_parent_id).to eq(nil)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe "#render_content_fields_block?" do
|
53
|
-
before do
|
54
|
-
subject.object.build_content
|
55
|
-
end
|
56
|
-
|
57
|
-
it "returns array of node content object fields" do
|
58
|
-
allow(object.content_class).to receive(:respond_to?).with(:acts_as_node_fields).and_return(true)
|
59
|
-
expect(subject.render_content_fields_block?).to be true
|
60
|
-
end
|
61
|
-
|
62
|
-
context "when object content class do not respond to `acts_as_node_fields`" do
|
63
|
-
it "returns nil" do
|
64
|
-
allow(object.content_class).to receive(:respond_to?).with(:acts_as_node_fields).and_return(false)
|
65
|
-
expect(subject.render_content_fields_block?).to be false
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe "#render_content_fields_block" do
|
71
|
-
before do
|
72
|
-
subject.object.build_content
|
73
|
-
end
|
74
|
-
|
75
|
-
it "renders content fields block" do
|
76
|
-
allow(subject).to receive(:content_builder_class).and_return("_b_")
|
77
|
-
allow(subject).to receive(:render_content_fields_block?).and_return(true)
|
78
|
-
subform = described_class.new(:resource, object, template, {})
|
79
|
-
allow(subject).to receive(:fields_for).with(:content, subject.object.content, builder: "_b_").and_yield(subform)
|
80
|
-
allow(subform).to receive(:field_names).and_return([1, 2])
|
81
|
-
allow(subform).to receive(:releaf_fields).with([1, 2]).and_return("yy")
|
82
|
-
content = '<div class="section content-fields">yy</div>'
|
83
|
-
expect(subject.render_content_fields_block).to eq(content)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "casts form fields to array before passign to `releaf_fields`" do
|
87
|
-
allow(subject).to receive(:content_builder_class).and_return("_b_")
|
88
|
-
allow(subject).to receive(:render_content_fields_block?).and_return(true)
|
89
|
-
subform = described_class.new(:resource, object, template, {})
|
90
|
-
allow(subject).to receive(:fields_for).with(:content, subject.object.content, builder: "_b_").and_yield(subform)
|
91
|
-
allow(subform).to receive(:field_names).and_return({a: 1, b: 2})
|
92
|
-
expect(subform).to receive(:releaf_fields).with([[:a, 1], [:b, 2]])
|
93
|
-
subject.render_content_fields_block
|
94
|
-
end
|
95
|
-
|
96
|
-
context "when content have no fields" do
|
97
|
-
it "returns nil" do
|
98
|
-
allow(subject).to receive(:render_content_fields_block?).and_return(false)
|
99
|
-
expect(subject.render_content_fields_block).to be nil
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
describe "#content_builder_class" do
|
105
|
-
it "returns `Releaf::Content::Nodes::ContentFormBuilder`" do
|
106
|
-
expect(subject.content_builder_class).to eq(Releaf::Content::Nodes::ContentFormBuilder)
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
describe "#render_locale" do
|
111
|
-
context "when node node has locale select enabled" do
|
112
|
-
it "renders locale with #render_locale_options" do
|
113
|
-
allow(subject.object).to receive(:locale_selection_enabled?).and_return(true)
|
114
|
-
allow(subject).to receive(:render_locale_options).and_return(a: "b")
|
115
|
-
allow(subject).to receive(:releaf_item_field).with(:locale, options: {a: "b"}).and_return("x")
|
116
|
-
expect(subject.render_locale).to eq("x")
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "when node node does not have locale select enabled" do
|
121
|
-
it "renders locale with #render_locale_options" do
|
122
|
-
allow(subject.object).to receive(:locale_selection_enabled?).and_return(false)
|
123
|
-
expect(subject.render_locale).to be nil
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe "#render_locale_options" do
|
129
|
-
it "returns :select_options and :include_blank values" do
|
130
|
-
expect(subject.render_locale_options.keys).to eq([:select_options, :include_blank])
|
131
|
-
end
|
132
|
-
|
133
|
-
it ":select_options contains all available locales" do
|
134
|
-
allow(I18n).to receive(:available_locales).and_return([:lt, :et])
|
135
|
-
expect(subject.render_locale_options[:select_options]).to eq([:lt, :et])
|
136
|
-
end
|
137
|
-
|
138
|
-
context "when subject have defined locale" do
|
139
|
-
it ":include_blank is false" do
|
140
|
-
subject.object.locale = :lt
|
141
|
-
expect(subject.render_locale_options[:include_blank]).to be false
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
context "when subject have no locale" do
|
146
|
-
it ":include_blank is true" do
|
147
|
-
subject.object.locale = nil
|
148
|
-
expect(subject.render_locale_options[:include_blank]).to be true
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
describe "#render_content_type" do
|
154
|
-
it "renders disabled content type field with localized content type value" do
|
155
|
-
options = {disabled: true, value: "Translated content type"}
|
156
|
-
allow(I18n).to receive(:t).with("text_page", scope: "admin.content_types").and_return("Translated content type")
|
157
|
-
allow(subject).to receive(:releaf_text_field).with(:content_type, input: options).and_return("x")
|
158
|
-
expect(subject.render_content_type).to eq("x")
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
describe "#slug_base_url" do
|
163
|
-
before do
|
164
|
-
request = double(:request, protocol: "http:://", host_with_port: "somehost:8080")
|
165
|
-
allow(subject).to receive(:request).and_return(request)
|
166
|
-
allow(object).to receive(:parent).and_return(Node.new)
|
167
|
-
end
|
168
|
-
|
169
|
-
context "when trailing slash for path enabled" do
|
170
|
-
it "returns absolute url without extra slash added" do
|
171
|
-
allow(object).to receive(:trailing_slash_for_path?).and_return(true)
|
172
|
-
allow(object.parent).to receive(:path).and_return("/parent/path/")
|
173
|
-
expect(subject.slug_base_url).to eq("http:://somehost:8080/parent/path/")
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
context "when trailing slash for path disabled" do
|
178
|
-
it "returns absolute url with extra slash added" do
|
179
|
-
allow(object).to receive(:trailing_slash_for_path?).and_return(false)
|
180
|
-
allow(object.parent).to receive(:path).and_return("/parent/path")
|
181
|
-
expect(subject.slug_base_url).to eq("http:://somehost:8080/parent/path/")
|
182
|
-
end
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
describe "#slug_link" do
|
187
|
-
before do
|
188
|
-
allow(subject).to receive(:slug_base_url).and_return("http://some.host/parent/path/")
|
189
|
-
end
|
190
|
-
|
191
|
-
context "when trailing slash for path enabled" do
|
192
|
-
it "returns absolute url without extra slash added" do
|
193
|
-
allow(object).to receive(:trailing_slash_for_path?).and_return(true)
|
194
|
-
expect(subject.slug_link).to eq('<a href="/a/b/">http://some.host/parent/path/<span>b</span>/</a>')
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
context "when trailing slash for path disabled" do
|
199
|
-
it "returns absolute url with extra slash added" do
|
200
|
-
allow(object).to receive(:trailing_slash_for_path?).and_return(false)
|
201
|
-
expect(subject.slug_link).to eq('<a href="/a/b">http://some.host/parent/path/<span>b</span></a>')
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
describe "#render_slug" do
|
207
|
-
it "renders customized field" do
|
208
|
-
controller = Admin::NodesController.new
|
209
|
-
allow(subject).to receive(:controller).and_return(controller)
|
210
|
-
allow(subject).to receive(:slug_base_url).and_return("http://localhost/parent")
|
211
|
-
allow(subject).to receive(:url_for).with(controller: "admin/nodes", action: "generate_url", parent_id: 1, id: 2)
|
212
|
-
.and_return("http://localhost/slug-generation-url")
|
213
|
-
|
214
|
-
content = '
|
215
|
-
<div class="field type-text" data-name="slug">
|
216
|
-
<div class="label-wrap">
|
217
|
-
<label for="resource_slug">Slug</label>
|
218
|
-
</div>
|
219
|
-
<div class="value">
|
220
|
-
<input value="b" class="text" data-generator-url="http://localhost/slug-generation-url" type="text" name="resource[slug]" id="resource_slug" />
|
221
|
-
<button class="button only-icon secondary generate" title="Suggest slug" type="button" autocomplete="off">
|
222
|
-
<i class="fa fa-keyboard-o"></i>
|
223
|
-
</button>
|
224
|
-
<div class="link">
|
225
|
-
<a href="/a/b">http://localhost/parent<span>b</span></a>
|
226
|
-
</div>
|
227
|
-
</div>
|
228
|
-
</div>
|
229
|
-
'
|
230
|
-
|
231
|
-
expect(subject.render_slug).to match_html(content)
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
|
-
describe "#render_item_position" do
|
236
|
-
it "renders locale with #item_position_options" do
|
237
|
-
allow(subject).to receive(:item_position_options).and_return(a: "b")
|
238
|
-
allow(subject).to receive(:releaf_item_field).with(:item_position, options: {a: "b"}).and_return("x")
|
239
|
-
expect(subject.render_item_position).to eq("x")
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
describe "#item_position_options" do
|
244
|
-
before do
|
245
|
-
object.item_position = 2
|
246
|
-
allow(subject).to receive(:item_position_select_options).and_return([["a", 1], ["b", 2], ["c", 3]])
|
247
|
-
end
|
248
|
-
|
249
|
-
it "returns :select_options and :include_blank values" do
|
250
|
-
expect(subject.item_position_options.keys).to eq([:include_blank, :select_options])
|
251
|
-
end
|
252
|
-
|
253
|
-
it ":select_options correct select options" do
|
254
|
-
options = '<option value="1">a</option>'
|
255
|
-
options << "\n"
|
256
|
-
options << '<option selected="selected" value="2">b</option>'
|
257
|
-
options << "\n"
|
258
|
-
options << '<option value="3">c</option>'
|
259
|
-
expect(subject.item_position_options[:select_options]).to eq(options)
|
260
|
-
end
|
261
|
-
end
|
262
|
-
end
|