active_scaffold 3.4.17 → 3.4.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +12 -1
- data/README.md +8 -4
- data/app/assets/javascripts/jquery/active_scaffold.js +82 -67
- data/app/assets/stylesheets/active_scaffold.scss +1 -1
- data/app/assets/stylesheets/active_scaffold_colors.scss +1 -1
- data/app/assets/stylesheets/blue-theme.css +1 -1
- data/app/views/active_scaffold_overrides/_form_association.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +1 -1
- data/lib/active_scaffold.rb +16 -16
- data/lib/active_scaffold/actions/common_search.rb +13 -11
- data/lib/active_scaffold/actions/core.rb +85 -78
- data/lib/active_scaffold/actions/create.rb +29 -28
- data/lib/active_scaffold/actions/delete.rb +17 -17
- data/lib/active_scaffold/actions/field_search.rb +18 -19
- data/lib/active_scaffold/actions/list.rb +30 -22
- data/lib/active_scaffold/actions/mark.rb +1 -1
- data/lib/active_scaffold/actions/nested.rb +78 -65
- data/lib/active_scaffold/actions/search.rb +13 -10
- data/lib/active_scaffold/actions/show.rb +10 -6
- data/lib/active_scaffold/actions/subform.rb +1 -2
- data/lib/active_scaffold/actions/update.rb +39 -31
- data/lib/active_scaffold/active_record_permissions.rb +14 -15
- data/lib/active_scaffold/attribute_params.rb +42 -43
- data/lib/active_scaffold/bridges.rb +22 -12
- data/lib/active_scaffold/bridges/ancestry.rb +1 -1
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +6 -6
- data/lib/active_scaffold/bridges/bitfields.rb +1 -1
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +12 -13
- data/lib/active_scaffold/bridges/calendar_date_select.rb +5 -5
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +17 -20
- data/lib/active_scaffold/bridges/cancan.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +8 -9
- data/lib/active_scaffold/bridges/carrierwave.rb +4 -4
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +11 -10
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +7 -6
- data/lib/active_scaffold/bridges/chosen.rb +1 -1
- data/lib/active_scaffold/bridges/chosen/helpers.rb +4 -4
- data/lib/active_scaffold/bridges/country_helper.rb +1 -1
- data/lib/active_scaffold/bridges/country_helper/country_helper_bridge.rb +259 -260
- data/lib/active_scaffold/bridges/date_picker.rb +2 -2
- data/lib/active_scaffold/bridges/date_picker/ext.rb +9 -11
- data/lib/active_scaffold/bridges/date_picker/helper.rb +61 -67
- data/lib/active_scaffold/bridges/dragonfly.rb +4 -4
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +11 -10
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +6 -5
- data/lib/active_scaffold/bridges/file_column.rb +5 -5
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +20 -23
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +20 -23
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +13 -14
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +7 -8
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +18 -22
- data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +5 -4
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +2 -10
- data/lib/active_scaffold/bridges/paper_trail.rb +7 -5
- data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +4 -3
- data/lib/active_scaffold/bridges/paperclip.rb +5 -5
- data/lib/active_scaffold/bridges/paperclip/form_ui.rb +11 -10
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +6 -5
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +10 -9
- data/lib/active_scaffold/bridges/record_select.rb +1 -1
- data/lib/active_scaffold/bridges/record_select/helpers.rb +28 -28
- data/lib/active_scaffold/bridges/semantic_attributes.rb +1 -1
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +1 -1
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +58 -52
- data/lib/active_scaffold/bridges/tiny_mce.rb +2 -2
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -3
- data/lib/active_scaffold/config/base.rb +9 -10
- data/lib/active_scaffold/config/core.rb +24 -29
- data/lib/active_scaffold/config/create.rb +0 -1
- data/lib/active_scaffold/config/field_search.rb +8 -10
- data/lib/active_scaffold/config/form.rb +5 -5
- data/lib/active_scaffold/config/list.rb +21 -20
- data/lib/active_scaffold/config/mark.rb +3 -3
- data/lib/active_scaffold/config/nested.rb +11 -10
- data/lib/active_scaffold/config/search.rb +2 -3
- data/lib/active_scaffold/config/show.rb +1 -1
- data/lib/active_scaffold/config/update.rb +1 -2
- data/lib/active_scaffold/configurable.rb +9 -11
- data/lib/active_scaffold/constraints.rb +9 -8
- data/lib/active_scaffold/core.rb +72 -84
- data/lib/active_scaffold/data_structures/action_columns.rb +26 -25
- data/lib/active_scaffold/data_structures/action_link.rb +43 -43
- data/lib/active_scaffold/data_structures/action_links.rb +17 -15
- data/lib/active_scaffold/data_structures/actions.rb +5 -5
- data/lib/active_scaffold/data_structures/bridge.rb +6 -3
- data/lib/active_scaffold/data_structures/column.rb +110 -89
- data/lib/active_scaffold/data_structures/columns.rb +3 -3
- data/lib/active_scaffold/data_structures/error_message.rb +4 -6
- data/lib/active_scaffold/data_structures/nested_info.rb +43 -48
- data/lib/active_scaffold/data_structures/set.rb +7 -8
- data/lib/active_scaffold/data_structures/sorting.rb +38 -33
- data/lib/active_scaffold/delayed_setup.rb +5 -6
- data/lib/active_scaffold/engine.rb +4 -4
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +3 -4
- data/lib/active_scaffold/extensions/action_controller_rescueing.rb +1 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +5 -6
- data/lib/active_scaffold/extensions/left_outer_joins.rb +11 -11
- data/lib/active_scaffold/extensions/localize.rb +1 -1
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +1 -1
- data/lib/active_scaffold/extensions/paginator_extensions.rb +2 -5
- data/lib/active_scaffold/extensions/reverse_associations.rb +13 -13
- data/lib/active_scaffold/extensions/routing_mapper.rb +9 -9
- data/lib/active_scaffold/extensions/unsaved_associated.rb +9 -9
- data/lib/active_scaffold/finder.rb +90 -93
- data/lib/active_scaffold/helpers/association_helpers.rb +5 -5
- data/lib/active_scaffold/helpers/controller_helpers.rb +22 -19
- data/lib/active_scaffold/helpers/form_column_helpers.rb +115 -105
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +62 -35
- data/lib/active_scaffold/helpers/id_helpers.rb +6 -6
- data/lib/active_scaffold/helpers/list_column_helpers.rb +89 -94
- data/lib/active_scaffold/helpers/pagination_helpers.rb +9 -9
- data/lib/active_scaffold/helpers/search_column_helpers.rb +47 -44
- data/lib/active_scaffold/helpers/show_column_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/view_helpers.rb +86 -91
- data/lib/active_scaffold/marked_model.rb +10 -10
- data/lib/active_scaffold/paginator.rb +30 -34
- data/lib/active_scaffold/responds_to_parent.rb +27 -28
- data/lib/active_scaffold/tableless.rb +20 -15
- data/lib/active_scaffold/version.rb +1 -1
- data/lib/generators/active_scaffold/active_scaffold_generator.rb +8 -8
- data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +9 -9
- data/shoulda_macros/macros.rb +27 -22
- data/test/bridges/bridge_test.rb +38 -29
- data/test/bridges/date_picker_test.rb +1 -1
- data/test/bridges/paper_trail_test.rb +17 -0
- data/test/bridges/paperclip_test.rb +3 -2
- data/test/bridges/tiny_mce_test.rb +5 -2
- data/test/company.rb +25 -30
- data/test/config/base_test.rb +1 -1
- data/test/config/core_test.rb +9 -9
- data/test/config/create_test.rb +14 -8
- data/test/config/delete_test.rb +4 -4
- data/test/config/field_search_test.rb +6 -6
- data/test/config/list_test.rb +16 -16
- data/test/config/nested_test.rb +4 -4
- data/test/config/search_test.rb +8 -8
- data/test/config/show_test.rb +6 -6
- data/test/config/subform_test.rb +1 -1
- data/test/config/update_test.rb +5 -5
- data/test/const_mocker.rb +4 -4
- data/test/data_structures/action_columns_test.rb +4 -5
- data/test/data_structures/action_link_test.rb +1 -0
- data/test/data_structures/action_links_test.rb +5 -5
- data/test/data_structures/column_test.rb +9 -9
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/error_message_test.rb +4 -5
- data/test/data_structures/set_test.rb +1 -2
- data/test/data_structures/sorting_test.rb +10 -10
- data/test/data_structures/validation_reflection_test.rb +8 -0
- data/test/extensions/routing_mapper_test.rb +2 -2
- data/test/helpers/list_column_helpers_test.rb +3 -2
- data/test/helpers/pagination_helpers_test.rb +5 -4
- data/test/helpers/search_column_helpers_test.rb +1 -1
- data/test/misc/active_record_permissions_test.rb +63 -50
- data/test/misc/attribute_params_test.rb +28 -26
- data/test/misc/calculation_test.rb +10 -3
- data/test/misc/configurable_test.rb +12 -13
- data/test/misc/constraints_test.rb +6 -6
- data/test/misc/convert_numbers_format_test.rb +7 -6
- data/test/misc/finder_test.rb +17 -12
- data/test/misc/lang_test.rb +3 -4
- data/test/misc/tableless_test.rb +2 -3
- data/test/mock_app/app/controllers/addresses_controller.rb +1 -1
- data/test/mock_app/app/controllers/buildings_controller.rb +1 -1
- data/test/mock_app/app/controllers/cars_controller.rb +1 -1
- data/test/mock_app/app/controllers/contacts_controller.rb +1 -1
- data/test/mock_app/app/controllers/people_controller.rb +1 -1
- data/test/mock_app/app/models/file_model.rb +2 -2
- data/test/mock_app/app/models/person.rb +1 -1
- data/test/mock_app/config/application.rb +3 -3
- data/test/mock_app/config/boot.rb +1 -1
- data/test/mock_app/config/environment.rb +1 -0
- data/test/mock_app/config/environments/development.rb +0 -1
- data/test/mock_app/config/environments/production.rb +1 -1
- data/test/mock_app/db/schema.rb +14 -15
- data/test/model_stub.rb +13 -16
- data/test/run_all.rb +5 -7
- data/test/test_helper.rb +12 -9
- metadata +19 -3
@@ -41,7 +41,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
41
41
|
|
42
42
|
def test_saving_has_many_select
|
43
43
|
buildings = 2.times.map { Building.create }
|
44
|
-
model = update_record_from_params(Person.new, :create, :first_name, :last_name, :buildings, :first_name => 'First', :last_name => '', :buildings => ['', *buildings.map{|b| b.id.to_s}]) # checkbox_list always add a hidden tag with empty value
|
44
|
+
model = update_record_from_params(Person.new, :create, :first_name, :last_name, :buildings, :first_name => 'First', :last_name => '', :buildings => ['', *buildings.map { |b| b.id.to_s }]) # checkbox_list always add a hidden tag with empty value
|
45
45
|
assert_equal 'First', model.first_name
|
46
46
|
assert_nil model.last_name
|
47
47
|
assert_equal buildings.map(&:id), model.building_ids
|
@@ -52,7 +52,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
52
52
|
model = update_record_from_params(model, :update, :first_name, :last_name, :buildings, :first_name => 'Name', :last_name => 'Last', :buildings => ['']) { raise ActiveRecord::Rollback }
|
53
53
|
assert_equal 'Name', model.first_name
|
54
54
|
assert_equal 'Last', model.last_name
|
55
|
-
assert_equal [model.id]*2, buildings.map{|b| b.reload.owner_id}, 'owners should not be saved'
|
55
|
+
assert_equal [model.id] * 2, buildings.map { |b| b.reload.owner_id }, 'owners should not be saved'
|
56
56
|
assert model.building_ids.blank?, 'buildings should be cleared'
|
57
57
|
assert model.buildings.blank?, 'buildings should be cleared'
|
58
58
|
assert_equal 0, model.buildings.size
|
@@ -63,7 +63,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
63
63
|
assert_equal 'Last', model.last_name
|
64
64
|
assert model.building_ids.blank?, 'buildings should be cleared'
|
65
65
|
assert model.buildings.blank?, 'buildings should be cleared'
|
66
|
-
assert_equal [nil]*2, buildings.map{|b| b.reload.owner_id}, 'buildings should be saved'
|
66
|
+
assert_equal [nil] * 2, buildings.map { |b| b.reload.owner_id }, 'buildings should be saved'
|
67
67
|
assert model.save
|
68
68
|
assert_equal 0, model.reload.buildings_count
|
69
69
|
end
|
@@ -182,23 +182,23 @@ class AttributeParamsTest < MiniTest::Test
|
|
182
182
|
people = 2.times.map { Person.create }
|
183
183
|
assert people.all?(&:persisted?)
|
184
184
|
|
185
|
-
model = update_record_from_params(Building.new, :create, :name, :tenants, :name => 'Tower', :tenants => ['', *people.map{|b| b.id.to_s}]) # checkbox_list always add a hidden tag with empty value
|
185
|
+
model = update_record_from_params(Building.new, :create, :name, :tenants, :name => 'Tower', :tenants => ['', *people.map { |b| b.id.to_s }]) # checkbox_list always add a hidden tag with empty value
|
186
186
|
assert_equal 'Tower', model.name
|
187
187
|
assert model.tenants.present?
|
188
|
-
assert_equal [nil]*2, people.map {|p| p.floor(true)}, 'floor should not be saved yet'
|
188
|
+
assert_equal [nil] * 2, people.map { |p| p.floor(true) }, 'floor should not be saved yet'
|
189
189
|
assert model.save
|
190
|
-
assert_equal [model.id]*2, model.floors.map(&:building_id)
|
191
|
-
assert_equal [model.id]*2, people.map {|p| p.floor(true).building_id}, 'floor should be saved'
|
190
|
+
assert_equal [model.id] * 2, model.floors.map(&:building_id)
|
191
|
+
assert_equal [model.id] * 2, people.map { |p| p.floor(true).building_id }, 'floor should be saved'
|
192
192
|
|
193
193
|
model = update_record_from_params(model, :update, :name, :tenants, :name => 'Skyscrapper', :tenants => ['']) { raise ActiveRecord::Rollback }
|
194
194
|
assert_equal 'Skyscrapper', model.name
|
195
|
-
assert_equal [model.id]*2, people.map {|p| p.floor(true).building_id}, 'previous floor should not be deleted'
|
195
|
+
assert_equal [model.id] * 2, people.map { |p| p.floor(true).building_id }, 'previous floor should not be deleted'
|
196
196
|
assert model.tenants.empty?, 'tenants should be cleared'
|
197
197
|
|
198
198
|
model.reload
|
199
199
|
model = update_record_from_params(model, :update, :name, :tenants, :name => 'Skyscrapper', :tenants => [''])
|
200
200
|
assert_equal 'Skyscrapper', model.name
|
201
|
-
assert_equal [nil]*2, people.map {|p| p.floor(true)}, 'previous floor should be deleted'
|
201
|
+
assert_equal [nil] * 2, people.map { |p| p.floor(true) }, 'previous floor should be deleted'
|
202
202
|
assert model.tenants.empty?, 'tenants should be cleared'
|
203
203
|
assert model.save
|
204
204
|
end
|
@@ -346,7 +346,7 @@ class AttributeParamsTest < MiniTest::Test
|
|
346
346
|
|
347
347
|
def test_saving_has_many_polymorphic_select
|
348
348
|
contacts = 2.times.map { Contact.create }
|
349
|
-
|
349
|
+
|
350
350
|
model = update_record_from_params(Person.new, :create, :first_name, :contacts, :first_name => 'Me', :contacts => ['', contacts.first.id.to_s])
|
351
351
|
assert_equal 'Me', model.first_name
|
352
352
|
assert model.contacts.present?
|
@@ -354,48 +354,49 @@ class AttributeParamsTest < MiniTest::Test
|
|
354
354
|
assert_equal [model.id], model.contacts.map(&:contactable_id)
|
355
355
|
assert_equal model.id, contacts.first.reload.contactable.id, 'contactable should be saved'
|
356
356
|
assert_equal 1, model.reload.contacts_count
|
357
|
-
|
358
|
-
model = update_record_from_params(model, :update, :first_name, :contacts, :first_name => 'Name', :contacts => ['', *contacts.map{|c| c.id.to_s}])
|
357
|
+
|
358
|
+
model = update_record_from_params(model, :update, :first_name, :contacts, :first_name => 'Name', :contacts => ['', *contacts.map { |c| c.id.to_s }])
|
359
359
|
assert_equal 'Name', model.first_name
|
360
360
|
assert model.contacts.present?
|
361
361
|
assert model.save
|
362
|
-
assert_equal [model.id]*2, model.contacts.map(&:contactable_id)
|
363
|
-
assert_equal [model.id]*2, contacts.map {|c| c.reload.contactable.id}, 'contactable should be saved'
|
362
|
+
assert_equal [model.id] * 2, model.contacts.map(&:contactable_id)
|
363
|
+
assert_equal [model.id] * 2, contacts.map { |c| c.reload.contactable.id }, 'contactable should be saved'
|
364
364
|
assert_equal 2, model.reload.contacts_count
|
365
|
-
|
365
|
+
|
366
366
|
model = update_record_from_params(model, :update, :first_name, :contacts, :first_name => 'Name', :contacts => [''])
|
367
367
|
assert_equal 'Name', model.first_name
|
368
368
|
assert model.contacts.empty?
|
369
369
|
assert model.save
|
370
|
-
assert_equal [nil]*2, contacts.map {|c| c.reload.contactable}, 'contactable should be saved'
|
370
|
+
assert_equal [nil] * 2, contacts.map { |c| c.reload.contactable }, 'contactable should be saved'
|
371
371
|
assert_equal 0, model.reload.contacts_count
|
372
372
|
end
|
373
373
|
|
374
374
|
def test_saving_habtm_select
|
375
375
|
roles = 2.times.map { Role.create }
|
376
|
-
|
376
|
+
|
377
377
|
model = update_record_from_params(Person.new, :create, :first_name, :roles, :first_name => 'Me', :roles => ['', roles.first.id.to_s])
|
378
378
|
assert_equal 'Me', model.first_name
|
379
379
|
assert model.roles.present?
|
380
380
|
assert model.save
|
381
381
|
assert_equal [[model.id]], model.roles.map(&:person_ids)
|
382
382
|
assert_equal [model.id], roles.first.reload.person_ids, 'role should be saved'
|
383
|
-
|
384
|
-
model = update_record_from_params(model, :update, :first_name, :roles, :first_name => 'Name', :roles => ['', *roles.map{|c| c.id.to_s}])
|
383
|
+
|
384
|
+
model = update_record_from_params(model, :update, :first_name, :roles, :first_name => 'Name', :roles => ['', *roles.map { |c| c.id.to_s }])
|
385
385
|
assert_equal 'Name', model.first_name
|
386
386
|
assert model.roles.present?
|
387
387
|
assert model.save
|
388
|
-
assert_equal [[model.id]]*2, model.roles.map(&:person_ids)
|
389
|
-
assert_equal [[model.id]]*2, roles.map {|r| r.reload.person_ids}, 'roles should be saved'
|
390
|
-
|
388
|
+
assert_equal [[model.id]] * 2, model.roles.map(&:person_ids)
|
389
|
+
assert_equal [[model.id]] * 2, roles.map { |r| r.reload.person_ids }, 'roles should be saved'
|
390
|
+
|
391
391
|
model = update_record_from_params(model, :update, :first_name, :roles, :first_name => 'Name', :roles => [''])
|
392
392
|
assert_equal 'Name', model.first_name
|
393
393
|
assert model.roles.empty?
|
394
394
|
assert model.save
|
395
|
-
assert roles.all? {|r| r.reload.people.empty?}, 'roles should be saved'
|
395
|
+
assert roles.all? { |r| r.reload.people.empty? }, 'roles should be saved'
|
396
396
|
end
|
397
397
|
|
398
398
|
protected
|
399
|
+
|
399
400
|
def update_record_from_params(record, action, *columns, &block)
|
400
401
|
params = columns.extract_options!.with_indifferent_access
|
401
402
|
new_record = nil
|
@@ -416,9 +417,9 @@ class AttributeParamsTest < MiniTest::Test
|
|
416
417
|
end
|
417
418
|
|
418
419
|
class Controller
|
419
|
-
def self.helper_method(*
|
420
|
-
def self.before_filter(*
|
421
|
-
|
420
|
+
def self.helper_method(*); end
|
421
|
+
def self.before_filter(*); end
|
422
|
+
|
422
423
|
include ActiveScaffold::Core
|
423
424
|
include ActiveScaffold::Helpers::ControllerHelpers
|
424
425
|
include ActiveScaffold::AttributeParams
|
@@ -427,6 +428,7 @@ class Controller
|
|
427
428
|
def logger
|
428
429
|
@logger ||= Logger.new(STDOUT)
|
429
430
|
end
|
431
|
+
|
430
432
|
def flash
|
431
433
|
@flash ||= ActionDispatch::Flash::FlashHash.new
|
432
434
|
end
|
@@ -3,31 +3,38 @@ require 'test_helper'
|
|
3
3
|
class ClassWithFinder
|
4
4
|
include ActiveScaffold::Finder
|
5
5
|
def conditions_for_collection; end
|
6
|
+
|
6
7
|
def conditions_from_params; end
|
8
|
+
|
7
9
|
def conditions_from_constraints; end
|
10
|
+
|
8
11
|
def joins_for_collection; end
|
12
|
+
|
9
13
|
def custom_finder_options
|
10
14
|
{}
|
11
15
|
end
|
16
|
+
|
12
17
|
def beginning_of_chain
|
13
18
|
active_scaffold_config.model
|
14
19
|
end
|
20
|
+
|
15
21
|
def conditional_get_support?; end
|
22
|
+
|
16
23
|
def params; {}; end
|
17
24
|
end
|
18
25
|
|
19
26
|
class CalculationTest < MiniTest::Test
|
20
27
|
def setup
|
21
28
|
@buildings = []
|
22
|
-
@buildings << Building.create {|b| b.create_owner(:first_name => 'foo')}
|
29
|
+
@buildings << Building.create { |b| b.create_owner(:first_name => 'foo') }
|
23
30
|
@buildings << Building.create(:name => 'foo bar')
|
24
31
|
@buildings << Building.create
|
25
|
-
|
32
|
+
|
26
33
|
@klass = ClassWithFinder.new
|
27
34
|
@klass.stubs(:active_scaffold_config).returns(mock { stubs(:model).returns(Building) })
|
28
35
|
@klass.stubs(:active_scaffold_session_storage).returns({})
|
29
36
|
end
|
30
|
-
|
37
|
+
|
31
38
|
def teardown
|
32
39
|
@buildings.each(&:destroy).map(&:owner).compact.each(&:destroy)
|
33
40
|
end
|
@@ -40,20 +40,19 @@ class ConfigurableTest < MiniTest::Test
|
|
40
40
|
## test normal block behaviors
|
41
41
|
##
|
42
42
|
# functions
|
43
|
-
assert_equal hello, configurable_class.configure {hello}
|
43
|
+
assert_equal hello, configurable_class.configure { hello }
|
44
44
|
# variables
|
45
|
-
assert_equal configurable_class, configurable_class.configure {configurable_class}
|
45
|
+
assert_equal configurable_class, configurable_class.configure { configurable_class }
|
46
46
|
# constants
|
47
|
-
assert_equal ConfigurableTest::HELLO, configurable_class.configure {ConfigurableTest::HELLO}
|
47
|
+
assert_equal ConfigurableTest::HELLO, configurable_class.configure { ConfigurableTest::HELLO }
|
48
48
|
|
49
49
|
##
|
50
50
|
## test extra "localized" block behavior
|
51
51
|
##
|
52
52
|
# functions
|
53
|
-
assert_equal configurable_class.foo, configurable_class.configure {foo}
|
53
|
+
assert_equal configurable_class.foo, configurable_class.configure { foo }
|
54
54
|
# constants - not working
|
55
|
-
# assert_equal configurable_class.FOO, configurable_class.configure {FOO}
|
56
|
-
|
55
|
+
# assert_equal configurable_class.FOO, configurable_class.configure {FOO}
|
57
56
|
end
|
58
57
|
|
59
58
|
def test_class_configuration
|
@@ -73,25 +72,25 @@ class ConfigurableTest < MiniTest::Test
|
|
73
72
|
## test normal block behaviors
|
74
73
|
##
|
75
74
|
# functions
|
76
|
-
assert_equal hello, ExtendedClass.configure {hello}
|
75
|
+
assert_equal hello, ExtendedClass.configure { hello }
|
77
76
|
# variables
|
78
|
-
assert_equal ExtendedClass, ExtendedClass.configure {ExtendedClass}
|
77
|
+
assert_equal ExtendedClass, ExtendedClass.configure { ExtendedClass }
|
79
78
|
# constants
|
80
|
-
assert_equal ConfigurableTest::HELLO, ExtendedClass.configure {ConfigurableTest::HELLO}
|
79
|
+
assert_equal ConfigurableTest::HELLO, ExtendedClass.configure { ConfigurableTest::HELLO }
|
81
80
|
|
82
81
|
##
|
83
82
|
## test extra "localized" block behavior
|
84
83
|
##
|
85
84
|
# functions
|
86
|
-
assert_equal ExtendedClass.foo, ExtendedClass.configure {foo}
|
85
|
+
assert_equal ExtendedClass.foo, ExtendedClass.configure { foo }
|
87
86
|
# constants - not working
|
88
|
-
# assert_equal ExtendedClass.FOO, ExtendedClass.configure {FOO}
|
87
|
+
# assert_equal ExtendedClass.FOO, ExtendedClass.configure {FOO}
|
89
88
|
end
|
90
89
|
|
91
90
|
def test_arity
|
92
91
|
# this is the main style
|
93
|
-
assert_equal 'foo', ExtendedClass.configure {'foo'}
|
92
|
+
assert_equal 'foo', ExtendedClass.configure { 'foo' }
|
94
93
|
# but we want to let people accept the configurable class as the first argument, too
|
95
|
-
assert_equal 'bar', ExtendedClass.configure {|a| a.foo}
|
94
|
+
assert_equal 'bar', ExtendedClass.configure { |a| a.foo } # rubocop:disable Style/SymbolProc
|
96
95
|
end
|
97
96
|
end
|
@@ -2,9 +2,9 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
module ModelStubs
|
4
4
|
class ModelStub < ActiveRecord::Base
|
5
|
-
abstract_class = true
|
5
|
+
self.abstract_class = true
|
6
6
|
def self.columns; @columns ||= [ColumnMock.new('foo', '')] end
|
7
|
-
def self.columns_hash; @hash ||= Hash[@columns.map{|c| [c.name, c]}] end
|
7
|
+
def self.columns_hash; @hash ||= Hash[@columns.map { |c| [c.name, c] }] end
|
8
8
|
def self.table_name
|
9
9
|
@table_name || to_s.split('::').last.underscore.pluralize
|
10
10
|
end
|
@@ -83,7 +83,7 @@ end
|
|
83
83
|
|
84
84
|
class ConstraintsTestObject
|
85
85
|
# stub out what the mixin expects to find ...
|
86
|
-
def self.before_filter(*
|
86
|
+
def self.before_filter(*); end
|
87
87
|
def self.helper_method(*); end
|
88
88
|
attr_accessor :active_scaffold_preload
|
89
89
|
attr_accessor :active_scaffold_references
|
@@ -123,7 +123,7 @@ class ConstraintsTest < MiniTest::Test
|
|
123
123
|
assert_constraint_condition({:address => 11}, [{'addresses.id' => 11}], 'find the user with address #11')
|
124
124
|
# reverse of a has_many :through
|
125
125
|
assert_constraint_condition({:subscription => {:service => 5}}, [{'services.id' => 5}], 'find all users subscribed to service #5')
|
126
|
-
assert(@test_object.active_scaffold_references.include?(
|
126
|
+
assert(@test_object.active_scaffold_references.include?(:subscription => :service), 'multi-level association include')
|
127
127
|
|
128
128
|
@test_object.active_scaffold_config = config_for('subscription')
|
129
129
|
# belongs_to (vs has_one)
|
@@ -179,7 +179,7 @@ class ConstraintsTest < MiniTest::Test
|
|
179
179
|
|
180
180
|
def test_constraint_conditions_for_associations_with_primary_key_option
|
181
181
|
@test_object.active_scaffold_config = config_for('primary_key_location')
|
182
|
-
#user = ModelStubs::PrimaryKeyUser.new(:id => 1, :name => 'User Name')
|
182
|
+
# user = ModelStubs::PrimaryKeyUser.new(:id => 1, :name => 'User Name')
|
183
183
|
ModelStubs::PrimaryKeyUser.expects(:find).with(1).returns(stub(:id => 1, :name => 'User Name'))
|
184
184
|
assert_constraint_condition({'user' => 1}, [{'primary_key_locations.username' => 'User Name'}], 'association with primary-key constraint')
|
185
185
|
end
|
@@ -192,6 +192,6 @@ class ConstraintsTest < MiniTest::Test
|
|
192
192
|
end
|
193
193
|
|
194
194
|
def config_for(klass, namespace = nil)
|
195
|
-
super(klass,
|
195
|
+
super(klass, 'model_stubs/')
|
196
196
|
end
|
197
197
|
end
|
@@ -6,7 +6,7 @@ class NumberModel < ActiveRecord::Base
|
|
6
6
|
@columns ||= [ColumnMock.new('id', '', 'int(11)'), ColumnMock.new('number', '', 'double(10,2)')]
|
7
7
|
end
|
8
8
|
def self.columns_hash
|
9
|
-
@hash ||= Hash[@columns.map{|c| [c.name, c]}]
|
9
|
+
@hash ||= Hash[@columns.map { |c| [c.name, c] }]
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -57,7 +57,7 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
57
57
|
assert_equal 1000, convert_number('1,000')
|
58
58
|
assert_equal 1000, convert_number('+1,000')
|
59
59
|
assert_equal -1000, convert_number('-1,000')
|
60
|
-
assert_equal
|
60
|
+
assert_equal 1_000_000, convert_number('1,000,000')
|
61
61
|
end
|
62
62
|
|
63
63
|
def test_english_format_with_separator_and_delimiter_using_english_language
|
@@ -66,7 +66,7 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
66
66
|
assert_equal 1234.1, convert_number('1,234.100')
|
67
67
|
assert_equal 1234.345, convert_number('+1,234.345')
|
68
68
|
assert_equal -1234.345, convert_number('-1,234.345')
|
69
|
-
assert_equal
|
69
|
+
assert_equal 1_234_000.1, convert_number('1,234,000.100')
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_english_format_with_decimal_separator_using_spanish_language
|
@@ -97,7 +97,7 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
97
97
|
assert_equal 1000, convert_number('1.000')
|
98
98
|
assert_equal 1000, convert_number('+1.000')
|
99
99
|
assert_equal -1000, convert_number('-1.000')
|
100
|
-
assert_equal
|
100
|
+
assert_equal 1_000_000, convert_number('1.000.000')
|
101
101
|
end
|
102
102
|
|
103
103
|
def test_spanish_format_with_separator_and_decimal_using_spanish_language
|
@@ -106,7 +106,7 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
106
106
|
assert_equal 1230.1, convert_number('1.230,100')
|
107
107
|
assert_equal 1234.345, convert_number('+1.234,345')
|
108
108
|
assert_equal -1234.345, convert_number('-1.234,345')
|
109
|
-
assert_equal
|
109
|
+
assert_equal 1_234_000.1, convert_number('1.234.000,100')
|
110
110
|
end
|
111
111
|
|
112
112
|
def test_english_currency_format_with_decimal_separator_using_russian_language
|
@@ -139,10 +139,11 @@ class ConvertNumbersFormatTest < MiniTest::Test
|
|
139
139
|
end
|
140
140
|
|
141
141
|
private
|
142
|
+
|
142
143
|
def convert_number(value, format = nil)
|
143
144
|
record = NumberModel.new
|
144
145
|
@config.columns[:number].options[:format] = format unless format.nil?
|
145
|
-
update_record_from_params(record, @config.create.columns, HashWithIndifferentAccess.new(
|
146
|
+
update_record_from_params(record, @config.create.columns, HashWithIndifferentAccess.new(:number => value))
|
146
147
|
record.number
|
147
148
|
end
|
148
149
|
end
|
data/test/misc/finder_test.rb
CHANGED
@@ -3,16 +3,23 @@ require 'test_helper'
|
|
3
3
|
class ClassWithFinder
|
4
4
|
include ActiveScaffold::Finder
|
5
5
|
def conditions_for_collection; end
|
6
|
+
|
6
7
|
def conditions_from_params; end
|
8
|
+
|
7
9
|
def conditions_from_constraints; end
|
10
|
+
|
8
11
|
def joins_for_collection; end
|
12
|
+
|
9
13
|
def custom_finder_options
|
10
14
|
{}
|
11
15
|
end
|
16
|
+
|
12
17
|
def beginning_of_chain
|
13
18
|
active_scaffold_config.model
|
14
19
|
end
|
20
|
+
|
15
21
|
def conditional_get_support?; end
|
22
|
+
|
16
23
|
def params; {}; end
|
17
24
|
end
|
18
25
|
|
@@ -28,14 +35,11 @@ class FinderTest < MiniTest::Test
|
|
28
35
|
ActiveScaffold::DataStructures::Column.new(:a, ModelStub),
|
29
36
|
ActiveScaffold::DataStructures::Column.new(:b, ModelStub)
|
30
37
|
]
|
31
|
-
tokens =
|
32
|
-
'foo',
|
33
|
-
'bar'
|
34
|
-
]
|
38
|
+
tokens = %w(foo bar)
|
35
39
|
|
36
40
|
expected_conditions = [
|
37
|
-
|
38
|
-
|
41
|
+
['"model_stubs"."a" LIKE ? OR "model_stubs"."b" LIKE ?', '%foo%', '%foo%'],
|
42
|
+
['"model_stubs"."a" LIKE ? OR "model_stubs"."b" LIKE ?', '%bar%', '%bar%']
|
39
43
|
]
|
40
44
|
assert_equal expected_conditions, ClassWithFinder.create_conditions_for_columns(tokens, columns)
|
41
45
|
|
@@ -50,9 +54,9 @@ class FinderTest < MiniTest::Test
|
|
50
54
|
|
51
55
|
def test_method_sorting
|
52
56
|
column = ActiveScaffold::DataStructures::Column.new('a', ModelStub)
|
53
|
-
column.sort_by :method => proc{self}
|
57
|
+
column.sort_by :method => proc { self }
|
54
58
|
|
55
|
-
collection = [
|
59
|
+
collection = [16_000, 2853, 98_765, 6188, 4]
|
56
60
|
assert_equal collection.sort, @klass.send(:sort_collection_by_column, collection, column, 'asc')
|
57
61
|
assert_equal collection.sort.reverse, @klass.send(:sort_collection_by_column, collection, column, 'desc')
|
58
62
|
|
@@ -66,13 +70,13 @@ class FinderTest < MiniTest::Test
|
|
66
70
|
end
|
67
71
|
|
68
72
|
def test_count_with_group
|
69
|
-
@klass.expects(:custom_finder_options).returns(
|
70
|
-
relation_class.any_instance.expects(:count).returns(
|
73
|
+
@klass.expects(:custom_finder_options).returns(:group => :a)
|
74
|
+
relation_class.any_instance.expects(:count).returns('foo' => 5, 'bar' => 4)
|
71
75
|
relation_class.any_instance.expects(:limit).with(20).returns(ModelStub.where(nil))
|
72
76
|
relation_class.any_instance.expects(:offset).with(0).returns(ModelStub.where(nil))
|
73
77
|
page = @klass.send :find_page, :per_page => 20, :pagination => true
|
74
78
|
page.items
|
75
|
-
|
79
|
+
|
76
80
|
assert_kind_of Integer, page.pager.count
|
77
81
|
assert_equal 2, page.pager.count
|
78
82
|
assert_equal 1, page.pager.number_of_pages
|
@@ -89,7 +93,7 @@ class FinderTest < MiniTest::Test
|
|
89
93
|
|
90
94
|
def test_infinite_pagination
|
91
95
|
ModelStub.expects(:count).never
|
92
|
-
|
96
|
+
@klass.send :find_page, :pagination => :infinite
|
93
97
|
end
|
94
98
|
|
95
99
|
def test_condition_for_column
|
@@ -98,6 +102,7 @@ class FinderTest < MiniTest::Test
|
|
98
102
|
end
|
99
103
|
|
100
104
|
private
|
105
|
+
|
101
106
|
def relation_class
|
102
107
|
@klass.active_scaffold_config.model.send(:relation).class
|
103
108
|
end
|
data/test/misc/lang_test.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class LocalizationTest < MiniTest::Test
|
4
|
-
|
5
4
|
def test_localization
|
6
|
-
assert_equal
|
7
|
-
assert_equal
|
5
|
+
assert_equal 'Dutch', as_(:dutch)
|
6
|
+
assert_equal 'dutch', as_('dutch')
|
8
7
|
I18n.backend.store_translations :en, :active_scaffold => {:create_model => 'Create %{model}'}
|
9
|
-
assert_equal
|
8
|
+
assert_equal 'Create Test', as_(:create_model, :model => 'Test')
|
10
9
|
end
|
11
10
|
end
|