active_scaffold 3.5.5 → 3.6.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
- data/{CHANGELOG → CHANGELOG.rdoc} +75 -0
- data/README.md +21 -10
- data/app/assets/javascripts/active_scaffold.js.erb +0 -1
- data/app/assets/javascripts/jquery/active_scaffold.js +98 -7
- data/app/assets/stylesheets/active_scaffold_colors.scss +1 -1
- data/app/assets/stylesheets/active_scaffold_layout.css +52 -29
- data/app/views/active_scaffold_overrides/_base_form.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_form_association.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +3 -2
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +26 -10
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_list.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_list_header.html.erb +5 -7
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_list_record.html.erb +4 -5
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +4 -0
- data/app/views/active_scaffold_overrides/_render_field.js.erb +2 -1
- data/app/views/active_scaffold_overrides/_show_association_horizontal.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_show_horizontal_record.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_update_calculations.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_column.js.erb +2 -2
- data/app/views/active_scaffold_overrides/_vertical_subform.html.erb +2 -2
- data/app/views/active_scaffold_overrides/action_confirmation.html.erb +2 -2
- data/app/views/active_scaffold_overrides/delete.html.erb +2 -2
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +16 -6
- data/app/views/active_scaffold_overrides/on_update.js.erb +1 -1
- data/app/views/active_scaffold_overrides/row.js.erb +1 -1
- data/app/views/active_scaffold_overrides/update_column.js.erb +2 -2
- data/config/locales/de.yml +2 -1
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/hu.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/lib/active_scaffold.rb +19 -16
- data/lib/active_scaffold/actions/common_search.rb +11 -8
- data/lib/active_scaffold/actions/core.rb +91 -70
- data/lib/active_scaffold/actions/create.rb +28 -28
- data/lib/active_scaffold/actions/delete.rb +3 -3
- data/lib/active_scaffold/actions/field_search.rb +53 -43
- data/lib/active_scaffold/actions/list.rb +111 -27
- data/lib/active_scaffold/actions/nested.rb +65 -48
- data/lib/active_scaffold/actions/search.rb +1 -1
- data/lib/active_scaffold/actions/show.rb +4 -4
- data/lib/active_scaffold/actions/subform.rb +23 -22
- data/lib/active_scaffold/actions/update.rb +96 -77
- data/lib/active_scaffold/active_record_permissions.rb +2 -11
- data/lib/active_scaffold/attribute_params.rb +102 -94
- data/lib/active_scaffold/bridges.rb +8 -8
- data/lib/active_scaffold/bridges/active_storage.rb +6 -0
- data/lib/active_scaffold/bridges/active_storage/active_storage_bridge.rb +34 -0
- data/lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb +54 -0
- data/lib/active_scaffold/bridges/active_storage/form_ui.rb +22 -0
- data/lib/active_scaffold/bridges/active_storage/list_ui.rb +36 -0
- data/lib/active_scaffold/bridges/bitfields.rb +2 -1
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +12 -15
- data/lib/active_scaffold/bridges/bitfields/list_ui.rb +19 -0
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +3 -12
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +2 -2
- data/lib/active_scaffold/bridges/chosen/helpers.rb +7 -6
- data/lib/active_scaffold/bridges/date_picker/ext.rb +0 -13
- data/lib/active_scaffold/bridges/date_picker/helper.rb +49 -44
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +10 -7
- data/lib/active_scaffold/bridges/paper_trail.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +3 -1
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +2 -2
- data/lib/active_scaffold/bridges/record_select/helpers.rb +15 -17
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +20 -19
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -1
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +21 -4
- data/lib/active_scaffold/config/base.rb +133 -41
- data/lib/active_scaffold/config/core.rb +146 -18
- data/lib/active_scaffold/config/delete.rb +14 -1
- data/lib/active_scaffold/config/field_search.rb +7 -1
- data/lib/active_scaffold/config/form.rb +10 -1
- data/lib/active_scaffold/config/list.rb +39 -13
- data/lib/active_scaffold/config/mark.rb +4 -2
- data/lib/active_scaffold/config/nested.rb +16 -17
- data/lib/active_scaffold/config/search.rb +9 -0
- data/lib/active_scaffold/config/show.rb +4 -0
- data/lib/active_scaffold/config/update.rb +4 -0
- data/lib/active_scaffold/configurable.rb +14 -7
- data/lib/active_scaffold/constraints.rb +22 -20
- data/lib/active_scaffold/core.rb +67 -28
- data/lib/active_scaffold/data_structures/action_columns.rb +50 -59
- data/lib/active_scaffold/data_structures/action_link.rb +50 -20
- data/lib/active_scaffold/data_structures/action_links.rb +15 -13
- data/lib/active_scaffold/data_structures/association/abstract.rb +38 -15
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +2 -6
- data/lib/active_scaffold/data_structures/association/active_record.rb +6 -2
- data/lib/active_scaffold/data_structures/association/mongoid.rb +0 -3
- data/lib/active_scaffold/data_structures/column.rb +75 -66
- data/lib/active_scaffold/data_structures/columns.rb +3 -2
- data/lib/active_scaffold/data_structures/nested_info.rb +33 -19
- data/lib/active_scaffold/data_structures/set.rb +8 -0
- data/lib/active_scaffold/data_structures/sorting.rb +10 -2
- data/lib/active_scaffold/delayed_setup.rb +16 -5
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +3 -2
- data/lib/active_scaffold/extensions/action_view_rendering.rb +93 -32
- data/lib/active_scaffold/extensions/cow_proxy.rb +95 -0
- data/lib/active_scaffold/extensions/ice_nine.rb +36 -0
- data/lib/active_scaffold/extensions/left_outer_joins.rb +8 -33
- data/lib/active_scaffold/extensions/localize.rb +3 -1
- data/lib/active_scaffold/extensions/routing_mapper.rb +6 -45
- data/lib/active_scaffold/extensions/to_label.rb +3 -2
- data/lib/active_scaffold/extensions/unsaved_record.rb +2 -4
- data/lib/active_scaffold/finder.rb +110 -77
- data/lib/active_scaffold/helpers/action_link_helpers.rb +62 -36
- data/lib/active_scaffold/helpers/association_helpers.rb +18 -16
- data/lib/active_scaffold/helpers/controller_helpers.rb +34 -10
- data/lib/active_scaffold/helpers/form_column_helpers.rb +196 -124
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/id_helpers.rb +6 -2
- data/lib/active_scaffold/helpers/list_column_helpers.rb +90 -57
- data/lib/active_scaffold/helpers/pagination_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/search_column_helpers.rb +43 -41
- data/lib/active_scaffold/helpers/show_column_helpers.rb +3 -5
- data/lib/active_scaffold/helpers/view_helpers.rb +39 -36
- data/lib/active_scaffold/marked_model.rb +2 -2
- data/lib/active_scaffold/orm_checks.rb +3 -7
- data/lib/active_scaffold/paginator.rb +7 -7
- data/lib/active_scaffold/registry.rb +33 -0
- data/lib/active_scaffold/responds_to_parent.rb +8 -11
- data/lib/active_scaffold/tableless.rb +83 -67
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/generators/active_scaffold/controller_generator.rb +2 -2
- data/lib/generators/active_scaffold/install_generator.rb +52 -4
- data/lib/generators/active_scaffold/resource_generator.rb +2 -2
- data/shoulda_macros/macros.rb +3 -1
- data/test/bridges/date_picker_test.rb +1 -2
- data/test/bridges/paperclip_test.rb +6 -6
- data/test/class_with_finder.rb +2 -2
- data/test/company.rb +4 -4
- data/test/config/create_test.rb +4 -2
- data/test/config/nested_test.rb +1 -1
- data/test/config/show_test.rb +1 -1
- data/test/config/update_test.rb +7 -6
- data/test/data_structures/action_columns_test.rb +2 -2
- data/test/data_structures/action_links_test.rb +1 -1
- data/test/data_structures/column_test.rb +3 -6
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/sorting_test.rb +7 -0
- data/test/extensions/action_view_rendering_test.rb +20 -0
- data/test/extensions/active_record_test.rb +4 -4
- data/test/extensions/routing_mapper_test.rb +2 -2
- data/test/helpers/list_column_helpers_test.rb +3 -1
- data/test/misc/active_record_permissions_test.rb +3 -11
- data/test/misc/attribute_params_test.rb +12 -8
- data/test/misc/calculation_test.rb +1 -1
- data/test/misc/configurable_test.rb +10 -10
- data/test/misc/constraints_test.rb +3 -3
- data/test/misc/convert_numbers_format_test.rb +7 -3
- data/test/misc/lang_test.rb +1 -1
- data/test/misc/parse_datetime_test.rb +3 -4
- data/test/misc/tableless_test.rb +14 -0
- data/test/mock_app/Rakefile +1 -1
- data/test/mock_app/app/assets/config/manifest.js +0 -0
- data/test/mock_app/app/controllers/cars_controller.rb +1 -0
- data/test/mock_app/app/controllers/people_controller.rb +5 -1
- data/test/mock_app/app/controllers/roles_controller.rb +4 -0
- data/test/mock_app/app/views/active_scaffold_overrides/_form.html.erb +2 -0
- data/test/mock_app/app/views/active_scaffold_overrides/list.html.erb +2 -0
- data/test/mock_app/app/views/people/_first_name_form_column.html.erb +2 -0
- data/test/mock_app/app/views/people/_form.html.erb +2 -0
- data/test/mock_app/app/views/people/list.html.erb +2 -0
- data/test/mock_app/config/application.rb +2 -1
- data/test/mock_app/config/boot.rb +1 -1
- data/test/mock_app/config/environment.rb +2 -2
- data/test/mock_app/config/routes.rb +4 -1
- data/test/mock_app/db/schema.rb +2 -0
- data/test/performance/list_cars_performance_test.rb +34 -0
- data/test/performance/list_people_performance_test.rb +31 -0
- data/test/performance_test_help.rb +3 -0
- data/test/test_helper.rb +12 -4
- metadata +71 -15
- data/app/assets/javascripts/prototype/rico_corner.js +0 -370
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +0 -7
@@ -54,8 +54,8 @@ class RoutingMapperTest < ActionController::TestCase
|
|
54
54
|
assert_routing 'cars/1/edit', controller: 'cars', action: 'edit', id: '1'
|
55
55
|
assert_routing({method: :patch, path: 'cars/1'}, {controller: 'cars', action: 'update', id: '1'})
|
56
56
|
|
57
|
-
assert_raises(ActionController::RoutingError) { @routes.recognize_path '/cars' }
|
58
|
-
assert_raises(ActionController::RoutingError) { @routes.recognize_path '/cars/1
|
57
|
+
assert_raises(ActionController::RoutingError) { @routes.recognize_path '/cars', method: :post }
|
58
|
+
assert_raises(ActionController::RoutingError) { @routes.recognize_path '/cars/1' }
|
59
59
|
assert_raises(ActionController::RoutingError) { @routes.recognize_path '/cars/1/destroy', method: :delete }
|
60
60
|
end
|
61
61
|
|
@@ -34,8 +34,10 @@ class ListColumnHelpersTest < ActionView::TestCase
|
|
34
34
|
value.each { |v| v.stubs(:to_label).returns(v) }
|
35
35
|
assert_equal '1, 2, 3, … (4)', format_association_value(value, @association_column, value.size)
|
36
36
|
@config.list.stubs(:association_join_text => ',<br/>')
|
37
|
+
remove_instance_variable :@_association_join_text
|
37
38
|
assert_equal '1,<br/>2,<br/>3,<br/>… (4)', format_association_value(value, @association_column, value.size)
|
38
|
-
@config.list.stubs(:association_join_text => ',<br/>'.html_safe)
|
39
|
+
@config.list.stubs(:association_join_text => ',<br/>'.html_safe) # rubocop:disable Rails/OutputSafety
|
40
|
+
remove_instance_variable :@_association_join_text
|
39
41
|
assert_equal '1,<br/>2,<br/>3,<br/>… (4)', format_association_value(value, @association_column, value.size)
|
40
42
|
end
|
41
43
|
|
@@ -91,7 +91,7 @@ class ActiveRecordPermissionsTest < MiniTest::Test
|
|
91
91
|
# symbols are: is (a)bsent, returns (f)alse, returns (t)rue, or n/a (_)
|
92
92
|
def test_method_combinations_with_default_true
|
93
93
|
old_permission = nil
|
94
|
-
ActiveScaffold.
|
94
|
+
ActiveScaffold.defaults do |config|
|
95
95
|
old_permission = config.security.default_permission
|
96
96
|
config.security.default_permission = true
|
97
97
|
end
|
@@ -134,17 +134,13 @@ class ActiveRecordPermissionsTest < MiniTest::Test
|
|
134
134
|
miss(@model.authorized_for?(:crud_type => :read, :column => :b1), 'ttf')
|
135
135
|
pass(@model.authorized_for?(:crud_type => :read, :column => :a1), 'ttt')
|
136
136
|
|
137
|
-
ActiveScaffold.
|
137
|
+
ActiveScaffold.defaults do |config|
|
138
138
|
config.security.default_permission = old_permission
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
142
|
def test_method_combinations_with_default_false
|
143
|
-
|
144
|
-
ActiveScaffold.set_defaults do |config|
|
145
|
-
old_permission = config.security.default_permission
|
146
|
-
config.security.default_permission = false
|
147
|
-
end
|
143
|
+
ActiveScaffold::Config::Core.security.stubs(default_permission: false)
|
148
144
|
|
149
145
|
miss(@model.authorized_for?(:column => :a3), '_a_')
|
150
146
|
miss(@model.authorized_for?(:column => :a2), '_f_')
|
@@ -183,10 +179,6 @@ class ActiveRecordPermissionsTest < MiniTest::Test
|
|
183
179
|
pass(@model.authorized_for?(:crud_type => :read, :column => :c1), 'tta')
|
184
180
|
miss(@model.authorized_for?(:crud_type => :read, :column => :b1), 'ttf')
|
185
181
|
pass(@model.authorized_for?(:crud_type => :read, :column => :a1), 'ttt')
|
186
|
-
|
187
|
-
ActiveScaffold.set_defaults do |config|
|
188
|
-
config.security.default_permission = old_permission
|
189
|
-
end
|
190
182
|
end
|
191
183
|
|
192
184
|
private
|
@@ -46,6 +46,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
46
46
|
assert_nil model.last_name
|
47
47
|
assert_equal buildings.map(&:id), model.building_ids
|
48
48
|
assert_equal buildings.map(&:id), model.buildings.map(&:id)
|
49
|
+
assert_equal model, model.buildings[0].owner
|
49
50
|
assert model.save
|
50
51
|
assert_equal 2, model.reload.buildings_count
|
51
52
|
|
@@ -134,6 +135,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
134
135
|
assert_equal 'Name', model.first_name
|
135
136
|
assert model.floor.present?
|
136
137
|
assert_equal floor.id, model.floor.id
|
138
|
+
assert_equal model, model.floor.tenant
|
137
139
|
assert_nil floor.reload.tenant_id, 'tenant_id should not be saved yet'
|
138
140
|
assert model.save
|
139
141
|
assert_equal model.id, floor.reload.tenant_id, 'tenant_id should be saved'
|
@@ -224,6 +226,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
224
226
|
assert_equal 3, model.floors.size
|
225
227
|
assert_equal floor.id, model.floors.first.id
|
226
228
|
assert_equal [nil, *people.map(&:id)], model.floors.map(&:tenant_id)
|
229
|
+
assert_equal model, model.floors[0].building
|
227
230
|
assert model.save
|
228
231
|
assert_equal [1, 1], people.map(&:reload).map(&:floors_count)
|
229
232
|
assert_equal 3, model.reload.floors_count
|
@@ -299,6 +302,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
299
302
|
assert_equal 'First', model.first_name
|
300
303
|
assert model.car.present?
|
301
304
|
assert model.car.new_record?
|
305
|
+
assert_equal model, model.car.person
|
302
306
|
assert model.save
|
303
307
|
assert model.car.persisted?
|
304
308
|
|
@@ -417,15 +421,15 @@ class AttributeParamsTest < MiniTest::Test
|
|
417
421
|
record = record.class.find(record.id) if record.persisted?
|
418
422
|
new_record = @controller.update_record_from_params(record, build_action_columns(record, action, columns), params)
|
419
423
|
yield if block_given?
|
420
|
-
|
424
|
+
ActiveScaffold::Registry.constraint_columns.clear
|
421
425
|
end
|
422
426
|
new_record
|
423
427
|
end
|
424
428
|
|
425
429
|
def build_action_columns(record, action, *columns)
|
426
|
-
|
427
|
-
|
428
|
-
|
430
|
+
config = @controller.active_scaffold_config_for record.class
|
431
|
+
config.send(action).columns = columns
|
432
|
+
config.send(action).columns
|
429
433
|
end
|
430
434
|
end
|
431
435
|
|
@@ -447,11 +451,11 @@ class Controller
|
|
447
451
|
@flash ||= ActionDispatch::Flash::FlashHash.new
|
448
452
|
end
|
449
453
|
|
450
|
-
def params_hash?(
|
451
|
-
|
454
|
+
def params_hash?(value)
|
455
|
+
value.is_a? Hash
|
452
456
|
end
|
453
457
|
|
454
|
-
def params_hash(
|
455
|
-
|
458
|
+
def params_hash(value)
|
459
|
+
value
|
456
460
|
end
|
457
461
|
end
|
@@ -4,7 +4,7 @@ require 'class_with_finder'
|
|
4
4
|
class CalculationTest < MiniTest::Test
|
5
5
|
def setup
|
6
6
|
@buildings = []
|
7
|
-
@buildings << Building.create { |b| b.
|
7
|
+
@buildings << Building.create { |b| b.build_owner(:first_name => 'foo') }
|
8
8
|
@buildings << Building.create(:name => 'foo bar')
|
9
9
|
@buildings << Building.create
|
10
10
|
|
@@ -41,17 +41,17 @@ class ConfigurableTest < MiniTest::Test
|
|
41
41
|
## test normal block behaviors
|
42
42
|
##
|
43
43
|
# functions
|
44
|
-
assert_equal hello, configurable_class.configure { hello }
|
44
|
+
assert_equal hello, (configurable_class.configure { hello })
|
45
45
|
# variables
|
46
|
-
assert_equal configurable_class, configurable_class.configure { configurable_class }
|
46
|
+
assert_equal configurable_class, (configurable_class.configure { configurable_class })
|
47
47
|
# constants
|
48
|
-
assert_equal ConfigurableTest::HELLO, configurable_class.configure { ConfigurableTest::HELLO }
|
48
|
+
assert_equal ConfigurableTest::HELLO, (configurable_class.configure { ConfigurableTest::HELLO })
|
49
49
|
|
50
50
|
##
|
51
51
|
## test extra "localized" block behavior
|
52
52
|
##
|
53
53
|
# functions
|
54
|
-
assert_equal configurable_class.foo, configurable_class.configure { foo }
|
54
|
+
assert_equal configurable_class.foo, (configurable_class.configure { foo })
|
55
55
|
# constants - not working
|
56
56
|
# assert_equal configurable_class.FOO, configurable_class.configure {FOO}
|
57
57
|
end
|
@@ -73,25 +73,25 @@ class ConfigurableTest < MiniTest::Test
|
|
73
73
|
## test normal block behaviors
|
74
74
|
##
|
75
75
|
# functions
|
76
|
-
assert_equal hello, ExtendedClass.configure { hello }
|
76
|
+
assert_equal hello, (ExtendedClass.configure { hello })
|
77
77
|
# variables
|
78
|
-
assert_equal ExtendedClass, ExtendedClass.configure { ExtendedClass }
|
78
|
+
assert_equal ExtendedClass, (ExtendedClass.configure { ExtendedClass })
|
79
79
|
# constants
|
80
|
-
assert_equal ConfigurableTest::HELLO, ExtendedClass.configure { ConfigurableTest::HELLO }
|
80
|
+
assert_equal ConfigurableTest::HELLO, (ExtendedClass.configure { ConfigurableTest::HELLO })
|
81
81
|
|
82
82
|
##
|
83
83
|
## test extra "localized" block behavior
|
84
84
|
##
|
85
85
|
# functions
|
86
|
-
assert_equal ExtendedClass.foo, ExtendedClass.configure { foo }
|
86
|
+
assert_equal ExtendedClass.foo, (ExtendedClass.configure { foo })
|
87
87
|
# constants - not working
|
88
88
|
# assert_equal ExtendedClass.FOO, ExtendedClass.configure {FOO}
|
89
89
|
end
|
90
90
|
|
91
91
|
def test_arity
|
92
92
|
# this is the main style
|
93
|
-
assert_equal 'foo', ExtendedClass.configure { 'foo' }
|
93
|
+
assert_equal 'foo', (ExtendedClass.configure { 'foo' })
|
94
94
|
# but we want to let people accept the configurable class as the first argument, too
|
95
|
-
assert_equal 'bar', ExtendedClass.configure { |a| a.foo } # rubocop:disable Style/SymbolProc
|
95
|
+
assert_equal 'bar', (ExtendedClass.configure { |a| a.foo }) # rubocop:disable Style/SymbolProc
|
96
96
|
end
|
97
97
|
end
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
module ModelStubs
|
4
4
|
class ModelStub < ActiveRecord::Base
|
5
5
|
self.abstract_class = true
|
6
|
-
def self.columns; @columns ||= [ColumnMock.new('foo', '')] end
|
6
|
+
def self.columns; @columns ||= [ColumnMock.new('foo', '', 'string')] end
|
7
7
|
|
8
8
|
def self.columns_hash; @hash ||= Hash[@columns.map { |c| [c.name, c] }] end
|
9
9
|
|
@@ -116,8 +116,8 @@ class ConstraintsTestObject
|
|
116
116
|
@params = {}
|
117
117
|
end
|
118
118
|
|
119
|
-
def params_hash?(
|
120
|
-
|
119
|
+
def params_hash?(value)
|
120
|
+
value.is_a? Hash
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -26,6 +26,7 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
26
26
|
include ActiveScaffoldConfigMock
|
27
27
|
include ActiveScaffold::AttributeParams
|
28
28
|
include ActiveScaffold::Finder
|
29
|
+
include ActiveScaffold::Helpers::ControllerHelpers
|
29
30
|
|
30
31
|
def setup
|
31
32
|
NumberModel.load_schema! if Rails.version >= '5.0'
|
@@ -46,7 +47,6 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
46
47
|
|
47
48
|
@config = config_for('number_model')
|
48
49
|
@config.columns[:number].form_ui = nil
|
49
|
-
@config.create.columns.set_columns @config.columns
|
50
50
|
end
|
51
51
|
|
52
52
|
def teardown
|
@@ -161,7 +161,11 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
161
161
|
record.number
|
162
162
|
end
|
163
163
|
|
164
|
-
def params_hash?(
|
165
|
-
|
164
|
+
def params_hash?(value)
|
165
|
+
value.is_a? Hash
|
166
|
+
end
|
167
|
+
|
168
|
+
def params_hash(value)
|
169
|
+
value
|
166
170
|
end
|
167
171
|
end
|
data/test/misc/lang_test.rb
CHANGED
@@ -4,7 +4,7 @@ class LocalizationTest < MiniTest::Test
|
|
4
4
|
def test_localization
|
5
5
|
assert_equal 'Dutch', as_(:dutch)
|
6
6
|
assert_equal 'dutch', as_('dutch')
|
7
|
-
I18n.backend.store_translations :en, :active_scaffold => {:create_model => 'Create
|
7
|
+
I18n.backend.store_translations :en, :active_scaffold => {:create_model => 'Create %<model>s'}
|
8
8
|
assert_equal 'Create Test', as_(:create_model, :model => 'Test')
|
9
9
|
end
|
10
10
|
end
|
@@ -44,7 +44,6 @@ class ParseDatetimeTest < MiniTest::Test
|
|
44
44
|
I18n.backend.store_translations :es, spanish
|
45
45
|
|
46
46
|
@config = config_for('date_time_model')
|
47
|
-
@config.create.columns.set_columns @config.columns
|
48
47
|
end
|
49
48
|
|
50
49
|
def teardown
|
@@ -125,7 +124,7 @@ class ParseDatetimeTest < MiniTest::Test
|
|
125
124
|
end
|
126
125
|
|
127
126
|
def test_condition_for_datetime_with_zone
|
128
|
-
assert_equal
|
127
|
+
assert_equal ActiveSupport::TimeZone[3].local(2017, 4, 8, 16, 30, 0), condition_value('2017-04-08 16:30 +0300')
|
129
128
|
end
|
130
129
|
|
131
130
|
def test_condition_for_spanish_date
|
@@ -154,7 +153,7 @@ class ParseDatetimeTest < MiniTest::Test
|
|
154
153
|
self.class.condition_value_for_datetime(@config.columns[:run_at], value, conversion || :to_time)
|
155
154
|
end
|
156
155
|
|
157
|
-
def params_hash?(
|
158
|
-
|
156
|
+
def params_hash?(value)
|
157
|
+
value.is_a? Hash
|
159
158
|
end
|
160
159
|
end
|
data/test/misc/tableless_test.rb
CHANGED
@@ -25,10 +25,24 @@ class TablelessTest < MiniTest::Test
|
|
25
25
|
|
26
26
|
def test_find_with_association
|
27
27
|
assert Person.new.files.empty?
|
28
|
+
@person = Person.new
|
29
|
+
@person.save(validate: false)
|
30
|
+
assert @person.files.empty?
|
31
|
+
assert_equal [], @person.files.to_a
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_tableless_assoc_with_dependent
|
35
|
+
@person = Person.new
|
36
|
+
@person.save(validate: false)
|
37
|
+
assert @person.destroy
|
28
38
|
end
|
29
39
|
|
30
40
|
def test_find_with_through_association
|
31
41
|
assert Building.new.files.empty?
|
42
|
+
@building = Building.new
|
43
|
+
@building.save(validate: false)
|
44
|
+
assert @building.files.empty?
|
45
|
+
assert_equal [], @building.files.to_a
|
32
46
|
end
|
33
47
|
|
34
48
|
def test_new
|
data/test/mock_app/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
2
|
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
3
|
|
4
|
-
require File.expand_path('
|
4
|
+
require File.expand_path('config/application', __dir__)
|
5
5
|
require 'rake'
|
6
6
|
|
7
7
|
RailsApp::Application.load_tasks
|
File without changes
|
@@ -1,4 +1,8 @@
|
|
1
1
|
class PeopleController < ApplicationController
|
2
|
-
active_scaffold do
|
2
|
+
active_scaffold do |conf|
|
3
|
+
conf.columns.exclude :files
|
4
|
+
conf.columns[:buildings].includes = nil
|
5
|
+
conf.columns[:buildings].associated_limit = 0
|
6
|
+
conf.create.columns.exclude :address
|
3
7
|
end
|
4
8
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('boot', __dir__)
|
2
2
|
|
3
3
|
require 'rails/all'
|
4
4
|
require 'rails/test_unit/railtie'
|
@@ -9,5 +9,6 @@ module RailsApp
|
|
9
9
|
config.filter_parameters << :password
|
10
10
|
config.action_mailer.default_url_options = {:host => 'localhost:3000'}
|
11
11
|
config.i18n.enforce_available_locales = false if config.i18n.respond_to? :enforce_available_locales
|
12
|
+
config.active_record.sqlite3.represent_boolean_as_integer = true if config.active_record.sqlite3.respond_to? :represent_boolean_as_integer
|
12
13
|
end
|
13
14
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Load the rails application
|
2
|
-
require File.expand_path('
|
2
|
+
require File.expand_path('application', __dir__)
|
3
3
|
|
4
4
|
# Initialize the rails application
|
5
|
-
RailsApp::Application.config.root = File.expand_path('
|
5
|
+
RailsApp::Application.config.root = File.expand_path('..', __dir__)
|
6
6
|
RailsApp::Application.initialize!
|
@@ -6,9 +6,12 @@ Rails.application.routes.draw do
|
|
6
6
|
resources :buildings, except: :index do
|
7
7
|
concerns :active_scaffold, except: %i[mark add_existing new_existing destroy_existing]
|
8
8
|
end
|
9
|
-
resources :cars, only: %i[edit update] do
|
9
|
+
resources :cars, only: %i[index edit update] do
|
10
10
|
concerns :active_scaffold, association: false, except: [:mark]
|
11
11
|
end
|
12
|
+
resources :people do
|
13
|
+
concerns :active_scaffold, except: %i[mark]
|
14
|
+
end
|
12
15
|
|
13
16
|
match ':controller(/:action(/:id))', :via => :any
|
14
17
|
end
|
data/test/mock_app/db/schema.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'performance_test_help'
|
3
|
+
|
4
|
+
class ListCarsPerformanceTest < ActionDispatch::PerformanceTest
|
5
|
+
self.profile_options =
|
6
|
+
if ENV['BENCHMARK_TESTS']
|
7
|
+
{metrics: [:wall_time]}
|
8
|
+
else
|
9
|
+
{metrics: %i[process_time], formats: %i[flat graph_html call_stack]}
|
10
|
+
end
|
11
|
+
def setup
|
12
|
+
owners = Array.new(4) { |i| Person.create first_name: "Name#{i}" } << nil
|
13
|
+
500.times { |i| Car.create(brand: 'Skoda', model: 'Fabia', person: owners[i % 5]) }
|
14
|
+
CarsController.class_eval do
|
15
|
+
before_action :setup
|
16
|
+
|
17
|
+
def setup
|
18
|
+
active_scaffold_config.list.pagination = false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_list
|
24
|
+
get '/cars'
|
25
|
+
end
|
26
|
+
|
27
|
+
# def test_list2
|
28
|
+
# get '/cars?t=2'
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# def test_list3
|
32
|
+
# get '/cars?t=3'
|
33
|
+
# end
|
34
|
+
end
|