releaf-content 1.1.21 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- 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 -57
- 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
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05d7d2665a78cc7ba8d5c8eeb8f6a93da866a4fc80cdf3c62237105fb52759f7
|
4
|
+
data.tar.gz: 43f5443596612617c486584c239d9d1893519c1d014ed5fc9ab1d206ac049fd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dac92e5f51f1c8987842000c396ccaf47cb3a5024b1bb5737d0876100be6d69ebb5792d6ba189b7458500c13947593ca37f50c6d1e45d0ebc4e0533eead2d9b4
|
7
|
+
data.tar.gz: b4dae906a59ea28006f3a65f0d03d82d8e09fc01a2652c8766980b0e9afa06c4fba84c6056e358e66c2a9dd86a58806b366909e0bcf5b752376a762f0400c03b
|
@@ -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: 1.1
|
4
|
+
version: 2.1.1
|
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-25 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: 1.1
|
19
|
+
version: 2.1.1
|
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: 1.1
|
26
|
+
version: 2.1.1
|
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,31 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
128
|
- !ruby/object:Gem::Version
|
151
129
|
version: '0'
|
152
130
|
requirements: []
|
153
|
-
rubygems_version: 3.
|
154
|
-
signing_key:
|
131
|
+
rubygems_version: 3.2.6
|
132
|
+
signing_key:
|
155
133
|
specification_version: 4
|
156
134
|
summary: Node and content routes support for releaf
|
157
|
-
test_files:
|
158
|
-
- spec/middleware/routes_reloader_spec.rb
|
159
|
-
- spec/builders/content/nodes/toolbox_builder_spec.rb
|
160
|
-
- spec/builders/content/nodes/action_dialog_spec.rb
|
161
|
-
- spec/builders/content/nodes/content_form_builder_spec.rb
|
162
|
-
- spec/builders/content/nodes/form_builder_spec.rb
|
163
|
-
- spec/features/nodes_services_spec.rb
|
164
|
-
- spec/features/nodes_spec.rb
|
165
|
-
- spec/lib/releaf/content/node_spec.rb
|
166
|
-
- spec/lib/releaf/content/acts_as_node_spec.rb
|
167
|
-
- spec/lib/releaf/content/configuration_spec.rb
|
168
|
-
- spec/lib/releaf/content/engine_spec.rb
|
169
|
-
- spec/lib/releaf/content/route_spec.rb
|
170
|
-
- spec/fixtures/dummy.png
|
171
|
-
- spec/validators/content/node/singleness_validator_spec.rb
|
172
|
-
- spec/validators/content/node/parent_validator_spec.rb
|
173
|
-
- spec/validators/content/node/root_validator_spec.rb
|
174
|
-
- spec/routing/node_mapper_spec.rb
|
175
|
-
- spec/controllers/releaf/content/nodes_controller_spec.rb
|
176
|
-
- spec/services/releaf/content/build_route_objects_spec.rb
|
177
|
-
- spec/services/releaf/content/node/save_under_parent_spec.rb
|
178
|
-
- spec/services/releaf/content/node/copy_spec.rb
|
179
|
-
- spec/services/releaf/content/node/service_spec.rb
|
180
|
-
- spec/services/releaf/content/node/move_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
|