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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. metadata +3 -193
  3. data/spec/builders/releaf/builders/association_reflector_spec.rb +0 -138
  4. data/spec/builders/releaf/builders/base_spec.rb +0 -272
  5. data/spec/builders/releaf/builders/collection_spec.rb +0 -18
  6. data/spec/builders/releaf/builders/confirm_destroy_dialog_builder_spec.rb +0 -71
  7. data/spec/builders/releaf/builders/confirm_dialog_builder_spec.rb +0 -107
  8. data/spec/builders/releaf/builders/edit_builder_spec.rb +0 -322
  9. data/spec/builders/releaf/builders/form_builder/associations_spec.rb +0 -129
  10. data/spec/builders/releaf/builders/form_builder/date_fields_spec.rb +0 -86
  11. data/spec/builders/releaf/builders/form_builder/i18n_fields_spec.rb +0 -48
  12. data/spec/builders/releaf/builders/form_builder/label_spec.rb +0 -106
  13. data/spec/builders/releaf/builders/form_builder/number_fields_spec.rb +0 -37
  14. data/spec/builders/releaf/builders/form_builder_spec.rb +0 -228
  15. data/spec/builders/releaf/builders/index_builder_spec.rb +0 -364
  16. data/spec/builders/releaf/builders/page/header_builder_spec.rb +0 -66
  17. data/spec/builders/releaf/builders/page/layout_builder_spec.rb +0 -237
  18. data/spec/builders/releaf/builders/page/menu_builder_spec.rb +0 -345
  19. data/spec/builders/releaf/builders/pagination_builder_spec.rb +0 -330
  20. data/spec/builders/releaf/builders/resource_dialog_spec.rb +0 -21
  21. data/spec/builders/releaf/builders/resource_view_spec.rb +0 -158
  22. data/spec/builders/releaf/builders/show_builder_spec.rb +0 -7
  23. data/spec/builders/releaf/builders/table_builder_spec.rb +0 -637
  24. data/spec/builders/releaf/builders/template_spec.rb +0 -12
  25. data/spec/builders/releaf/builders/toolbox_builder_spec.rb +0 -67
  26. data/spec/builders/releaf/builders/toolbox_spec.rb +0 -48
  27. data/spec/builders/releaf/builders/utilities/date_fields_spec.rb +0 -125
  28. data/spec/builders/releaf/builders/utilities/resolve_attribute_field_method_name_spec.rb +0 -318
  29. data/spec/builders/releaf/builders/view_spec.rb +0 -281
  30. data/spec/builders/releaf/builders_spec.rb +0 -144
  31. data/spec/builders/releaf/settings/form_builder_spec.rb +0 -48
  32. data/spec/builders/releaf/settings/table_builder_spec.rb +0 -23
  33. data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +0 -51
  34. data/spec/controllers/releaf/action_controller_spec.rb +0 -423
  35. data/spec/controllers/releaf/root_controller_spec.rb +0 -46
  36. data/spec/controllers/releaf/settings_controller_spec.rb +0 -52
  37. data/spec/error_hash_builder_spec.rb +0 -83
  38. data/spec/ext/array_reorder_spec.rb +0 -12
  39. data/spec/features/ajaxbox_spec.rb +0 -111
  40. data/spec/features/authorization_spec.rb +0 -50
  41. data/spec/features/breadcrumbs_spec.rb +0 -16
  42. data/spec/features/dragonfly_integration_spec.rb +0 -24
  43. data/spec/features/edit_actions_spec.rb +0 -186
  44. data/spec/features/errors_spec.rb +0 -47
  45. data/spec/features/index_actions_spec.rb +0 -86
  46. data/spec/features/index_table_spec.rb +0 -35
  47. data/spec/features/menu_spec.rb +0 -71
  48. data/spec/features/richtext_attachments_spec.rb +0 -64
  49. data/spec/features/richtext_custom_config_spec.rb +0 -28
  50. data/spec/features/richtext_embed_spec.rb +0 -29
  51. data/spec/features/richtext_spec.rb +0 -31
  52. data/spec/features/search_spec.rb +0 -825
  53. data/spec/features/settings_spec.rb +0 -70
  54. data/spec/features/title_spec.rb +0 -13
  55. data/spec/fixtures/common_fields.yml +0 -17
  56. data/spec/fixtures/cs.png +0 -0
  57. data/spec/fixtures/time.formats.xlsx +0 -0
  58. data/spec/fixtures/unicorn.jpg +0 -0
  59. data/spec/helpers/application_helper_spec.rb +0 -73
  60. data/spec/helpers/button_helper_spec.rb +0 -146
  61. data/spec/lib/releaf/action_controller/features_spec.rb +0 -171
  62. data/spec/lib/releaf/action_controller/search_spec.rb +0 -84
  63. data/spec/lib/releaf/application_spec.rb +0 -43
  64. data/spec/lib/releaf/assets_resolver_spec.rb +0 -130
  65. data/spec/lib/releaf/build_errors_hash_spec.rb +0 -141
  66. data/spec/lib/releaf/configuration_spec.rb +0 -205
  67. data/spec/lib/releaf/controller_definition_spec.rb +0 -78
  68. data/spec/lib/releaf/controller_group_definition_spec.rb +0 -33
  69. data/spec/lib/releaf/default_searchable_fields_spec.rb +0 -161
  70. data/spec/lib/releaf/instance_cache_spec.rb +0 -98
  71. data/spec/lib/releaf/resource_base_spec.rb +0 -212
  72. data/spec/lib/releaf/resource_fields_spec.rb +0 -12
  73. data/spec/lib/releaf/resource_params_spec.rb +0 -115
  74. data/spec/lib/releaf/resource_table_fields_spec.rb +0 -20
  75. data/spec/lib/releaf/resource_utilities_spec.rb +0 -87
  76. data/spec/lib/releaf/responders/access_denied_responder_spec.rb +0 -12
  77. data/spec/lib/releaf/responders/after_save_responder_spec.rb +0 -88
  78. data/spec/lib/releaf/responders/confirm_destroy_responder_spec.rb +0 -26
  79. data/spec/lib/releaf/responders/destroy_responder_spec.rb +0 -30
  80. data/spec/lib/releaf/responders/error_responder_spec.rb +0 -26
  81. data/spec/lib/releaf/responders/feature_disabled_responder_spec.rb +0 -12
  82. data/spec/lib/releaf/responders/page_not_found_responder_spec.rb +0 -12
  83. data/spec/lib/releaf/responders_spec.rb +0 -61
  84. data/spec/lib/releaf/root/configuration_spec.rb +0 -9
  85. data/spec/lib/releaf/root/default_controller_resolver_spec.rb +0 -44
  86. data/spec/lib/releaf/root_spec.rb +0 -13
  87. data/spec/lib/releaf/service_spec.rb +0 -20
  88. data/spec/lib/releaf/settings/normalize_value_spec.rb +0 -103
  89. data/spec/lib/releaf/settings/register_spec.rb +0 -135
  90. data/spec/lib/releaf/settings_manager_spec.rb +0 -22
  91. data/spec/lib/validation_error_codes_spec.rb +0 -56
  92. data/spec/misc/factories_spec.rb +0 -31
  93. data/spec/models/settings_spec.rb +0 -104
  94. data/spec/routing/route_mapper_spec.rb +0 -185
  95. data/spec/rspec_helpers/test_helpers_spec.rb +0 -20
  96. data/spec/rspec_helpers/test_spec.rb +0 -14
  97. data/spec/services/array/reorder_spec.rb +0 -121
@@ -1,18 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Builders::Collection, type: :module do
4
- class CollectionIncluder
5
- include Releaf::Builders::Base
6
- include Releaf::Builders::Template
7
- include Releaf::Builders::Collection
8
- end
9
- class CollectionTestHelper < ActionView::Base
10
- end
11
-
12
- it "it assigns template collection instance variable to instance 'collection' accessor on initialization" do
13
- template = CollectionTestHelper.new(ActionView::LookupContext.new(nil), {}, nil)
14
- template.instance_variable_set("@collection", "x")
15
- subject = CollectionIncluder.new(template)
16
- expect(subject.collection).to eq("x")
17
- end
18
- end
@@ -1,71 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Builders::ConfirmDestroyDialogBuilder, type: :class do
4
- class ConfirmDestroyDialogTestHelper < ActionView::Base
5
- include FontAwesome::Rails::IconHelper
6
- include Releaf::ButtonHelper
7
- include Releaf::ApplicationHelper
8
-
9
- def protect_against_forgery?
10
- true
11
- end
12
-
13
- def form_authenticity_token
14
- "xxx"
15
- end
16
-
17
- def request_forgery_protection_token
18
- "yyy"
19
- end
20
- end
21
-
22
- let(:template){ ConfirmDestroyDialogTestHelper.new(ActionView::LookupContext.new(nil), {}, nil) }
23
- let(:object){ Book.new(id: 99, title: "book title") }
24
- let(:subject){ described_class.new(template) }
25
-
26
- before do
27
- subject.resource = object
28
- allow(subject.template).to receive(:controller).and_return(Releaf::ActionController.new)
29
- allow(subject.controller).to receive(:index_path).and_return("y")
30
- end
31
-
32
- describe "#question_content" do
33
- it "localized destroy question" do
34
- allow(subject).to receive(:t).with("Do you want to delete the following object?").and_return("xx")
35
- expect(subject.question_content).to eq("xx")
36
- end
37
- end
38
-
39
- describe "#description_content" do
40
- it "returns `resource_title` value" do
41
- allow(subject).to receive(:resource_title).with(object).and_return("xx")
42
- expect(subject.description_content).to eq("xx")
43
- end
44
- end
45
-
46
- describe "#section_body" do
47
- it "returns destroy description content" do
48
- content = '<div class="body"><i class="fa fa-trash-o"></i><div class="question">Do you want to delete the following object?</div><div class="description">book title</div></div>'
49
- expect(subject.section_body).to eq(content)
50
- end
51
- end
52
-
53
- describe "#confirm_method" do
54
- it "returns :delete" do
55
- expect(subject.confirm_method).to eq(:delete)
56
- end
57
- end
58
-
59
- describe "#icon_name" do
60
- it "returns trash icon" do
61
- expect(subject.icon_name).to eq("trash-o")
62
- end
63
- end
64
-
65
- describe "#confirm_url" do
66
- it "returns resource destroy url" do
67
- allow(subject.template).to receive(:url_for).with(action: 'destroy', id: 99, index_path: "y").and_return("x")
68
- expect(subject.confirm_url).to eq("x")
69
- end
70
- end
71
- end
@@ -1,107 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Builders::ConfirmDialogBuilder, type: :class do
4
- class ConfirmDestroyDialogTestHelper < ActionView::Base
5
- include FontAwesome::Rails::IconHelper
6
- include Releaf::ButtonHelper
7
- include Releaf::ApplicationHelper
8
-
9
- def protect_against_forgery?
10
- true
11
- end
12
-
13
- def form_authenticity_token
14
- "xxx"
15
- end
16
-
17
- def request_forgery_protection_token
18
- "yyy"
19
- end
20
- end
21
-
22
- class ConfirmDialogBuilderInheriter < Releaf::Builders::ConfirmDialogBuilder
23
- def confirm_url; end
24
- def icon_name; end
25
- def question_content; end
26
- def description_content; end
27
- def confirm_method; end
28
- end
29
-
30
- let(:template){ ConfirmDestroyDialogTestHelper.new(ActionView::LookupContext.new(nil), {}, nil) }
31
- let(:object){ Book.new(id: 99, title: "book title") }
32
- let(:subject){ ConfirmDialogBuilderInheriter.new(template) }
33
-
34
- before do
35
- subject.resource = object
36
- allow(subject.template).to receive(:controller).and_return(Releaf::ActionController.new)
37
- allow(subject.controller).to receive(:index_path).and_return("y")
38
- end
39
-
40
- describe "#section_body" do
41
- it "returns destroy description content" do
42
- allow(subject).to receive(:section_body_blocks).and_return(["a", "b"])
43
- content = '<div class="body">ab</div>'
44
- expect(subject.section_body).to eq(content)
45
- end
46
- end
47
-
48
- describe "#section_body_blocks" do
49
- it "returns section body blocks" do
50
- allow(subject).to receive(:icon_name).and_return("circle")
51
- allow(subject).to receive(:question_content).and_return("question")
52
- allow(subject).to receive(:description_content).and_return("description")
53
-
54
- allow(subject).to receive(:icon).with("circle").and_return("ikon")
55
- allow(subject).to receive(:tag).with(:div, "question", class: "question").and_return("question")
56
- allow(subject).to receive(:tag).with(:div, "description", class: "description").and_return("description")
57
- expect(subject.section_body_blocks).to eq(["ikon", "question", "description"])
58
- end
59
- end
60
-
61
- describe "#section_attributes" do
62
- it "adds `confirm` class" do
63
- expect(subject.section_attributes[:class]).to include("confirm")
64
- end
65
- end
66
-
67
- describe "#footer_primary_tools" do
68
- it "returns array with cancel and confirm forms" do
69
- allow(subject).to receive(:cancel_button).and_return("a")
70
- allow(subject).to receive(:confirm_button).and_return("b")
71
- expect(subject.footer_primary_tools).to eq(["a", "b"])
72
- end
73
- end
74
-
75
- describe "#confirm_form_options" do
76
- it "returns confirm form options" do
77
- allow(subject).to receive(:confirm_url).and_return("x")
78
- allow(subject).to receive(:confirm_method).and_return("tt")
79
- expect(subject.confirm_form_options).to eq(builder: Releaf::Builders::FormBuilder, url: "x", as: :resource, method: "tt")
80
- end
81
- end
82
-
83
- describe "#confirm_button" do
84
- it "returns confirm button" do
85
- allow(subject).to receive(:t).with("Yes").and_return("Yess")
86
- allow(subject).to receive(:button).with("Yess", "check", class: "danger", type: "submit").and_return("x")
87
- expect(subject.confirm_button).to eq("x")
88
- end
89
- end
90
-
91
- describe "#cancel_path" do
92
- it "returns index path" do
93
- allow(subject).to receive(:index_path).and_return("x")
94
- expect(subject.cancel_path).to eq("x")
95
- end
96
- end
97
-
98
- describe "#cancel_button" do
99
- it "returns cancel button" do
100
- allow(subject).to receive(:cancel_path).and_return("xasd")
101
- allow(subject).to receive(:t).with("No").and_return("Noo")
102
- allow(subject).to receive(:button).with("Noo", "ban", class: "secondary", data: {type: "cancel"}, href: "xasd")
103
- .and_return("x")
104
- expect(subject.cancel_button).to eq("x")
105
- end
106
- end
107
- end
@@ -1,322 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Builders::EditBuilder, type: :class do
4
- class TranslationsEditBuilderTestHelper < ActionView::Base
5
- include Releaf::ApplicationHelper
6
- include Releaf::ButtonHelper
7
- include FontAwesome::Rails::IconHelper
8
-
9
- def protect_against_forgery?
10
- true
11
- end
12
- def form_authenticity_token(_)
13
- "xxx"
14
- end
15
-
16
- def request_forgery_protection_token
17
- "yyy"
18
- end
19
- end
20
-
21
- let(:template){ TranslationsEditBuilderTestHelper.new(ActionView::LookupContext.new(nil), {}, nil) }
22
- let(:subject){ described_class.new(template) }
23
- let(:controller){ Releaf::ActionController.new }
24
- let(:resource){ Book.new }
25
-
26
- before do
27
- allow(template).to receive(:controller).and_return(controller)
28
- allow(controller).to receive(:action_name).and_return(:edit)
29
- allow(subject).to receive(:resource).and_return(resource)
30
- end
31
-
32
- describe "#section_content" do
33
- before do
34
- allow(subject).to receive(:section_attributes).and_return(a: "b")
35
- allow(subject).to receive(:form_options).and_return(url: "xxx", builder: Releaf::Builders::FormBuilder)
36
- allow(subject).to receive(:index_path_preserver).and_return("_index_path_")
37
- allow(subject).to receive(:section_blocks).and_return(["_section_","_blocks_"])
38
- end
39
-
40
- it "returns section with index url preserver and section blocks" do
41
- expect(subject.section_content).to eq('<form class="new_book" id="new_book" action="xxx" accept-charset="UTF-8" method="post"><input type="hidden" name="yyy" value="xxx" />_index_path__section__blocks_</form>')
42
- end
43
-
44
- it "assigns form instance to builder" do
45
- expect{ subject.section_content }.to change{ subject.form }.from(nil)
46
- expect(subject.form).to be_instance_of Releaf::Builders::FormBuilder
47
- end
48
- end
49
-
50
- describe "#index_path_preserver" do
51
- it "returns hidden index url input" do
52
- allow(subject).to receive(:params).and_return(index_path: "?asd=23&lf=dd")
53
- result = '<input type="hidden" name="index_path" id="index_path" value="?asd=23&amp;lf=dd" />'
54
- expect(subject.index_path_preserver).to eq(result)
55
- end
56
- end
57
-
58
- describe "#section_body_blocks" do
59
- it "returns array with error notices and form fields" do
60
- allow(subject).to receive(:error_notices).and_return("err")
61
- allow(subject).to receive(:form_fields).and_return("fields")
62
- expect(subject.section_body_blocks).to eq(["err", "fields"])
63
- end
64
- end
65
-
66
- describe "#error_notices" do
67
-
68
- before do
69
- allow(subject).to receive(:error_notices_header).and_return("<error_notice_header />".html_safe)
70
- end
71
-
72
- context "when errors exists" do
73
-
74
- it "returns errors block" do
75
- resource.valid?
76
-
77
- expect(subject.error_notices).to match_html(%Q[
78
- <div class="form-error-box">
79
- <error_notice_header />
80
- <ul>
81
- <li class="error">Title can&#39;t be blank</li>
82
- </ul>
83
- </div>
84
- ])
85
- end
86
- end
87
-
88
- context "when no errors present" do
89
- it "returns nil" do
90
- expect(subject.error_notices).to be nil
91
- end
92
- end
93
- end
94
-
95
- describe "#error_notices_header" do
96
- it "returns validation errors notices header" do
97
- resource.valid?
98
- expect(subject.error_notices_header).to eq('<strong>1 validation error occured:</strong>')
99
-
100
- resource.title = "xx"
101
- resource.valid?
102
- expect(subject.error_notices_header).to eq('<strong>0 validation errors occured:</strong>')
103
- end
104
- end
105
-
106
- describe "#footer_primary_tools" do
107
- before do
108
- allow(subject).to receive(:save_button).and_return("_svbtn_")
109
- allow(subject).to receive(:save_and_create_another_button).and_return("_svacrbtn_")
110
- end
111
-
112
- context "when create_another is availble" do
113
- it "returns an array with save_and_create_another and save buttons" do
114
- allow(subject).to receive(:create_another_available?).and_return true
115
- expect(subject.footer_primary_tools).to eq(["_svacrbtn_", "_svbtn_"])
116
- end
117
- end
118
-
119
- context "when create_another is not available" do
120
- it "returns an array with save button" do
121
- allow(subject).to receive(:create_another_available?).and_return false
122
- expect(subject.footer_primary_tools).to eq(["_svbtn_"])
123
- end
124
- end
125
-
126
- end
127
-
128
- describe "#create_another_available?" do
129
- context "when editing an existing record" do
130
- let(:resource){ FactoryBot.create(:book) }
131
-
132
- context "when controller has create_another feature enabled" do
133
- it "returns false" do
134
- expect(subject.create_another_available?).to be false
135
- end
136
- end
137
-
138
- context "when controller has create_another feature disabled" do
139
- it "returns false" do
140
- expect(subject.create_another_available?).to be false
141
- end
142
- end
143
- end
144
-
145
- context "when creating a new record" do
146
- context "when controller has create_another feature enabled" do
147
- it "returns true" do
148
- expect(subject.create_another_available?).to be true
149
- end
150
- end
151
-
152
- context "when controller has create_another feature disabled" do
153
- it "returns false" do
154
- allow(controller).to receive(:feature_available?).with(:create_another).and_return false
155
- expect(subject.create_another_available?).to be false
156
- end
157
- end
158
- end
159
-
160
- context "when resource is not present" do
161
- let(:resource){ nil }
162
- it "returns false" do
163
- expect(subject.create_another_available?).to be false
164
- end
165
- end
166
-
167
- end
168
-
169
- describe "#save_and_create_another_button" do
170
- it "returns save and create button" do
171
- allow(template).to receive(:fa_icon).with("plus").and_return('<plus_icon />'.html_safe)
172
- allow(subject).to receive(:t).with("Save and create another").and_return("Save and ccrr")
173
- expect(subject.save_and_create_another_button).to match_html(%Q[
174
- <button class="button with-icon secondary" title="Save and ccrr" type="submit" autocomplete="off" name="after_save" value="create_another" data-type="ok" data-disable="true">
175
- <plus_icon />
176
- Save and ccrr
177
- </button>
178
- ])
179
- end
180
- end
181
-
182
- describe "#form_options" do
183
- it "returns form options" do
184
- allow(subject).to receive(:form_builder_class).and_return("CustomFormBuilderClassHere")
185
- allow(subject).to receive(:form_url).and_return("/some-url-here")
186
- allow(subject).to receive(:form_attributes).and_return(some: "options_here")
187
- allow(subject).to receive(:resource_name).and_return(:author)
188
-
189
- options = {
190
- builder: "CustomFormBuilderClassHere",
191
- as: :author,
192
- url: "/some-url-here",
193
- html: {some: "options_here"}
194
- }
195
- expect(subject.form_options).to eq(options)
196
- end
197
- end
198
-
199
- describe "#form_url" do
200
- it "returns form url built from form action and resource id" do
201
- resource.id = 23
202
- allow(subject).to receive(:form_action).and_return("upd")
203
- allow(subject).to receive(:url_for).with(action: "upd", id: 23).and_return("/res/new")
204
- expect(subject.form_url).to eq("/res/new")
205
- end
206
- end
207
-
208
- describe "#form_action" do
209
- context "when new resource" do
210
- it "returns `create`" do
211
- allow(resource).to receive(:new_record?).and_return(true)
212
- expect(subject.form_action).to eq("create")
213
- end
214
- end
215
-
216
- context "when persisted resource" do
217
- it "returns `update`" do
218
- allow(resource).to receive(:new_record?).and_return(false)
219
- expect(subject.form_action).to eq("update")
220
- end
221
- end
222
- end
223
-
224
- describe "#resource_name" do
225
- it "returns `:resource`" do
226
- expect(subject.resource_name).to eq(:resource)
227
- end
228
- end
229
-
230
- describe "#form_url" do
231
- it "returns form builder class" do
232
- allow(subject).to receive(:builder_class).with(:form).and_return("x")
233
- expect(subject.form_builder_class).to eq("x")
234
- end
235
- end
236
-
237
- describe "#form_identifier" do
238
- before do
239
- allow(subject).to receive(:resource_name).and_return(:book)
240
- end
241
-
242
- context "when resource has persistance check method and it's persisted" do
243
- it "returns resource name prefixed with `edit-`" do
244
- allow(resource).to receive(:persisted?).and_return(true)
245
- expect(subject.form_identifier).to eq("edit-book")
246
- end
247
- end
248
-
249
- context "when resource has persistance check method and it's not persisted" do
250
- it "returns resource name prefixed with `new-`" do
251
- allow(resource).to receive(:persisted?).and_return(false)
252
- expect(subject.form_identifier).to eq("new-book")
253
- end
254
- end
255
-
256
- context "when resource has no persistance check method" do
257
- it "returns resource name prefixed with `update-`" do
258
- allow(subject).to receive(:resource).and_return(String.new)
259
- expect(subject.form_identifier).to eq("edit-book")
260
- end
261
- end
262
- end
263
-
264
- describe "#form_classes" do
265
- before do
266
- allow(subject).to receive(:form_identifier).and_return("xx")
267
- end
268
-
269
- it "returns array with form identifier" do
270
- expect(subject.form_classes).to eq(["xx"])
271
- end
272
-
273
- context "when object has any errors" do
274
- it "adds has-error class to returned array" do
275
- resource.title = nil
276
- resource.valid?
277
- expect(subject.form_classes).to eq(["xx", "has-error"])
278
- end
279
- end
280
- end
281
-
282
- describe "#form_attributes" do
283
- it "returns form attributes" do
284
- allow(subject).to receive(:form_identifier).and_return("xx")
285
- allow(subject).to receive(:form_classes).and_return(["a", "b"])
286
-
287
- attributes = {
288
- multipart: true,
289
- novalidate: "",
290
- class: ["a", "b"],
291
- id: "xx",
292
- data: {
293
- "remote"=>true,
294
- "remote-validation"=>true,
295
- "type"=>:json
296
- }
297
- }
298
- expect(subject.form_attributes).to eq(attributes)
299
- end
300
- end
301
-
302
- describe "#save_button" do
303
- it "returns save button" do
304
- allow(subject).to receive(:button)
305
- .with("to_list", "check", {class: "primary", data: {type: "ok", disable: true}, type: "submit"})
306
- .and_return("_btn_")
307
- allow(subject).to receive(:t).with("Save").and_return("to_list")
308
- expect(subject.save_button).to eq("_btn_")
309
- end
310
- end
311
-
312
- describe "#form_fields" do
313
- it "returns form `releaf_fields` output for form `field_names` casted to array" do
314
- form = Releaf::Builders::FormBuilder.new(:book, Book.new, template, {})
315
- subject.form = form
316
- allow(form).to receive(:field_names).and_return({a: 1, b: 2})
317
- allow(form).to receive(:releaf_fields).with([[:a, 1], [:b, 2]]).and_return(:x)
318
-
319
- expect(subject.form_fields).to eq(:x)
320
- end
321
- end
322
- end