releaf-core 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.
- checksums.yaml +4 -4
- metadata +3 -193
- data/spec/builders/releaf/builders/association_reflector_spec.rb +0 -138
- data/spec/builders/releaf/builders/base_spec.rb +0 -272
- data/spec/builders/releaf/builders/collection_spec.rb +0 -18
- data/spec/builders/releaf/builders/confirm_destroy_dialog_builder_spec.rb +0 -71
- data/spec/builders/releaf/builders/confirm_dialog_builder_spec.rb +0 -107
- data/spec/builders/releaf/builders/edit_builder_spec.rb +0 -322
- data/spec/builders/releaf/builders/form_builder/associations_spec.rb +0 -129
- data/spec/builders/releaf/builders/form_builder/date_fields_spec.rb +0 -86
- data/spec/builders/releaf/builders/form_builder/i18n_fields_spec.rb +0 -48
- data/spec/builders/releaf/builders/form_builder/label_spec.rb +0 -106
- data/spec/builders/releaf/builders/form_builder/number_fields_spec.rb +0 -37
- data/spec/builders/releaf/builders/form_builder_spec.rb +0 -228
- data/spec/builders/releaf/builders/index_builder_spec.rb +0 -364
- data/spec/builders/releaf/builders/page/header_builder_spec.rb +0 -66
- data/spec/builders/releaf/builders/page/layout_builder_spec.rb +0 -237
- data/spec/builders/releaf/builders/page/menu_builder_spec.rb +0 -345
- data/spec/builders/releaf/builders/pagination_builder_spec.rb +0 -330
- data/spec/builders/releaf/builders/resource_dialog_spec.rb +0 -21
- data/spec/builders/releaf/builders/resource_view_spec.rb +0 -158
- data/spec/builders/releaf/builders/show_builder_spec.rb +0 -7
- data/spec/builders/releaf/builders/table_builder_spec.rb +0 -637
- data/spec/builders/releaf/builders/template_spec.rb +0 -12
- data/spec/builders/releaf/builders/toolbox_builder_spec.rb +0 -67
- data/spec/builders/releaf/builders/toolbox_spec.rb +0 -48
- data/spec/builders/releaf/builders/utilities/date_fields_spec.rb +0 -125
- data/spec/builders/releaf/builders/utilities/resolve_attribute_field_method_name_spec.rb +0 -318
- data/spec/builders/releaf/builders/view_spec.rb +0 -281
- data/spec/builders/releaf/builders_spec.rb +0 -144
- data/spec/builders/releaf/settings/form_builder_spec.rb +0 -48
- data/spec/builders/releaf/settings/table_builder_spec.rb +0 -23
- data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +0 -51
- data/spec/controllers/releaf/action_controller_spec.rb +0 -423
- data/spec/controllers/releaf/root_controller_spec.rb +0 -46
- data/spec/controllers/releaf/settings_controller_spec.rb +0 -52
- data/spec/error_hash_builder_spec.rb +0 -83
- data/spec/ext/array_reorder_spec.rb +0 -12
- data/spec/features/ajaxbox_spec.rb +0 -111
- data/spec/features/authorization_spec.rb +0 -50
- data/spec/features/breadcrumbs_spec.rb +0 -16
- data/spec/features/dragonfly_integration_spec.rb +0 -24
- data/spec/features/edit_actions_spec.rb +0 -186
- data/spec/features/errors_spec.rb +0 -47
- data/spec/features/index_actions_spec.rb +0 -86
- data/spec/features/index_table_spec.rb +0 -35
- data/spec/features/menu_spec.rb +0 -71
- data/spec/features/richtext_attachments_spec.rb +0 -64
- data/spec/features/richtext_custom_config_spec.rb +0 -28
- data/spec/features/richtext_embed_spec.rb +0 -29
- data/spec/features/richtext_spec.rb +0 -31
- data/spec/features/search_spec.rb +0 -825
- data/spec/features/settings_spec.rb +0 -70
- data/spec/features/title_spec.rb +0 -13
- data/spec/fixtures/common_fields.yml +0 -17
- data/spec/fixtures/cs.png +0 -0
- data/spec/fixtures/time.formats.xlsx +0 -0
- data/spec/fixtures/unicorn.jpg +0 -0
- data/spec/helpers/application_helper_spec.rb +0 -73
- data/spec/helpers/button_helper_spec.rb +0 -146
- data/spec/lib/releaf/action_controller/features_spec.rb +0 -171
- data/spec/lib/releaf/action_controller/search_spec.rb +0 -84
- data/spec/lib/releaf/application_spec.rb +0 -43
- data/spec/lib/releaf/assets_resolver_spec.rb +0 -130
- data/spec/lib/releaf/build_errors_hash_spec.rb +0 -141
- data/spec/lib/releaf/configuration_spec.rb +0 -205
- data/spec/lib/releaf/controller_definition_spec.rb +0 -78
- data/spec/lib/releaf/controller_group_definition_spec.rb +0 -33
- data/spec/lib/releaf/default_searchable_fields_spec.rb +0 -161
- data/spec/lib/releaf/instance_cache_spec.rb +0 -98
- data/spec/lib/releaf/resource_base_spec.rb +0 -212
- data/spec/lib/releaf/resource_fields_spec.rb +0 -12
- data/spec/lib/releaf/resource_params_spec.rb +0 -115
- data/spec/lib/releaf/resource_table_fields_spec.rb +0 -20
- data/spec/lib/releaf/resource_utilities_spec.rb +0 -87
- data/spec/lib/releaf/responders/access_denied_responder_spec.rb +0 -12
- data/spec/lib/releaf/responders/after_save_responder_spec.rb +0 -88
- data/spec/lib/releaf/responders/confirm_destroy_responder_spec.rb +0 -26
- data/spec/lib/releaf/responders/destroy_responder_spec.rb +0 -30
- data/spec/lib/releaf/responders/error_responder_spec.rb +0 -26
- data/spec/lib/releaf/responders/feature_disabled_responder_spec.rb +0 -12
- data/spec/lib/releaf/responders/page_not_found_responder_spec.rb +0 -12
- data/spec/lib/releaf/responders_spec.rb +0 -61
- data/spec/lib/releaf/root/configuration_spec.rb +0 -9
- data/spec/lib/releaf/root/default_controller_resolver_spec.rb +0 -44
- data/spec/lib/releaf/root_spec.rb +0 -13
- data/spec/lib/releaf/service_spec.rb +0 -20
- data/spec/lib/releaf/settings/normalize_value_spec.rb +0 -103
- data/spec/lib/releaf/settings/register_spec.rb +0 -135
- data/spec/lib/releaf/settings_manager_spec.rb +0 -22
- data/spec/lib/validation_error_codes_spec.rb +0 -56
- data/spec/misc/factories_spec.rb +0 -31
- data/spec/models/settings_spec.rb +0 -104
- data/spec/routing/route_mapper_spec.rb +0 -185
- data/spec/rspec_helpers/test_helpers_spec.rb +0 -20
- data/spec/rspec_helpers/test_spec.rb +0 -14
- data/spec/services/array/reorder_spec.rb +0 -121
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
require "rails_helper"
|
|
2
|
-
|
|
3
|
-
describe Releaf::Builders::View, type: :class do
|
|
4
|
-
class ViewTestHelper < ActionView::Base
|
|
5
|
-
include FontAwesome::Rails::IconHelper
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
class ViewTestIncluder
|
|
9
|
-
include Releaf::Builders::Base
|
|
10
|
-
include Releaf::Builders::Template
|
|
11
|
-
include Releaf::Builders::View
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
subject { ViewTestIncluder.new(template) }
|
|
15
|
-
let(:template){ ViewTestHelper.new(ActionView::LookupContext.new(nil), {}, nil) }
|
|
16
|
-
|
|
17
|
-
it "includes Releaf::Builders::Base" do
|
|
18
|
-
expect(described_class.ancestors).to include(Releaf::Builders::Base)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "includes Releaf::Builders::Template" do
|
|
22
|
-
expect(described_class.ancestors).to include(Releaf::Builders::Template)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
describe "#output" do
|
|
26
|
-
before do
|
|
27
|
-
allow(subject).to receive(:header).and_return(ActiveSupport::SafeBuffer.new("<"))
|
|
28
|
-
allow(subject).to receive(:section).and_return(ActiveSupport::SafeBuffer.new(">"))
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "returns safely joined header and section outputs" do
|
|
32
|
-
allow(subject).to receive(:dialog?).and_return(false)
|
|
33
|
-
expect(subject.output).to eq("<>")
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
context "within dialog" do
|
|
37
|
-
it "does not return header content" do
|
|
38
|
-
allow(subject).to receive(:dialog?).and_return(true)
|
|
39
|
-
expect(subject.output).to eq(">")
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
describe "#dialog?" do
|
|
45
|
-
let(:controller){ Releaf::ActionController.new }
|
|
46
|
-
|
|
47
|
-
before do
|
|
48
|
-
allow(template).to receive(:controller).and_return(controller)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
context "when controller has ajax mode enabled" do
|
|
52
|
-
it "returns true" do
|
|
53
|
-
allow(controller).to receive(:ajax?).and_return(true)
|
|
54
|
-
expect(subject.dialog?).to be true
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "when controller has ajax mode disabled" do
|
|
59
|
-
it "returns false" do
|
|
60
|
-
allow(controller).to receive(:ajax?).and_return(false)
|
|
61
|
-
expect(subject.dialog?).to be false
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
describe "#dialog_name" do
|
|
67
|
-
class UnitTestDialogBuilder
|
|
68
|
-
include Releaf::Builders::Base
|
|
69
|
-
include Releaf::Builders::Template
|
|
70
|
-
include Releaf::Builders::View
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "returns normalized, dashed dialog name taken from dialog class name" do
|
|
74
|
-
subject = UnitTestDialogBuilder.new(template)
|
|
75
|
-
expect(subject.dialog_name).to eq("unit-test")
|
|
76
|
-
|
|
77
|
-
subject = Releaf::Builders::EditBuilder.new(template)
|
|
78
|
-
expect(subject.dialog_name).to eq("edit")
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
describe "#header" do
|
|
83
|
-
it "returns safely joined breadcrumbs, flash notices and header extras within header tag" do
|
|
84
|
-
allow(subject).to receive(:breadcrumbs).and_return(ActiveSupport::SafeBuffer.new("breadcrumbs>"))
|
|
85
|
-
allow(subject).to receive(:flash_notices).and_return(ActiveSupport::SafeBuffer.new(">_and_notices_"))
|
|
86
|
-
allow(subject).to receive(:header_extras).and_return(ActiveSupport::SafeBuffer.new(">extras"))
|
|
87
|
-
expect(subject.header).to eq("<header>breadcrumbs>>_and_notices_>extras</header>")
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
describe "#section" do
|
|
92
|
-
it "returns safely joined section blocks within section tag" do
|
|
93
|
-
allow(subject).to receive(:section_attributes).and_return(class: "xx")
|
|
94
|
-
allow(subject).to receive(:section_blocks).and_return([ '<', ActiveSupport::SafeBuffer.new(">")])
|
|
95
|
-
expect(subject.section).to eq('<section class="xx"><></section>')
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
describe "#section_attributes" do
|
|
100
|
-
context "within dialog" do
|
|
101
|
-
it "returns hash with dialog classes" do
|
|
102
|
-
allow(subject).to receive(:dialog?).and_return(true)
|
|
103
|
-
allow(subject).to receive(:dialog_name).and_return("xxx")
|
|
104
|
-
expect(subject.section_attributes).to eq(class: ["dialog", "xxx"])
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
context "when not within dialog" do
|
|
109
|
-
it "returns empty hash" do
|
|
110
|
-
allow(subject).to receive(:dialog?).and_return(false)
|
|
111
|
-
expect(subject.section_attributes).to eq({})
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
describe "#breadcrumbs" do
|
|
117
|
-
context "when breadcrumbs template variable exists" do
|
|
118
|
-
it "returns safely joined breadcrumbs items list within nav element" do
|
|
119
|
-
allow(subject).to receive(:template_variable).with("breadcrumbs").and_return([:a, :b, :c])
|
|
120
|
-
allow(subject).to receive(:breadcrumb_item).with(:a, false).and_return(">a")
|
|
121
|
-
allow(subject).to receive(:breadcrumb_item).with(:b, false).and_return(ActiveSupport::SafeBuffer.new(">b"))
|
|
122
|
-
allow(subject).to receive(:breadcrumb_item).with(:c, true).and_return(">c")
|
|
123
|
-
content = '<nav><ul class="breadcrumbs">>a>b>c</ul></nav>'
|
|
124
|
-
expect(subject.breadcrumbs).to eq(content)
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
context "when breadcrumbs template variable does not exists" do
|
|
129
|
-
it "returns nil" do
|
|
130
|
-
allow(subject).to receive(:template_variable).with("breadcrumbs").and_return(nil)
|
|
131
|
-
expect(subject.breadcrumbs).to be nil
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
describe "#breadcrumb_item" do
|
|
137
|
-
context "when given breadcrumb item has url" do
|
|
138
|
-
it "returns name wrapped within link" do
|
|
139
|
-
expect(subject.breadcrumb_item({url: "asa", name: "x"}, true)).to eq('<li><a href="asa">x</a></li>')
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
context "when given breadcrumb item has no url" do
|
|
144
|
-
it "returns only name" do
|
|
145
|
-
expect(subject.breadcrumb_item({name: "x"}, true)).to eq('<li>x</li>')
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
it "adds breadcrumb icon after except when last element given" do
|
|
150
|
-
expect(subject.breadcrumb_item({name: "x"}, true)).to eq('<li>x</li>')
|
|
151
|
-
expect(subject.breadcrumb_item({name: "x"}, false)).to eq('<li>x<i class="fa fa-chevron-right"></i></li>')
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
describe "#flash_notices" do
|
|
156
|
-
it "returns safely joined flash items" do
|
|
157
|
-
allow(subject).to receive(:flash).and_return(a: "xx", b: "yy")
|
|
158
|
-
allow(subject).to receive(:flash_item).with(:a, "xx").and_return(ActiveSupport::SafeBuffer.new("<a"))
|
|
159
|
-
allow(subject).to receive(:flash_item).with(:b, "yy").and_return("b>")
|
|
160
|
-
expect(subject.flash_notices).to eq("<ab>")
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
describe "#flash_item" do
|
|
165
|
-
it "returns flash item" do
|
|
166
|
-
expect(subject.flash_item(:error, "some error")).to eq('<div class="flash" data-type="error">some error</div>')
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
it "supports flash item data as hash" do
|
|
170
|
-
expect(subject.flash_item(:error, "id" => "unique", "message" => "errrrrror")).to eq('<div class="flash" data-type="error" data-id="unique">errrrrror</div>')
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
describe "#header_extras" do
|
|
175
|
-
it "returns nil (method to override in later classes)" do
|
|
176
|
-
expect(subject.header_extras).to be nil
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
describe "#section_blocks" do
|
|
181
|
-
it "returns array of section header, body and footer blocks" do
|
|
182
|
-
allow(subject).to receive(:section_header).and_return("a")
|
|
183
|
-
allow(subject).to receive(:section_body).and_return("b")
|
|
184
|
-
allow(subject).to receive(:section_footer).and_return("c")
|
|
185
|
-
|
|
186
|
-
expect(subject.section_blocks).to eq(["a", "b", "c"])
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
describe "#section_header" do
|
|
191
|
-
it "returns header content with header extras" do
|
|
192
|
-
allow(subject).to receive(:section_header_text).and_return("sektion h")
|
|
193
|
-
allow(subject).to receive(:section_header_extras).and_return("extras")
|
|
194
|
-
expect(subject.section_header).to eq("<header><h1>sektion h</h1>extras</header>")
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
describe "#section_header_text" do
|
|
199
|
-
it "returns nil (method to override in later classes)" do
|
|
200
|
-
expect(subject.section_header_text).to be nil
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
describe "#section_header_extras" do
|
|
205
|
-
it "returns nil (method to override in later classes)" do
|
|
206
|
-
expect(subject.section_header_extras).to be nil
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
describe "#section_body" do
|
|
211
|
-
it "returns nil (method to override in later classes)" do
|
|
212
|
-
expect(subject.section_body).to be nil
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
describe "#section_footer" do
|
|
217
|
-
it "returns footer with footer attributes and content" do
|
|
218
|
-
allow(subject).to receive(:section_footer_class).and_return(["axx", "b"])
|
|
219
|
-
allow(subject).to receive(:footer_tools).and_return("footer content")
|
|
220
|
-
expect(subject.section_footer).to eq('<footer class="axx b">footer content</footer>')
|
|
221
|
-
end
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
describe "#section_footer_class" do
|
|
225
|
-
context "within dialog" do
|
|
226
|
-
it "returns nil" do
|
|
227
|
-
allow(subject).to receive(:dialog?).and_return(true)
|
|
228
|
-
expect(subject.section_footer_class).to be nil
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
context "when not within dialog" do
|
|
233
|
-
it "returns :main" do
|
|
234
|
-
allow(subject).to receive(:dialog?).and_return(false)
|
|
235
|
-
expect(subject.section_footer_class).to eq(:main)
|
|
236
|
-
end
|
|
237
|
-
end
|
|
238
|
-
end
|
|
239
|
-
|
|
240
|
-
describe "#footer_tools" do
|
|
241
|
-
it "returns footer tools" do
|
|
242
|
-
allow(subject).to receive(:footer_blocks).and_return([ActiveSupport::SafeBuffer.new("<a"), "b>"])
|
|
243
|
-
expect(subject.footer_tools).to eq('<div class="tools"><ab></div>')
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
describe "#footer_blocks" do
|
|
248
|
-
it "returns array of footer primary and secondary blocks" do
|
|
249
|
-
allow(subject).to receive(:footer_primary_block).and_return("a")
|
|
250
|
-
allow(subject).to receive(:footer_secondary_block).and_return("b")
|
|
251
|
-
|
|
252
|
-
expect(subject.footer_blocks).to eq(["a", "b"])
|
|
253
|
-
end
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
describe "#footer_primary_block" do
|
|
257
|
-
it "returns footer tools" do
|
|
258
|
-
allow(subject).to receive(:footer_primary_tools).and_return([ActiveSupport::SafeBuffer.new("<a"), "b>"])
|
|
259
|
-
expect(subject.footer_primary_block).to eq('<div class="primary"><ab></div>')
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
describe "#footer_secondary_block" do
|
|
264
|
-
it "returns footer tools" do
|
|
265
|
-
allow(subject).to receive(:footer_secondary_tools).and_return([ActiveSupport::SafeBuffer.new("<a"), "b>"])
|
|
266
|
-
expect(subject.footer_secondary_block).to eq('<div class="secondary"><ab></div>')
|
|
267
|
-
end
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
describe "#footer_primary_tools" do
|
|
271
|
-
it "returns nil (method to override in later classes)" do
|
|
272
|
-
expect(subject.footer_primary_tools).to be nil
|
|
273
|
-
end
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
describe "#footer_secondary_tools" do
|
|
277
|
-
it "returns nil (method to override in later classes)" do
|
|
278
|
-
expect(subject.footer_secondary_tools).to be nil
|
|
279
|
-
end
|
|
280
|
-
end
|
|
281
|
-
end
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
describe Releaf::Builders, type: :class do
|
|
4
|
-
module Admin::Advanced
|
|
5
|
-
class FormBuilder
|
|
6
|
-
end
|
|
7
|
-
class AuthorsController
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
class Admin::Advanced::Builders < Releaf::Builders; end
|
|
12
|
-
|
|
13
|
-
describe ".builder_class" do
|
|
14
|
-
before do
|
|
15
|
-
allow(described_class).to receive(:inherited_builder_scopes).and_return(["Releaf::Permissions::Users"])
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "returns first existing builder class from given and inherited scopes" do
|
|
19
|
-
expect(described_class).to receive(:builder_class_at_scope).with("Admin::Advanced", :form)
|
|
20
|
-
.and_return(nil).ordered
|
|
21
|
-
expect(described_class).to receive(:builder_class_at_scope).with("Releaf::Permissions::Users", :form)
|
|
22
|
-
.and_return(Releaf::Permissions::Users::FormBuilder).ordered
|
|
23
|
-
|
|
24
|
-
expect(described_class.builder_class(["Admin::Advanced"], :form)).to eq(Releaf::Permissions::Users::FormBuilder)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
context "when no builders exists for given scope and type" do
|
|
28
|
-
it "raises error" do
|
|
29
|
-
allow(described_class).to receive(:builder_class_at_scope).and_return(nil)
|
|
30
|
-
error_message = 'unexisting builder (type: form; scopes: Admin::Advanced)'
|
|
31
|
-
expect{ described_class.builder_class(["Admin::Advanced"], :form) }.to raise_error(ArgumentError, error_message)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
describe ".builder_class_at_scope" do
|
|
37
|
-
before do
|
|
38
|
-
allow(described_class).to receive(:constant_defined_at_scope?)
|
|
39
|
-
.with("Releaf::Builders", Object).and_return(true)
|
|
40
|
-
allow(described_class).to receive(:constant_defined_at_scope?)
|
|
41
|
-
.with("Releaf::Builders::EditBuilder", Releaf::Builders).and_return(true)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
context "when scope and builder exists" do
|
|
45
|
-
it "returns builder class" do
|
|
46
|
-
expect(described_class.builder_class_at_scope("Releaf::Builders", :edit)).to eq(Releaf::Builders::EditBuilder)
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
context "when scope exists but builder does not" do
|
|
51
|
-
it "returns nil" do
|
|
52
|
-
allow(described_class).to receive(:constant_defined_at_scope?)
|
|
53
|
-
.with("Releaf::Builders", Object).and_return(false)
|
|
54
|
-
expect(described_class.builder_class_at_scope("Releaf::Builders", :edit)).to be nil
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "when scope does not exist" do
|
|
59
|
-
it "returns nil" do
|
|
60
|
-
allow(described_class).to receive(:constant_defined_at_scope?)
|
|
61
|
-
.with("Releaf::Builders::EditBuilder", Releaf::Builders).and_return(false)
|
|
62
|
-
expect(described_class.builder_class_at_scope("Releaf::Builders", :edit)).to be nil
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
describe ".constant_defined_at_scope?" do
|
|
68
|
-
before do
|
|
69
|
-
allow(Releaf).to receive(:const_get).and_call_original
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it "checks constant existence within given scope" do
|
|
73
|
-
expect(Releaf).to receive(:const_get).with("Releaf::Builders::FormBuilder").and_call_original
|
|
74
|
-
described_class.constant_defined_at_scope?("Releaf::Builders::FormBuilder", Releaf)
|
|
75
|
-
|
|
76
|
-
expect(Releaf).to receive(:const_get).with("Releaf::Builders::AnotherFormBuilder").and_call_original
|
|
77
|
-
described_class.constant_defined_at_scope?("Releaf::Builders::AnotherFormBuilder", Releaf)
|
|
78
|
-
|
|
79
|
-
expect(Admin).to receive(:const_get).with("Admin:xx").and_call_original
|
|
80
|
-
described_class.constant_defined_at_scope?("Admin:xx", Admin)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
context "when constant exists at given namespace" do
|
|
84
|
-
it "returns true" do
|
|
85
|
-
expect(described_class.constant_defined_at_scope?("Releaf::Builders::FormBuilder", Releaf)).to be true
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "compare constant with constant at given namespace and check whether it exists" do
|
|
89
|
-
allow(Admin).to receive(:const_get).with("Admin:xx").and_return(true)
|
|
90
|
-
expect(described_class.constant_defined_at_scope?("Admin:xx", Admin)).to be false
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
context "when NameError raised" do
|
|
95
|
-
context "when error message matches against constant name pattern" do
|
|
96
|
-
it "returns false" do
|
|
97
|
-
allow(described_class).to receive(:constant_name_error?)
|
|
98
|
-
.with("uninitialized constant Releaf::Builders::AnotherFormBuilder", "Releaf::Builders::AnotherFormBuilder")
|
|
99
|
-
.and_return(true)
|
|
100
|
-
expect(described_class.constant_defined_at_scope?("Releaf::Builders::AnotherFormBuilder", Releaf)).to be false
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
context "when error message does not match against constant name pattern" do
|
|
105
|
-
it "reraises it" do
|
|
106
|
-
allow(described_class).to receive(:constant_name_error?)
|
|
107
|
-
.with("uninitialized constant Releaf::Builders::AnotherFormBuilder", "Releaf::Builders::AnotherFormBuilder")
|
|
108
|
-
.and_return(false)
|
|
109
|
-
|
|
110
|
-
expect{ described_class.constant_defined_at_scope?("Releaf::Builders::AnotherFormBuilder", Releaf) }
|
|
111
|
-
.to raise_error(NameError, "uninitialized constant Releaf::Builders::AnotherFormBuilder")
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
context "when any other error raised" do
|
|
117
|
-
it "does not rescue it" do
|
|
118
|
-
allow(Releaf).to receive(:const_get).with("Releaf::Builders::FormBuilder")
|
|
119
|
-
.and_raise(ArgumentError, "xxx")
|
|
120
|
-
expect(described_class).to_not receive(:constant_name_error?)
|
|
121
|
-
|
|
122
|
-
expect{ described_class.constant_defined_at_scope?("Releaf::Builders::FormBuilder", Releaf) }
|
|
123
|
-
.to raise_error(ArgumentError, "xxx")
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe ".constant_name_error?" do
|
|
129
|
-
it "returns true when error matches given mapping" do
|
|
130
|
-
expect(described_class.constant_name_error?("Caused by NameError: uninitialized constant #<Class:0x00007fc1b79e8448>::AnotherFormBuilder", "Releaf::Builders::AnotherFormBuilder")).to be true
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
it "returns fales when error doesnt match given mapping" do
|
|
134
|
-
expect(described_class.constant_name_error?("Caused by NameError: uninitialized something", "Releaf::Builders::AnotherFormBuilder")).to be false
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
describe ".inherited_builder_scopes" do
|
|
139
|
-
it "returns inherited classes except Object and BasicObject" do
|
|
140
|
-
expect(described_class.inherited_builder_scopes).to eq(["Releaf::Builders"])
|
|
141
|
-
expect(Admin::Advanced::Builders.inherited_builder_scopes).to eq(["Admin::Advanced::Builders", "Releaf::Builders"])
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
require "rails_helper"
|
|
2
|
-
|
|
3
|
-
describe Releaf::Settings::FormBuilder, type: :class do
|
|
4
|
-
class FormBuilderTestHelper < ActionView::Base; end
|
|
5
|
-
let(:resource){ Releaf::Settings.new }
|
|
6
|
-
let(:template){ FormBuilderTestHelper.new(ActionView::LookupContext.new(nil), {}, nil) }
|
|
7
|
-
let(:subject){ described_class.new(:resource, resource, template, {}) }
|
|
8
|
-
|
|
9
|
-
describe "#field_names" do
|
|
10
|
-
it "returns :value as only editable field within array" do
|
|
11
|
-
expect(subject.field_names).to eq([:value])
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe "#render_value" do
|
|
16
|
-
it "renders with resolved label text and render method" do
|
|
17
|
-
allow(subject).to receive(:value_label_text).and_return("x")
|
|
18
|
-
allow(subject).to receive(:value_render_method_name).and_return("releaf_integer_field")
|
|
19
|
-
allow(subject).to receive(:releaf_integer_field).with(:value, { options: { label: { label_text: "x" }}}).and_return("y")
|
|
20
|
-
expect(subject.render_value).to eq("y")
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
describe "#value_render_method_name" do
|
|
25
|
-
it "returns render method built from input type" do
|
|
26
|
-
allow(resource).to receive(:input_type).and_return(:superdate)
|
|
27
|
-
expect(subject.value_render_method_name).to eq("releaf_superdate_field")
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe "#value_label_text" do
|
|
32
|
-
context "when description is available" do
|
|
33
|
-
it "returns translated description text" do
|
|
34
|
-
allow(resource).to receive(:description).and_return("x")
|
|
35
|
-
allow(subject).to receive(:t).with("x", { scope: "settings"}).and_return("y")
|
|
36
|
-
expect(subject.value_label_text).to eq("y")
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
context "when description is not available" do
|
|
41
|
-
it "returns translated 'value' attribute" do
|
|
42
|
-
allow(subject).to receive(:translate_attribute).with(:value).and_return("xx")
|
|
43
|
-
allow(resource).to receive(:description).and_return(nil)
|
|
44
|
-
expect(subject.value_label_text).to eq("xx")
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|