datagrid 1.6.1 → 1.6.2

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/datagrid.gemspec +26 -164
  4. data/lib/datagrid/columns.rb +5 -10
  5. data/lib/datagrid/filters.rb +3 -6
  6. data/lib/datagrid/filters/base_filter.rb +8 -0
  7. data/lib/datagrid/form_builder.rb +14 -13
  8. data/lib/datagrid/version.rb +3 -0
  9. metadata +10 -196
  10. data/.document +0 -5
  11. data/.rspec +0 -1
  12. data/.travis.yml +0 -23
  13. data/Gemfile +0 -33
  14. data/Rakefile +0 -43
  15. data/VERSION +0 -1
  16. data/spec/datagrid/active_model_spec.rb +0 -33
  17. data/spec/datagrid/column_names_attribute_spec.rb +0 -86
  18. data/spec/datagrid/columns/column_spec.rb +0 -19
  19. data/spec/datagrid/columns_spec.rb +0 -592
  20. data/spec/datagrid/core_spec.rb +0 -210
  21. data/spec/datagrid/drivers/active_record_spec.rb +0 -79
  22. data/spec/datagrid/drivers/array_spec.rb +0 -106
  23. data/spec/datagrid/drivers/mongo_mapper_spec.rb +0 -101
  24. data/spec/datagrid/drivers/mongoid_spec.rb +0 -109
  25. data/spec/datagrid/drivers/sequel_spec.rb +0 -111
  26. data/spec/datagrid/filters/base_filter_spec.rb +0 -19
  27. data/spec/datagrid/filters/boolean_enum_filter_spec.rb +0 -5
  28. data/spec/datagrid/filters/composite_filters_spec.rb +0 -65
  29. data/spec/datagrid/filters/date_filter_spec.rb +0 -198
  30. data/spec/datagrid/filters/date_time_filter_spec.rb +0 -157
  31. data/spec/datagrid/filters/dynamic_filter_spec.rb +0 -175
  32. data/spec/datagrid/filters/enum_filter_spec.rb +0 -51
  33. data/spec/datagrid/filters/extended_boolean_filter_spec.rb +0 -46
  34. data/spec/datagrid/filters/float_filter_spec.rb +0 -15
  35. data/spec/datagrid/filters/integer_filter_spec.rb +0 -144
  36. data/spec/datagrid/filters/string_filter_spec.rb +0 -35
  37. data/spec/datagrid/filters_spec.rb +0 -332
  38. data/spec/datagrid/form_builder_spec.rb +0 -611
  39. data/spec/datagrid/helper_spec.rb +0 -683
  40. data/spec/datagrid/ordering_spec.rb +0 -150
  41. data/spec/datagrid/scaffold_spec.rb +0 -45
  42. data/spec/datagrid/stylesheet_spec.rb +0 -12
  43. data/spec/datagrid/utils_spec.rb +0 -19
  44. data/spec/datagrid_spec.rb +0 -94
  45. data/spec/spec_helper.rb +0 -123
  46. data/spec/support/active_record.rb +0 -38
  47. data/spec/support/configuration.rb +0 -28
  48. data/spec/support/i18n_helpers.rb +0 -6
  49. data/spec/support/matchers.rb +0 -101
  50. data/spec/support/mongo_mapper.rb +0 -32
  51. data/spec/support/mongoid.rb +0 -36
  52. data/spec/support/sequel.rb +0 -39
  53. data/spec/support/simple_report.rb +0 -64
  54. data/spec/support/test_partials/_actions.html.erb +0 -1
  55. data/spec/support/test_partials/client/datagrid/_form.html.erb +0 -13
  56. data/spec/support/test_partials/client/datagrid/_head.html.erb +0 -9
  57. data/spec/support/test_partials/client/datagrid/_order_for.html.erb +0 -11
  58. data/spec/support/test_partials/client/datagrid/_row.html.erb +0 -6
  59. data/spec/support/test_partials/client/datagrid/_table.html.erb +0 -19
  60. data/spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb +0 -1
  61. data/spec/support/test_partials/custom_form/_form.html.erb +0 -7
  62. data/spec/support/test_partials/custom_range/_range_filter.html.erb +0 -1
@@ -1,611 +0,0 @@
1
- # encoding: UTF-8
2
- require 'spec_helper'
3
- require "action_controller"
4
-
5
- class MyFormBuilder
6
- include Datagrid::FormBuilder
7
- end
8
-
9
- class MyTemplate
10
- include ActionView::Helpers::FormHelper
11
- end
12
-
13
-
14
- describe Datagrid::FormBuilder do
15
- let(:template) do
16
- action_view_template
17
- end
18
-
19
- let(:view) { ActionView::Helpers::FormBuilder.new(:report, _grid, template, view_options)}
20
- let(:view_options) { {} }
21
-
22
-
23
- describe ".datagrid_filter" do
24
- it "should work for every filter type" do
25
- Datagrid::Filters::FILTER_TYPES.each do |type, klass|
26
- expect(Datagrid::FormBuilder.instance_methods.map(&:to_sym)).to include(klass.form_builder_helper_name)
27
- end
28
- end
29
-
30
- subject do
31
- view.datagrid_filter(_filter, _filter_options, &_filter_block)
32
- end
33
-
34
- let(:_filter_options) { {} }
35
- let(:_filter_block) { nil }
36
- context "with default filter type" do
37
- let(:_grid) {
38
- test_report do
39
- scope {Entry}
40
- filter(:name)
41
- end
42
- }
43
- let(:_filter) { :name }
44
- it { should equal_to_dom(
45
- '<input class="name default_filter" type="text" name="report[name]" id="report_name"/>'
46
- )}
47
- end
48
- context "with integer filter type" do
49
- let(:_filter) { :group_id }
50
- let(:_grid) {
51
- test_report do
52
- scope {Entry}
53
- filter(:group_id, :integer)
54
- end
55
- }
56
- it { should equal_to_dom(
57
- '<input class="group_id integer_filter" type="text" name="report[group_id]" id="report_group_id"/>'
58
- )}
59
-
60
- context "when partials option is passed for filter that don't support range" do
61
- let(:view_options) { {partials: 'anything' } }
62
- it { should equal_to_dom(
63
- '<input class="group_id integer_filter" type="text" name="report[group_id]" id="report_group_id"/>'
64
- )}
65
- end
66
- end
67
-
68
- context "with date filter type" do
69
- let(:_filter) { :created_at }
70
- let(:_grid) {
71
- test_report do
72
- scope {Entry}
73
- filter(:created_at, :date)
74
- end
75
- }
76
- it { should equal_to_dom(
77
- '<input class="created_at date_filter" type="text" name="report[created_at]" id="report_created_at"/>'
78
- )}
79
- context "when special date format specified" do
80
- around(:each) do |example|
81
- _grid.created_at = Date.parse('2012-01-02')
82
- with_date_format do
83
- example.run
84
- end
85
- end
86
- it { should equal_to_dom(
87
- '<input value="01/02/2012" class="created_at date_filter" type="text" name="report[created_at]" id="report_created_at"/>'
88
- )}
89
- end
90
- end
91
-
92
- context "with integer filter type and range option" do
93
- let(:_filter) { :group_id }
94
- let(:_grid) {
95
- test_report(:group_id => _range) do
96
- scope {Entry}
97
- filter(:group_id, :integer, :range => true)
98
- end
99
- }
100
- context "when datagrid_filter options has id" do
101
- let(:_filter_options) { {:id => "hello"} }
102
- let(:_range) { [1,2]}
103
- it { should equal_to_dom(
104
- '<input id="from_hello" class="group_id integer_filter from" multiple value="1" type="text" name="report[group_id][]"/>' +
105
- '<span class="separator integer"> - </span>' +
106
- '<input id="to_hello" class="group_id integer_filter to" multiple value="2" type="text" name="report[group_id][]"/>'
107
- )}
108
- end
109
- context "with only left bound" do
110
-
111
- let(:_range) { [10, nil]}
112
- it { should equal_to_dom(
113
- '<input class="group_id integer_filter from" multiple value="10" type="text" name="report[group_id][]"/>' +
114
- '<span class="separator integer"> - </span>' +
115
- '<input class="group_id integer_filter to" multiple type="text" name="report[group_id][]"/>'
116
- )}
117
- it { should be_html_safe }
118
- end
119
- context "with only right bound" do
120
- let(:_range) { [nil, 10]}
121
- it { should equal_to_dom(
122
- '<input class="group_id integer_filter from" multiple type="text" name="report[group_id][]"/>' +
123
- '<span class="separator integer"> - </span>' +
124
- '<input class="group_id integer_filter to" multiple value="10" type="text" name="report[group_id][]"/>'
125
- )}
126
- it { should be_html_safe }
127
- end
128
-
129
- context "with invalid range value" do
130
- let(:_range) { 2..1 }
131
- it { should equal_to_dom(
132
- '<input class="group_id integer_filter from" multiple value="1" type="text" name="report[group_id][]"/>' +
133
- '<span class="separator integer"> - </span>' +
134
- '<input class="group_id integer_filter to" multiple value="2" type="text" name="report[group_id][]"/>'
135
- )}
136
- end
137
-
138
- context "with custom partials option and template exists" do
139
- let(:view_options) { { :partials => 'custom_range' } }
140
- let(:_range) { nil }
141
- it { should equal_to_dom(
142
- "custom_range_partial"
143
- ) }
144
- end
145
-
146
- context "when custom partial doesn't exist" do
147
- let(:view_options) { { :partials => 'not_existed' } }
148
- let(:_range) { nil }
149
- it { should equal_to_dom(
150
- '<input class="group_id integer_filter from" multiple type="text" name="report[group_id][]"><span class="separator integer"> - </span><input class="group_id integer_filter to" multiple type="text" name="report[group_id][]">'
151
- ) }
152
-
153
- end
154
- end
155
-
156
- context "with float filter type and range option" do
157
- let(:_filter) { :rating }
158
- let(:_grid) {
159
- test_report(:rating => _range) do
160
- scope {Group}
161
- filter(:rating, :float, :range => true)
162
- end
163
- }
164
- let(:_range) { [1.5,2.5]}
165
- it { should equal_to_dom(
166
- '<input class="rating float_filter from" multiple value="1.5" type="text" name="report[rating][]"/>' +
167
- '<span class="separator float"> - </span>' +
168
- '<input class="rating float_filter to" multiple value="2.5" type="text" name="report[rating][]"/>'
169
- )}
170
- end
171
-
172
- context "with date filter type and range option" do
173
- let(:_filter) { :created_at }
174
- let(:_grid) {
175
- test_report(:created_at => _range) do
176
- scope {Entry}
177
- filter(:created_at, :date, :range => true)
178
- end
179
- }
180
- context "with only left bound" do
181
-
182
- let(:_range) { ["2012-01-03", nil]}
183
- it { should equal_to_dom(
184
- '<input class="created_at date_filter from" multiple value="2012-01-03" type="text" name="report[created_at][]"/>' +
185
- '<span class="separator date"> - </span>' +
186
- '<input class="created_at date_filter to" multiple type="text" name="report[created_at][]"/>'
187
- )}
188
- it { should be_html_safe }
189
- end
190
- context "when special date format specified" do
191
- around(:each) do |example|
192
- with_date_format do
193
- example.run
194
- end
195
- end
196
- let(:_range) { ["2013/01/01", '2013/02/02']}
197
- it { should equal_to_dom(
198
- '<input class="created_at date_filter from" multiple value="01/01/2013" type="text" name="report[created_at][]"/>' +
199
- '<span class="separator date"> - </span>' +
200
- '<input class="created_at date_filter to" multiple value="02/02/2013" type="text" name="report[created_at][]"/>'
201
- )}
202
- end
203
- context "with only right bound" do
204
-
205
- let(:_range) { [nil, "2012-01-03"]}
206
- it { should equal_to_dom(
207
- '<input class="created_at date_filter from" multiple type="text" name="report[created_at][]"/>' +
208
- '<span class="separator date"> - </span>' +
209
- '<input class="created_at date_filter to" multiple value="2012-01-03" type="text" name="report[created_at][]"/>'
210
- )}
211
- it { should be_html_safe }
212
- end
213
-
214
- context "with invalid range value" do
215
- let(:_range) { Date.parse('2012-01-02')..Date.parse('2012-01-01') }
216
- it { should equal_to_dom(
217
- '<input class="created_at date_filter from" multiple value="2012-01-01" type="text" name="report[created_at][]"/>' +
218
- '<span class="separator date"> - </span>' +
219
- '<input class="created_at date_filter to" multiple value="2012-01-02" type="text" name="report[created_at][]"/>'
220
- )}
221
- end
222
- context "with blank range value" do
223
- around(:each) do |example|
224
- with_date_format do
225
- example.run
226
- end
227
- end
228
- let(:_range) { [nil, nil] }
229
- it { should equal_to_dom(
230
- '<input class="created_at date_filter from" multiple type="text" name="report[created_at][]"/>' +
231
- '<span class="separator date"> - </span>' +
232
- '<input class="created_at date_filter to" multiple type="text" name="report[created_at][]"/>'
233
- )}
234
- end
235
- end
236
- context "with enum filter type" do
237
- let(:_filter) { :category }
238
- let(:_grid) {
239
- test_report do
240
- scope {Entry}
241
- filter(:category, :enum, :select => ["first", "second"])
242
- filter(:category_without_include_blank, :enum, :select => ["first", "second"], :include_blank => false)
243
- filter(:category_with_prompt, :enum, :select => ["first", "second"], :prompt => "My Prompt")
244
- end
245
- }
246
- it { should equal_to_dom(
247
- '<select class="category enum_filter" name="report[category]" id="report_category"><option value=""></option>
248
- <option value="first">first</option>
249
- <option value="second">second</option></select>'
250
- )}
251
-
252
- context "when block is given" do
253
- before(:each) do
254
- skip("not supported by rails < 4.1") if Rails.version < '4.1'
255
- end
256
- let(:_filter_block ) do
257
- proc do
258
- template.content_tag(:option, 'block option', :value => 'block_value')
259
- end
260
- end
261
- it { should equal_to_dom(
262
- '<select class="category enum_filter" name="report[category]" id="report_category"><option value=""></option>
263
- <option value="block_value">block option</option></select>'
264
- )}
265
- end
266
- context "when first option is selected" do
267
- before(:each) do
268
- _grid.category = "first"
269
- end
270
- it { should equal_to_dom(
271
- '<select class="category enum_filter" name="report[category]" id="report_category"><option value=""></option>
272
- <option selected value="first">first</option>
273
- <option value="second">second</option></select>'
274
- )}
275
- end
276
- context "with include_blank option set to false" do
277
- let(:_filter) { :category_without_include_blank }
278
- it { should equal_to_dom(
279
- '<select class="category_without_include_blank enum_filter" name="report[category_without_include_blank]" id="report_category_without_include_blank">
280
- <option value="first">first</option>
281
- <option value="second">second</option></select>'
282
- )}
283
- end
284
- context "with dynamic include_blank option" do
285
- let(:_grid) do
286
- test_report do
287
- scope {Entry}
288
- filter(:category, :enum, :select => ["first", "second"], :include_blank => proc { "Choose plz" })
289
- end
290
- end
291
- let(:_filter) { :category }
292
- it { should equal_to_dom(
293
- '<select class="category enum_filter" name="report[category]" id="report_category">
294
- <option value="">Choose plz</option>
295
- <option value="first">first</option>
296
- <option value="second">second</option></select>'
297
- )}
298
- end
299
-
300
- context "with prompt option" do
301
- let(:_filter) { :category_with_prompt }
302
- it { should equal_to_dom(
303
- '<select class="category_with_prompt enum_filter" name="report[category_with_prompt]" id="report_category_with_prompt"><option value="">My Prompt</option>
304
- <option value="first">first</option>
305
- <option value="second">second</option></select>'
306
- )}
307
- end
308
- context "with checkboxes option" do
309
- let(:_grid) do
310
- test_report do
311
- scope {Entry}
312
- filter(:category, :enum, :select => ["first", "second"], :checkboxes => true)
313
- end
314
- end
315
- let(:_filter) { :category }
316
- if Rails.version >= "4.1"
317
- it { should equal_to_dom(
318
- '
319
- <label class="category enum_filter checkboxes" for="report_category_first"><input id="report_category_first" type="checkbox" value="first" name="report[category][]" />first</label>
320
- <label class="category enum_filter checkboxes" for="report_category_second"><input id="report_category_second" type="checkbox" value="second" name="report[category][]" />second</label>
321
- '
322
- )}
323
- else
324
- it { should equal_to_dom(
325
- '
326
- <label class="category enum_filter checkboxes" for="report_category_first"><input id="report_category_first" name="report[category][]" type="checkbox" value="first" />first</label>
327
- <label class="category enum_filter checkboxes" for="report_category_second"><input id="report_category_second" name="report[category][]" type="checkbox" value="second" />second</label>
328
- '
329
- )}
330
-
331
-
332
- end
333
-
334
- context "when partials option passed and partial exists" do
335
- let(:view_options) { {partials: 'custom_checkboxes'} }
336
- it { should equal_to_dom('custom_enum_checkboxes') }
337
- end
338
- end
339
- end
340
-
341
- context "with boolean filter type" do
342
- let(:_filter) { :disabled }
343
- let(:_grid) do
344
- test_report do
345
- scope {Entry}
346
- filter(:disabled, :boolean, default: true)
347
- end
348
- end
349
- it { should equal_to_dom(
350
- # hidden is important when default is set to true
351
- '<input name="report[disabled]" type="hidden" value="0"><input class="disabled boolean_filter" type="checkbox" value="1" checked name="report[disabled]" id="report_disabled">'
352
- )}
353
- end
354
- context "with xboolean filter type" do
355
- let(:_filter) { :disabled }
356
- let(:_grid) do
357
- test_report do
358
- scope {Entry}
359
- filter(:disabled, :xboolean)
360
- end
361
- end
362
- it { should equal_to_dom(
363
- '<select class="disabled extended_boolean_filter" name="report[disabled]" id="report_disabled"><option value=""></option>
364
- <option value="YES">Yes</option>
365
- <option value="NO">No</option></select>'
366
- )}
367
- end
368
- context "with string filter" do
369
- let(:_grid) do
370
- test_report do
371
- scope {Entry}
372
- filter(:name, :string)
373
- end
374
- end
375
-
376
- let(:_filter) { :name }
377
-
378
- it {should equal_to_dom('<input class="name string_filter" type="text" name="report[name]" id="report_name">')}
379
-
380
- context "when multiple option is set" do
381
- let(:_grid) do
382
- test_report(:name => "one,two") do
383
- scope {Entry}
384
- filter(:name, :string, :multiple => true)
385
- end
386
- end
387
-
388
- let(:_filter) { :name }
389
-
390
- it {should equal_to_dom('<input value="one,two" class="name string_filter" type="text" name="report[name]" id="report_name">')}
391
- end
392
- end
393
-
394
- context "with non multiple filter" do
395
- let(:_grid) do
396
- test_report do
397
- scope {Entry}
398
- filter(
399
- :name, :enum,
400
- :include_blank => false,
401
- :multiple => false,
402
- :select => []
403
- )
404
- end
405
- end
406
- let(:_filter) { :name }
407
- it {should equal_to_dom('<select class="name enum_filter" name="report[name]" id="report_name"></select>')}
408
- end
409
- context "with float filter type" do
410
- let(:_grid) {
411
- test_report do
412
- scope {Entry}
413
- filter(:group_id, :float)
414
- end
415
- }
416
- let(:_filter) { :group_id }
417
- it { should equal_to_dom(
418
- '<input class="group_id float_filter" type="text" name="report[group_id]" id="report_group_id"/>'
419
- )}
420
-
421
- end
422
-
423
- context "with enum multiple filter" do
424
- let(:_grid) do
425
- test_report do
426
- scope {Entry}
427
- filter(:group_id, :enum, :select => ['hello'], :multiple => true)
428
- end
429
- end
430
- let(:_filter) { :group_id }
431
- let(:expected_html) do
432
- <<-HTML
433
- <select class="group_id enum_filter" multiple name="report[group_id][]" id="report_group_id">
434
- <option value="hello">hello</option></select>
435
- HTML
436
- end
437
-
438
- it { should equal_to_dom(expected_html) }
439
- end
440
-
441
- context "with column names filter" do
442
- let(:_grid) do
443
- test_report(:column_names => [:id, :name]) do
444
- scope {Entry}
445
-
446
- column_names_filter
447
-
448
- column(:id)
449
- column(:name)
450
- column(:category)
451
- end
452
- end
453
- let(:_filter) { :column_names }
454
- let(:expected_html) do
455
- <<-HTML
456
- <select class="column_names enum_filter" multiple name="report[column_names][]" id="report_column_names"><option selected value="id">Id</option>
457
- <option selected value="name">Name</option>
458
- <option value="category">Category</option></select>
459
- HTML
460
- end
461
-
462
- it { should equal_to_dom(expected_html) }
463
- end
464
- context "with column_names_filter default given as symbols" do
465
- let(:_grid) do
466
- test_report() do
467
- scope {Entry}
468
-
469
- column_names_filter(:default => [:id, :name], :checkboxes => true)
470
-
471
- column(:id)
472
- column(:name)
473
- column(:category)
474
- end
475
- end
476
- let(:_filter) { :column_names }
477
- let(:expected_html) do
478
- <<DOM
479
- <label class="column_names enum_filter checkboxes" for="report_column_names_id"><input id="report_column_names_id" type="checkbox" value="id" checked name="report[column_names][]">Id</label>
480
- <label class="column_names enum_filter checkboxes" for="report_column_names_name"><input id="report_column_names_name" type="checkbox" value="name" checked name="report[column_names][]">Name</label>
481
- <label class="column_names enum_filter checkboxes" for="report_column_names_category"><input id="report_column_names_category" type="checkbox" value="category" name="report[column_names][]">Category</label>
482
- DOM
483
- end
484
-
485
- it do
486
- should equal_to_dom(expected_html)
487
- end
488
- end
489
-
490
- context "with dynamic filter" do
491
- let(:filter_options) do
492
- {}
493
- end
494
-
495
- let(:_grid) do
496
- options = filter_options
497
- test_report do
498
- scope {Entry}
499
- filter(:condition, :dynamic, options)
500
- end
501
- end
502
- let(:_filter) { :condition }
503
- context "with no options" do
504
- let(:expected_html) do
505
- <<-HTML
506
- <select class="condition dynamic_filter field" name="report[condition][]" id="report_condition"><option value="id">Id</option>
507
- <option value="group_id">Group</option>
508
- <option value="name">Name</option>
509
- <option value="category">Category</option>
510
- <option value="access_level">Access level</option>
511
- <option value="pet">Pet</option>
512
- <option value="disabled">Disabled</option>
513
- <option value="confirmed">Confirmed</option>
514
- <option value="shipping_date">Shipping date</option>
515
- <option value="created_at">Created at</option>
516
- <option value="updated_at">Updated at</option></select><select class="condition dynamic_filter operation" name="report[condition][]" id="report_condition"><option value="=">=</option>
517
- <option value="=~">&asymp;</option>
518
- <option value="&gt;=">&ge;</option>
519
- <option value="&lt;=">&le;</option></select><input class="condition dynamic_filter value" name="report[condition][]" type="text" id="report_condition">
520
- HTML
521
- end
522
- it {should equal_to_dom(expected_html)}
523
-
524
- end
525
- context "when default option passed" do
526
- let(:filter_options) do
527
- {:select => [:id, :name], :default => [:id, '>=', 1]}
528
- end
529
- let(:expected_html) do
530
- <<-HTML
531
- <select class="condition dynamic_filter field" name="report[condition][]" id="report_condition"><option selected value="id">id</option>
532
- <option value="name">name</option></select><select class="condition dynamic_filter operation" name="report[condition][]" id="report_condition"><option value="=">=</option>
533
- <option value="=~">&asymp;</option>
534
- <option selected value="&gt;=">&ge;</option>
535
- <option value="&lt;=">&le;</option></select><input class="condition dynamic_filter value" name="report[condition][]" value="1" type="text" id="report_condition">
536
- HTML
537
- end
538
- it {should equal_to_dom(expected_html)}
539
-
540
- end
541
-
542
- context "when operations and options are defined" do
543
- let(:filter_options) do
544
- {:operations => %w(>= <=), :select => [:id, :name]}
545
- end
546
- let(:expected_html) do
547
- <<-HTML
548
- <select class="condition dynamic_filter field" name="report[condition][]" id="report_condition"><option value="id">id</option><option value="name">name</option></select><select class="condition dynamic_filter operation" name="report[condition][]" id="report_condition"><option value="&gt;=">≥</option>
549
- <option value="&lt;=">≤</option></select><input class="condition dynamic_filter value" name="report[condition][]" type="text" id="report_condition">
550
- HTML
551
- end
552
- it {should equal_to_dom(expected_html)}
553
- end
554
-
555
- context "when the field is predefined" do
556
- let(:filter_options) do
557
- {:operations => %w(>= <=), :select => [:id]}
558
- end
559
- let(:expected_html) do
560
- <<-HTML
561
- <input class="condition dynamic_filter field" name="report[condition][]" value="id" type="hidden" id="report_condition"><select class="condition dynamic_filter operation" name="report[condition][]" id="report_condition"><option value="&gt;=">≥</option>
562
- <option value="&lt;=">≤</option></select><input class="condition dynamic_filter value" name="report[condition][]" type="text" id="report_condition">
563
- HTML
564
- end
565
- it {should equal_to_dom(expected_html)}
566
- end
567
- context "when operation is predefined" do
568
- let(:filter_options) do
569
- {:operations => %w(=), :select => [:id, :name]}
570
- end
571
- let(:expected_html) do
572
- <<-HTML
573
- <select class="condition dynamic_filter field" name="report[condition][]" id="report_condition"><option value="id">id</option><option value="name">name</option></select><input class="condition dynamic_filter operation" name="report[condition][]" value="=" type="hidden" id="report_condition"><input class="condition dynamic_filter value" name="report[condition][]" type="text" id="report_condition">
574
- HTML
575
- end
576
- it {should equal_to_dom(expected_html)}
577
- end
578
-
579
- end
580
- end
581
-
582
-
583
- describe ".datagrid_label" do
584
- let(:_grid) do
585
- test_report do
586
- scope {Entry}
587
- filter(:name, :string)
588
- end
589
- end
590
- it "should generate label for filter" do
591
- expect(view.datagrid_label(:name)).to equal_to_dom(
592
- '<label for="report_name">Name</label>'
593
- )
594
- end
595
- it "should pass options through to the helper" do
596
- expect(view.datagrid_label(:name, :class => 'foo')).to equal_to_dom(
597
- '<label class="foo" for="report_name">Name</label>'
598
- )
599
- end
600
- it "should support block" do
601
- expect(view.datagrid_label(:name, :class => 'foo') { 'The Name' }).to equal_to_dom(
602
- '<label class="foo" for="report_name">The Name</label>'
603
- )
604
- end
605
- it "should support explicit label" do
606
- expect(view.datagrid_label(:name, "The Name")).to equal_to_dom(
607
- '<label for="report_name">The Name</label>'
608
- )
609
- end
610
- end
611
- end