active_scaffold 3.7.12 → 4.0.0.rc1
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.rdoc +9 -23
- data/README.md +3 -2
- data/app/assets/config/active_scaffold_manifest.js +3 -0
- data/app/assets/javascripts/active_scaffold.js.erb +24 -34
- data/app/assets/javascripts/jquery/active_scaffold.js +41 -58
- data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +1 -1
- data/app/assets/stylesheets/active_scaffold_colors.scss +0 -7
- data/app/assets/stylesheets/active_scaffold_extensions.css.erb +2 -2
- data/app/assets/stylesheets/active_scaffold_jquery_ui.css.erb +7 -7
- data/app/assets/stylesheets/active_scaffold_layout.css +57 -30
- data/app/views/active_scaffold_overrides/_add_existing_form.html.erb +10 -10
- data/app/views/active_scaffold_overrides/_base_form.html.erb +21 -21
- data/app/views/active_scaffold_overrides/_create_form.html.erb +10 -7
- data/app/views/active_scaffold_overrides/_create_form_on_list.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_field_search.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_form.html.erb +11 -14
- data/app/views/active_scaffold_overrides/_form_association.html.erb +21 -12
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +19 -10
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +15 -21
- data/app/views/active_scaffold_overrides/_form_messages.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +7 -6
- data/app/views/active_scaffold_overrides/_human_conditions.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_list.html.erb +15 -8
- data/app/views/active_scaffold_overrides/_list_calculations.html.erb +2 -3
- data/app/views/active_scaffold_overrides/_list_header.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_list_inline_adapter.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +12 -3
- data/app/views/active_scaffold_overrides/_list_pagination.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_list_pagination_links.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_list_record.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +2 -2
- data/app/views/active_scaffold_overrides/_render_field.js.erb +4 -4
- data/app/views/active_scaffold_overrides/_row.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_search.html.erb +6 -5
- data/app/views/active_scaffold_overrides/_show.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_show_actions.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_association.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_association_horizontal.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_association_vertical.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_horizontal_record.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_actions.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_calculations.js.erb +2 -2
- data/app/views/active_scaffold_overrides/_update_column.js.erb +8 -7
- data/app/views/active_scaffold_overrides/_update_form.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_update_messages.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_vertical_subform.html.erb +4 -3
- data/app/views/active_scaffold_overrides/action_confirmation.html.erb +3 -3
- data/app/views/active_scaffold_overrides/add_existing.js.erb +6 -6
- data/app/views/active_scaffold_overrides/add_existing_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/add_tab.js.erb +15 -0
- data/app/views/active_scaffold_overrides/create.html.erb +1 -1
- data/app/views/active_scaffold_overrides/delete.html.erb +4 -4
- data/app/views/active_scaffold_overrides/destroy.js.erb +15 -13
- data/app/views/active_scaffold_overrides/edit_associated.js.erb +3 -3
- data/app/views/active_scaffold_overrides/field_search.html.erb +1 -1
- data/app/views/active_scaffold_overrides/form_messages.js.erb +1 -1
- data/app/views/active_scaffold_overrides/list.html.erb +1 -1
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +13 -8
- data/app/views/active_scaffold_overrides/on_create.js.erb +34 -6
- data/app/views/active_scaffold_overrides/on_mark.js.erb +3 -3
- data/app/views/active_scaffold_overrides/on_update.js.erb +9 -9
- data/app/views/active_scaffold_overrides/render_field.js.erb +1 -1
- data/app/views/active_scaffold_overrides/render_field_inplace.html.erb +1 -1
- data/app/views/active_scaffold_overrides/row.js.erb +2 -2
- data/app/views/active_scaffold_overrides/search.html.erb +1 -1
- data/app/views/active_scaffold_overrides/show.html.erb +3 -3
- data/app/views/active_scaffold_overrides/update.html.erb +2 -2
- data/app/views/active_scaffold_overrides/update_column.js.erb +4 -4
- data/app/views/active_scaffold_overrides/update_row.js.erb +1 -1
- data/lib/active_scaffold/actions/common_search.rb +5 -3
- data/lib/active_scaffold/actions/core.rb +57 -32
- data/lib/active_scaffold/actions/create.rb +19 -17
- data/lib/active_scaffold/actions/delete.rb +10 -12
- data/lib/active_scaffold/actions/field_search.rb +28 -13
- data/lib/active_scaffold/actions/list.rb +34 -34
- data/lib/active_scaffold/actions/mark.rb +5 -5
- data/lib/active_scaffold/actions/nested.rb +64 -56
- data/lib/active_scaffold/actions/search.rb +2 -2
- data/lib/active_scaffold/actions/show.rb +5 -5
- data/lib/active_scaffold/actions/subform.rb +15 -4
- data/lib/active_scaffold/actions/update.rb +20 -20
- data/lib/active_scaffold/active_record_permissions.rb +4 -3
- data/lib/active_scaffold/attribute_params.rb +51 -50
- data/lib/active_scaffold/bridges/active_storage/active_storage_bridge.rb +4 -4
- data/lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb +6 -2
- data/lib/active_scaffold/bridges/active_storage.rb +1 -1
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +3 -3
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +4 -1
- data/lib/active_scaffold/bridges/bitfields.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/cancan.rb +8 -8
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +1 -1
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +4 -3
- data/lib/active_scaffold/bridges/carrierwave.rb +2 -2
- data/lib/active_scaffold/bridges/chosen.rb +1 -5
- data/lib/active_scaffold/bridges/country_select/country_select_bridge_helper.rb +4 -2
- data/lib/active_scaffold/bridges/date_picker/ext.rb +20 -12
- data/lib/active_scaffold/bridges/date_picker/helper.rb +37 -33
- data/lib/active_scaffold/bridges/date_picker.rb +1 -4
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +3 -2
- data/lib/active_scaffold/bridges/dragonfly.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +3 -2
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +2 -1
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +4 -9
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +6 -3
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +1 -4
- data/lib/active_scaffold/bridges/file_column.rb +1 -0
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +4 -2
- data/lib/active_scaffold/bridges/paper_trail/config.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/helper.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +2 -1
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +3 -2
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +10 -9
- data/lib/active_scaffold/bridges/paperclip.rb +2 -1
- data/lib/active_scaffold/bridges/record_select/helpers.rb +10 -11
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +3 -1
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -7
- data/lib/active_scaffold/bridges/tiny_mce.rb +2 -7
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +7 -7
- data/lib/active_scaffold/bridges.rb +7 -5
- data/lib/active_scaffold/config/base.rb +20 -24
- data/lib/active_scaffold/config/core.rb +27 -39
- data/lib/active_scaffold/config/create.rb +1 -1
- data/lib/active_scaffold/config/delete.rb +9 -9
- data/lib/active_scaffold/config/field_search.rb +4 -9
- data/lib/active_scaffold/config/form.rb +3 -1
- data/lib/active_scaffold/config/list.rb +19 -15
- data/lib/active_scaffold/config/nested.rb +2 -2
- data/lib/active_scaffold/config/search.rb +5 -5
- data/lib/active_scaffold/config/show.rb +1 -1
- data/lib/active_scaffold/config/subform.rb +1 -1
- data/lib/active_scaffold/config/update.rb +4 -5
- data/lib/active_scaffold/configurable.rb +2 -1
- data/lib/active_scaffold/constraints.rb +16 -11
- data/lib/active_scaffold/core.rb +25 -27
- data/lib/active_scaffold/data_structures/action_columns.rb +10 -3
- data/lib/active_scaffold/data_structures/action_link.rb +19 -9
- data/lib/active_scaffold/data_structures/action_links.rb +20 -26
- data/lib/active_scaffold/data_structures/actions.rb +3 -3
- data/lib/active_scaffold/data_structures/association/abstract.rb +8 -4
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +1 -0
- data/lib/active_scaffold/data_structures/association/active_record.rb +1 -4
- data/lib/active_scaffold/data_structures/column.rb +368 -327
- data/lib/active_scaffold/data_structures/columns.rb +3 -2
- data/lib/active_scaffold/data_structures/nested_info.rb +6 -5
- data/lib/active_scaffold/data_structures/proxy_column.rb +68 -0
- data/lib/active_scaffold/data_structures/set.rb +7 -4
- data/lib/active_scaffold/data_structures/sorting.rb +21 -12
- data/lib/active_scaffold/engine.rb +12 -12
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +5 -5
- data/lib/active_scaffold/extensions/action_controller_rescueing.rb +1 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +29 -31
- data/lib/active_scaffold/extensions/ice_nine.rb +2 -1
- data/lib/active_scaffold/extensions/localize.rb +2 -2
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +1 -1
- data/lib/active_scaffold/extensions/routing_mapper.rb +5 -4
- data/lib/active_scaffold/extensions/unsaved_associated.rb +3 -2
- data/lib/active_scaffold/finder.rb +71 -78
- data/lib/active_scaffold/helpers/action_link_helpers.rb +37 -49
- data/lib/active_scaffold/helpers/association_helpers.rb +3 -2
- data/lib/active_scaffold/helpers/controller_helpers.rb +18 -16
- data/lib/active_scaffold/helpers/form_column_helpers.rb +69 -53
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +17 -15
- data/lib/active_scaffold/helpers/id_helpers.rb +5 -5
- data/lib/active_scaffold/helpers/list_column_helpers.rb +35 -38
- data/lib/active_scaffold/helpers/pagination_helpers.rb +4 -4
- data/lib/active_scaffold/helpers/search_column_helpers.rb +25 -34
- data/lib/active_scaffold/helpers/show_column_helpers.rb +7 -4
- data/lib/active_scaffold/helpers/tabs_helpers.rb +88 -0
- data/lib/active_scaffold/helpers/view_helpers.rb +15 -13
- data/lib/active_scaffold/marked_model.rb +1 -2
- data/lib/active_scaffold/orm_checks.rb +6 -4
- data/lib/active_scaffold/paginator.rb +3 -2
- data/lib/active_scaffold/registry.rb +5 -0
- data/lib/active_scaffold/tableless.rb +24 -14
- data/lib/active_scaffold/version.rb +4 -4
- data/lib/active_scaffold.rb +8 -34
- data/lib/generators/active_scaffold/controller_generator.rb +20 -20
- data/lib/generators/active_scaffold/install_generator.rb +4 -8
- data/lib/generators/active_scaffold/resource_generator.rb +31 -31
- data/lib/tasks/brakeman.rake +1 -1
- data/shoulda_macros/macros.rb +14 -14
- metadata +11 -232
- data/app/assets/javascripts/prototype/active_scaffold.js +0 -1249
- data/app/assets/javascripts/prototype/active_scaffold_chosen.js +0 -0
- data/app/assets/javascripts/prototype/dhtml_history.js +0 -870
- data/app/assets/javascripts/prototype/form_enhancements.js +0 -117
- data/app/assets/javascripts/prototype/tiny_mce_bridge.js +0 -17
- data/app/views/active_scaffold_overrides/_list_messages_content.html.erb +0 -8
- data/app/views/active_scaffold_overrides/_new_record.js.erb +0 -15
- data/app/views/active_scaffold_overrides/_popup_adapter.html.erb +0 -20
- data/app/views/active_scaffold_overrides/_refresh_create_form.js.erb +0 -12
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +0 -58
- data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -17
- data/lib/active_scaffold/data_structures/action_link_separator.rb +0 -13
- data/lib/active_scaffold/extensions/cow_proxy.rb +0 -102
- data/test/active_scaffold_config_mock.rb +0 -33
- data/test/bridges/bridge_test.rb +0 -88
- data/test/bridges/date_picker_test.rb +0 -31
- data/test/bridges/paper_trail_test.rb +0 -16
- data/test/bridges/paperclip_test.rb +0 -85
- data/test/bridges/tiny_mce_test.rb +0 -61
- data/test/class_with_finder.rb +0 -42
- data/test/company.rb +0 -97
- data/test/config/base_test.rb +0 -17
- data/test/config/core_test.rb +0 -66
- data/test/config/create_test.rb +0 -72
- data/test/config/delete_test.rb +0 -35
- data/test/config/field_search_test.rb +0 -49
- data/test/config/list_test.rb +0 -134
- data/test/config/nested_test.rb +0 -55
- data/test/config/search_test.rb +0 -62
- data/test/config/show_test.rb +0 -45
- data/test/config/subform_test.rb +0 -19
- data/test/config/update_test.rb +0 -52
- data/test/const_mocker.rb +0 -32
- data/test/data_structures/action_columns_test.rb +0 -112
- data/test/data_structures/action_link_test.rb +0 -79
- data/test/data_structures/action_links_test.rb +0 -78
- data/test/data_structures/actions_test.rb +0 -25
- data/test/data_structures/association_column_test.rb +0 -41
- data/test/data_structures/column_test.rb +0 -186
- data/test/data_structures/columns_test.rb +0 -68
- data/test/data_structures/set_test.rb +0 -84
- data/test/data_structures/sorting_test.rb +0 -148
- data/test/data_structures/standard_column_test.rb +0 -23
- data/test/data_structures/validation_reflection_test.rb +0 -69
- data/test/data_structures/virtual_column_test.rb +0 -23
- data/test/extensions/action_view_rendering_test.rb +0 -20
- data/test/extensions/active_record_test.rb +0 -44
- data/test/extensions/routing_mapper_test.rb +0 -73
- data/test/helpers/form_column_helpers_test.rb +0 -34
- data/test/helpers/list_column_helpers_test.rb +0 -53
- data/test/helpers/pagination_helpers_test.rb +0 -65
- data/test/helpers/search_column_helpers_test.rb +0 -15
- data/test/misc/active_record_permissions_test.rb +0 -193
- data/test/misc/attribute_params_test.rb +0 -460
- data/test/misc/calculation_test.rb +0 -39
- data/test/misc/configurable_test.rb +0 -97
- data/test/misc/constraints_test.rb +0 -209
- data/test/misc/convert_numbers_format_test.rb +0 -171
- data/test/misc/finder_test.rb +0 -124
- data/test/misc/lang_test.rb +0 -10
- data/test/misc/parse_datetime_test.rb +0 -159
- data/test/misc/render_test.rb +0 -9
- data/test/misc/tableless_test.rb +0 -56
- data/test/mock_app/.gitignore +0 -2
- data/test/mock_app/Rakefile +0 -7
- data/test/mock_app/app/assets/config/manifest.js +0 -0
- data/test/mock_app/app/controllers/addresses_controller.rb +0 -4
- data/test/mock_app/app/controllers/application_controller.rb +0 -10
- data/test/mock_app/app/controllers/buildings_controller.rb +0 -4
- data/test/mock_app/app/controllers/cars_controller.rb +0 -5
- data/test/mock_app/app/controllers/contacts_controller.rb +0 -4
- data/test/mock_app/app/controllers/floors_controller.rb +0 -6
- data/test/mock_app/app/controllers/people_controller.rb +0 -8
- data/test/mock_app/app/controllers/roles_controller.rb +0 -4
- data/test/mock_app/app/helpers/application_helper.rb +0 -3
- data/test/mock_app/app/models/address.rb +0 -3
- data/test/mock_app/app/models/building.rb +0 -9
- data/test/mock_app/app/models/car.rb +0 -3
- data/test/mock_app/app/models/contact.rb +0 -3
- data/test/mock_app/app/models/file_model.rb +0 -31
- data/test/mock_app/app/models/floor.rb +0 -8
- data/test/mock_app/app/models/person.rb +0 -12
- data/test/mock_app/app/models/role.rb +0 -3
- data/test/mock_app/app/views/active_scaffold_overrides/_form.html.erb +0 -2
- data/test/mock_app/app/views/active_scaffold_overrides/list.html.erb +0 -2
- data/test/mock_app/app/views/people/_first_name_form_column.html.erb +0 -2
- data/test/mock_app/app/views/people/_form.html.erb +0 -2
- data/test/mock_app/app/views/people/list.html.erb +0 -2
- data/test/mock_app/config/application.rb +0 -14
- data/test/mock_app/config/boot.rb +0 -7
- data/test/mock_app/config/database.yml +0 -16
- data/test/mock_app/config/environment.rb +0 -6
- data/test/mock_app/config/environments/development.rb +0 -24
- data/test/mock_app/config/environments/production.rb +0 -49
- data/test/mock_app/config/environments/test.rb +0 -34
- data/test/mock_app/config/initializers/backtrace_silencers.rb +0 -7
- data/test/mock_app/config/initializers/inflections.rb +0 -10
- data/test/mock_app/config/initializers/mime_types.rb +0 -5
- data/test/mock_app/config/initializers/secret_token.rb +0 -11
- data/test/mock_app/config/initializers/session_store.rb +0 -8
- data/test/mock_app/config/initializers/wrap_parameters.rb +0 -14
- data/test/mock_app/config/locales/en.yml +0 -5
- data/test/mock_app/config/routes.rb +0 -17
- data/test/mock_app/config.ru +0 -4
- data/test/mock_app/db/schema.rb +0 -68
- data/test/mock_app/db/test.sqlite3 +0 -1
- data/test/model_stub.rb +0 -64
- data/test/performance/list_cars_performance_test.rb +0 -34
- data/test/performance/list_people_performance_test.rb +0 -31
- data/test/performance_test_help.rb +0 -3
- data/test/run_all.rb +0 -6
- data/test/test_helper.rb +0 -71
- data/vendor/assets/javascripts/getprototypeof.js +0 -12
@@ -1,460 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class AttributeParamsTest < Minitest::Test
|
4
|
-
def setup
|
5
|
-
@controller = Controller.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_saving_simple_record
|
9
|
-
model = update_record_from_params(Person.new, :create, :first_name, :last_name, :first_name => 'First', :last_name => '')
|
10
|
-
assert_equal 'First', model.first_name
|
11
|
-
assert_nil model.last_name
|
12
|
-
assert model.buildings.blank?
|
13
|
-
assert model.save
|
14
|
-
|
15
|
-
model.buildings.create(:name => '1st building')
|
16
|
-
model = update_record_from_params(model, :update, :first_name, :last_name, :first_name => 'Name', :last_name => 'Last')
|
17
|
-
assert_equal 'Name', model.first_name
|
18
|
-
assert_equal 'Last', model.last_name
|
19
|
-
assert model.buildings.present?, 'buildings should not be cleared'
|
20
|
-
assert model.save
|
21
|
-
assert_equal 1, model.buildings_count
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_saving_unexpected_column_is_ignored
|
25
|
-
model = Person.new(:first_name => 'First', :last_name => 'Last')
|
26
|
-
model.buildings.build(:name => '1st building')
|
27
|
-
assert model.save
|
28
|
-
|
29
|
-
model = update_record_from_params(model, :update, :first_name, :first_name => 'Name', :last_name => 'Surname')
|
30
|
-
assert_equal 'Name', model.first_name
|
31
|
-
assert_equal 'Last', model.last_name
|
32
|
-
assert model.buildings.present?, 'buildings should not be cleared'
|
33
|
-
assert model.save
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_saving_multiparameter_attribute
|
37
|
-
model = update_record_from_params(Contact.new, :update, :first_name, :birthday, :first_name => 'Diego', :last_name => 'Velazquez', 'birthday(1i)' => '1599', 'birthday(2i)' => '6', 'birthday(3i)' => '6')
|
38
|
-
assert_equal 'Diego', model.first_name
|
39
|
-
assert_equal Date.new(1599, 6, 6), model.birthday
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_saving_has_many_select
|
43
|
-
buildings = Array.new(2) { 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
|
45
|
-
assert_equal 'First', model.first_name
|
46
|
-
assert_nil model.last_name
|
47
|
-
assert_equal buildings.map(&:id), model.building_ids
|
48
|
-
assert_equal buildings.map(&:id), model.buildings.map(&:id)
|
49
|
-
assert_equal model, model.buildings[0].owner
|
50
|
-
assert model.save
|
51
|
-
assert_equal 2, model.reload.buildings_count
|
52
|
-
|
53
|
-
model = update_record_from_params(model, :update, :first_name, :last_name, :buildings, :first_name => 'Name', :last_name => 'Last', :buildings => ['']) { raise ActiveRecord::Rollback }
|
54
|
-
assert_equal 'Name', model.first_name
|
55
|
-
assert_equal 'Last', model.last_name
|
56
|
-
assert_equal [model.id] * 2, buildings.map { |b| b.reload.owner_id }, 'owners should not be saved'
|
57
|
-
assert model.building_ids.blank?, 'buildings should be cleared'
|
58
|
-
assert model.buildings.blank?, 'buildings should be cleared'
|
59
|
-
assert_equal 0, model.buildings.size
|
60
|
-
assert_equal 2, model.reload.buildings_count
|
61
|
-
|
62
|
-
model = update_record_from_params(model, :update, :first_name, :last_name, :buildings, :first_name => 'Name', :last_name => 'Last', :buildings => [''])
|
63
|
-
assert_equal 'Name', model.first_name
|
64
|
-
assert_equal 'Last', model.last_name
|
65
|
-
assert model.building_ids.blank?, 'buildings should be cleared'
|
66
|
-
assert model.buildings.blank?, 'buildings should be cleared'
|
67
|
-
assert_equal [nil] * 2, buildings.map { |b| b.reload.owner_id }, 'buildings should be saved'
|
68
|
-
assert model.save
|
69
|
-
assert_equal 0, model.reload.buildings_count
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_saving_belongs_to_select_for_has_one_reverse
|
73
|
-
person = Person.create
|
74
|
-
assert person.persisted?
|
75
|
-
assert_equal 0, person.floors_count
|
76
|
-
|
77
|
-
model = update_record_from_params(Floor.new, :create, :number, :tenant, :number => '1', :tenant => person.id.to_s)
|
78
|
-
assert_equal 1, model.number
|
79
|
-
assert_equal person.id, model.tenant_id
|
80
|
-
assert_equal person, model.tenant
|
81
|
-
assert model.save
|
82
|
-
assert_equal 1, person.reload.floors_count
|
83
|
-
|
84
|
-
model = update_record_from_params(model, :update, :number, :tenant, :number => '1', :tenant => '')
|
85
|
-
assert_equal 1, model.number
|
86
|
-
assert_nil model.tenant_id, 'tenant should be cleared'
|
87
|
-
assert_nil model.tenant, 'tenant should be cleared'
|
88
|
-
assert_equal person.id, Floor.find(model.id).tenant_id, 'floor should not be saved yet'
|
89
|
-
assert model.save
|
90
|
-
assert_nil Floor.find(model.id).tenant_id, 'floor should be saved'
|
91
|
-
assert_equal 0, person.reload.floors_count
|
92
|
-
|
93
|
-
model = update_record_from_params(model, :create, :number, :tenant, :number => '1', :tenant => person.id.to_s)
|
94
|
-
assert_equal 1, model.number
|
95
|
-
assert_equal person.id, model.tenant_id
|
96
|
-
assert_equal person, model.tenant
|
97
|
-
assert model.save
|
98
|
-
assert_equal 1, person.reload.floors_count
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_saving_belongs_to_select_for_has_many_reverse
|
102
|
-
person = Person.create
|
103
|
-
assert person.persisted?
|
104
|
-
assert_equal 0, person.buildings_count
|
105
|
-
|
106
|
-
model = update_record_from_params(Building.new, :create, :name, :owner, :name => 'Tower', :owner => person.id.to_s)
|
107
|
-
assert_equal 'Tower', model.name
|
108
|
-
assert_equal person.id, model.owner_id
|
109
|
-
assert_equal person, model.owner
|
110
|
-
assert model.save
|
111
|
-
assert_equal 1, person.reload.buildings_count
|
112
|
-
|
113
|
-
model = update_record_from_params(model, :update, :name, :owner, :name => 'Tower', :owner => '')
|
114
|
-
assert_equal 'Tower', model.name
|
115
|
-
assert_nil model.owner_id, 'owner should be cleared'
|
116
|
-
assert_nil model.owner, 'owner should be cleared'
|
117
|
-
assert_equal person.id, Building.find(model.id).owner_id, 'building should not be saved yet'
|
118
|
-
assert model.save
|
119
|
-
assert_nil Building.find(model.id).owner_id, 'building should be saved'
|
120
|
-
assert_equal 0, person.reload.buildings_count
|
121
|
-
|
122
|
-
model = update_record_from_params(model, :create, :name, :owner, :name => 'Tower', :owner => person.id.to_s)
|
123
|
-
assert_equal 'Tower', model.name
|
124
|
-
assert_equal person.id, model.owner_id
|
125
|
-
assert_equal person, model.owner
|
126
|
-
assert model.save
|
127
|
-
assert_equal 1, person.reload.buildings_count
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_saving_has_one_select
|
131
|
-
floor = Floor.create
|
132
|
-
assert floor.persisted?
|
133
|
-
|
134
|
-
model = update_record_from_params(Person.new, :create, :first_name, :floor, :first_name => 'Name', :floor => floor.id.to_s)
|
135
|
-
assert_equal 'Name', model.first_name
|
136
|
-
assert model.floor.present?
|
137
|
-
assert_equal floor.id, model.floor.id
|
138
|
-
assert_equal model, model.floor.tenant
|
139
|
-
assert_nil floor.reload.tenant_id, 'tenant_id should not be saved yet'
|
140
|
-
assert model.save
|
141
|
-
assert_equal model.id, floor.reload.tenant_id, 'tenant_id should be saved'
|
142
|
-
|
143
|
-
model = update_record_from_params(model, :update, :first_name, :floor, :first_name => 'First', :floor => '') { raise ActiveRecord::Rollback }
|
144
|
-
assert_equal 'First', model.first_name
|
145
|
-
assert_equal model.id, floor.reload.tenant_id, 'previous car should not be saved and nullified'
|
146
|
-
assert_nil model.floor, 'floor should be cleared'
|
147
|
-
|
148
|
-
model.reload
|
149
|
-
model = update_record_from_params(model, :update, :first_name, :floor, :first_name => 'First', :floor => '')
|
150
|
-
assert_equal 'First', model.first_name
|
151
|
-
assert_nil floor.reload.tenant_id, 'previous car should be saved and nullified'
|
152
|
-
assert_nil model.floor, 'floor should be cleared'
|
153
|
-
assert model.save
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_saving_has_one_through_select
|
157
|
-
building = Building.create
|
158
|
-
assert building.persisted?
|
159
|
-
assert building.floors.create(:number => 2)
|
160
|
-
|
161
|
-
model = update_record_from_params(Person.new, :create, :first_name, :home, :first_name => 'Name', :home => building.id.to_s)
|
162
|
-
assert_equal 'Name', model.first_name
|
163
|
-
assert model.home.present?
|
164
|
-
assert model.floor.present?
|
165
|
-
assert_equal [nil], building.floors.reload.map(&:tenant_id), 'floor should not be saved yet'
|
166
|
-
assert model.save
|
167
|
-
assert_equal model.id, model.floor.tenant_id, 'tenant_id should be saved'
|
168
|
-
assert_equal [nil, model.id], building.floors.reload.map(&:tenant_id)
|
169
|
-
|
170
|
-
model = update_record_from_params(model, :update, :first_name, :home, :first_name => 'First', :home => '') { raise ActiveRecord::Rollback }
|
171
|
-
assert_equal 'First', model.first_name
|
172
|
-
assert_equal [nil, model.id], building.floors.reload.map(&:tenant_id), 'previous floor should not be deleted'
|
173
|
-
assert_nil model.home, 'home should be cleared'
|
174
|
-
|
175
|
-
model.reload
|
176
|
-
model = update_record_from_params(model, :update, :first_name, :home, :first_name => 'First', :home => '')
|
177
|
-
assert_equal 'First', model.first_name
|
178
|
-
assert_equal [nil], building.floors.reload.map(&:tenant_id), 'previous floor should be deleted'
|
179
|
-
assert_nil model.home, 'home should be cleared'
|
180
|
-
assert model.save
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_saving_has_many_through_select
|
184
|
-
people = Array.new(2) { Person.create }
|
185
|
-
assert people.all?(&:persisted?)
|
186
|
-
|
187
|
-
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
|
188
|
-
assert_equal 'Tower', model.name
|
189
|
-
assert model.tenants.present?
|
190
|
-
assert_equal [nil] * 2, people.map { |p| p.respond_to?(:reload_floor) ? p.reload_floor : p.floor(true) }, 'floor should not be saved yet'
|
191
|
-
assert model.save
|
192
|
-
assert_equal [model.id] * 2, model.floors.map(&:building_id)
|
193
|
-
assert_equal [model.id] * 2, people.map { |p| (p.respond_to?(:reload_floor) ? p.reload_floor : p.floor(true)).building_id }, 'floor should be saved'
|
194
|
-
|
195
|
-
model = update_record_from_params(model, :update, :name, :tenants, :name => 'Skyscrapper', :tenants => ['']) { raise ActiveRecord::Rollback }
|
196
|
-
assert_equal 'Skyscrapper', model.name
|
197
|
-
assert_equal [model.id] * 2, people.map { |p| (p.respond_to?(:reload_floor) ? p.reload_floor : p.floor(true)).building_id }, 'previous floor should not be deleted'
|
198
|
-
assert model.tenants.empty?, 'tenants should be cleared'
|
199
|
-
|
200
|
-
model.reload
|
201
|
-
model = update_record_from_params(model, :update, :name, :tenants, :name => 'Skyscrapper', :tenants => [''])
|
202
|
-
assert_equal 'Skyscrapper', model.name
|
203
|
-
assert_equal [nil] * 2, people.map { |p| p.respond_to?(:reload_floor) ? p.reload_floor : p.floor(true) }, 'previous floor should be deleted'
|
204
|
-
assert model.tenants.empty?, 'tenants should be cleared'
|
205
|
-
assert model.save
|
206
|
-
end
|
207
|
-
|
208
|
-
def test_saving_has_many_crud_with_error
|
209
|
-
building = Building.create(:name => 'First')
|
210
|
-
key = Time.now.to_i.to_s
|
211
|
-
floors = {'0' => '', key => {:number => '', 'tenant' => '', :number_required => true}}
|
212
|
-
model = update_record_from_params(building, :create, :name, :floors, :name => 'First', :floors => floors)
|
213
|
-
assert_equal 'First', model.name
|
214
|
-
assert_equal 1, model.floors.size
|
215
|
-
assert model.floors.first.errors.present?
|
216
|
-
refute model.floors.first.persisted?
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_saving_has_many_crud_and_belongs_to_select
|
220
|
-
floor = Floor.create
|
221
|
-
people = Array.new(2) { Person.create }
|
222
|
-
key = Time.now.to_i.to_s
|
223
|
-
floors = {'0' => '', floor.id.to_s => {:number => '1', :tenant => '', :id => floor.id.to_s}, key => {:number => '2', 'tenant' => people.first.id.to_s}, key.succ => {:number => '4', 'tenant' => people.last.id.to_s}, key.succ.succ => {:number => '', 'tenant' => ''}}
|
224
|
-
model = update_record_from_params(Building.new, :create, :name, :floors, :name => 'First', :floors => floors)
|
225
|
-
assert_equal 'First', model.name
|
226
|
-
assert_equal 3, model.floors.size
|
227
|
-
assert_equal floor.id, model.floors.first.id
|
228
|
-
assert_equal [nil, *people.map(&:id)], model.floors.map(&:tenant_id)
|
229
|
-
assert_equal model, model.floors[0].building
|
230
|
-
assert model.save
|
231
|
-
assert_equal [1, 1], people.map(&:reload).map(&:floors_count)
|
232
|
-
assert_equal 3, model.reload.floors_count
|
233
|
-
|
234
|
-
last_floor = model.floors.last
|
235
|
-
floors = {'0' => '', floor.id.to_s => {:number => '1', :tenant => '', :id => floor.id.to_s}, last_floor.id.to_s => {:number => '4', 'tenant' => people.last.id.to_s, :id => last_floor.id.to_s}}
|
236
|
-
model = update_record_from_params(model, :create, :name, :floors, :name => 'First', :floors => floors)
|
237
|
-
assert_equal 'First', model.name
|
238
|
-
assert_equal 2, model.floors.size
|
239
|
-
assert_equal floor.id, model.floors.first.id
|
240
|
-
assert_equal [nil, last_floor.tenant_id], model.floors.map(&:tenant_id)
|
241
|
-
assert model.save
|
242
|
-
assert_equal 2, model.reload.floors_count
|
243
|
-
|
244
|
-
floors = {'0' => '', floor.id.to_s => {:number => '1', :tenant => '', :id => floor.id.to_s}}
|
245
|
-
new_model = update_record_from_params(Building.create, :create, :name, :floors, :name => 'Last', :floors => floors)
|
246
|
-
assert_equal 'Last', new_model.name
|
247
|
-
assert_equal 1, new_model.floors.size
|
248
|
-
assert_equal floor.id, new_model.floors.first.id
|
249
|
-
assert_equal [nil], new_model.floors.map(&:tenant_id)
|
250
|
-
assert new_model.save
|
251
|
-
assert_equal 1, new_model.reload.floors_count
|
252
|
-
assert_equal 1, model.reload.floors_count
|
253
|
-
|
254
|
-
model = update_record_from_params(model, :update, :name, :floors, :name => 'Tower', :floors => {'0' => ''})
|
255
|
-
assert_equal 'Tower', model.name
|
256
|
-
assert model.floors.blank?, 'floors should be cleared'
|
257
|
-
assert model.save
|
258
|
-
assert_equal 0, model.reload.floors_count
|
259
|
-
end
|
260
|
-
|
261
|
-
def test_saving_belongs_to_crud
|
262
|
-
person = Person.create
|
263
|
-
assert person.persisted?
|
264
|
-
|
265
|
-
model = update_record_from_params(Car.new, :create, :brand, :person, :brand => 'Ford', :person => {:first_name => 'First'})
|
266
|
-
assert_equal 'Ford', model.brand
|
267
|
-
assert model.person.present?
|
268
|
-
assert model.person.new_record?
|
269
|
-
assert model.save
|
270
|
-
assert model.person.persisted?
|
271
|
-
|
272
|
-
model = update_record_from_params(model, :update, :brand, :person, :brand => 'Ford', :person => {:first_name => 'First', :id => person.id.to_s})
|
273
|
-
assert_equal 'Ford', model.brand
|
274
|
-
assert model.person.present?
|
275
|
-
assert_equal person.id, model.person.id
|
276
|
-
assert model.save
|
277
|
-
|
278
|
-
model = update_record_from_params(model, :update, :brand, :person, :brand => 'Mercedes', :person => {:first_name => ''})
|
279
|
-
assert_equal 'Mercedes', model.brand
|
280
|
-
assert_nil model.person
|
281
|
-
assert model.save
|
282
|
-
end
|
283
|
-
|
284
|
-
def test_saving_belongs_to_crud_with_boolean
|
285
|
-
model = update_record_from_params(Car.new, :create, :brand, :person, :brand => 'Ford', :person => {:first_name => '', :adult => '0'})
|
286
|
-
assert_equal 'Ford', model.brand
|
287
|
-
assert model.save
|
288
|
-
assert_nil model.person
|
289
|
-
|
290
|
-
model = update_record_from_params(model, :update, :brand, :person, :brand => 'Mercedes', :person => {:first_name => '', :adult => '1'})
|
291
|
-
assert_equal 'Mercedes', model.brand
|
292
|
-
assert model.person.present?
|
293
|
-
assert model.save
|
294
|
-
assert model.person.persisted?
|
295
|
-
end
|
296
|
-
|
297
|
-
def test_saving_has_one_crud
|
298
|
-
car = Car.create :brand => 'Renault'
|
299
|
-
assert car.persisted?
|
300
|
-
|
301
|
-
model = update_record_from_params(Person.new, :create, :first_name, :car, :first_name => 'First', :car => {:brand => 'Ford'})
|
302
|
-
assert_equal 'First', model.first_name
|
303
|
-
assert model.car.present?
|
304
|
-
assert model.car.new_record?
|
305
|
-
assert_equal model, model.car.person
|
306
|
-
assert model.save
|
307
|
-
assert model.car.persisted?
|
308
|
-
|
309
|
-
model = update_record_from_params(Person.new, :create, :first_name, :car, :first_name => 'First', :car => {:brand => 'Peugeot', :id => car.id.to_s})
|
310
|
-
assert_equal 'First', model.first_name
|
311
|
-
assert model.car.present?
|
312
|
-
assert_equal car.id, model.car.id
|
313
|
-
assert_nil car.reload.person_id, 'person_id should not be saved yet'
|
314
|
-
assert_equal 'Peugeot', model.car.brand
|
315
|
-
assert_equal 'Renault', car.reload.brand, 'brand should not be saved yet'
|
316
|
-
assert model.save
|
317
|
-
assert_equal model.id, car.reload.person_id, 'person_id should be saved'
|
318
|
-
|
319
|
-
model = update_record_from_params(model, :update, :first_name, :car, :first_name => 'First', :car => {:brand => 'Mercedes', :id => car.id.to_s})
|
320
|
-
assert_equal 'First', model.first_name
|
321
|
-
assert model.car.present?
|
322
|
-
assert_equal 'Mercedes', model.car.brand
|
323
|
-
assert model.save
|
324
|
-
assert model.save_associated
|
325
|
-
assert_equal 'Mercedes', car.reload.brand, 'brand should be saved'
|
326
|
-
|
327
|
-
model = update_record_from_params(model, :update, :first_name, :car, :first_name => 'First', :car => {:brand => 'Mercedes'})
|
328
|
-
assert_equal 'First', model.first_name
|
329
|
-
assert_nil Car.where(:id => car.id).first, 'previous car should be deleted'
|
330
|
-
assert model.car.present?
|
331
|
-
refute_equal car.id, model.car.id
|
332
|
-
assert model.save
|
333
|
-
|
334
|
-
car = model.car.reload
|
335
|
-
model = update_record_from_params(model, :update, :first_name, :car, :first_name => 'Name', :car => {:brand => ''})
|
336
|
-
assert_equal 'Name', model.first_name
|
337
|
-
assert_nil Car.where(:id => car.id).first, 'previous car should be deleted'
|
338
|
-
assert_nil model.car
|
339
|
-
assert model.save
|
340
|
-
end
|
341
|
-
|
342
|
-
def test_saving_belongs_to_polymorphic_select
|
343
|
-
person = Person.create
|
344
|
-
assert person.persisted?
|
345
|
-
|
346
|
-
model = update_record_from_params(Contact.new, :create, :first_name, :contactable_type, :contactable, :first_name => 'First', :contactable_type => person.class.name, :contactable => person.id.to_s)
|
347
|
-
assert_equal 'First', model.first_name
|
348
|
-
assert_equal person.class.name, model.contactable_type
|
349
|
-
assert_equal person.id, model.contactable_id
|
350
|
-
assert_equal person, model.contactable
|
351
|
-
assert model.save
|
352
|
-
assert_equal 1, person.reload.contacts_count
|
353
|
-
|
354
|
-
model = update_record_from_params(model, :update, :first_name, :contactable_type, :contactable, :first_name => 'Name', :contactable_type => person.class.name, :contactable => '')
|
355
|
-
assert_equal 'Name', model.first_name
|
356
|
-
assert_nil model.contactable_id, 'contactable should be cleared'
|
357
|
-
assert_nil model.contactable, 'contactable should be cleared'
|
358
|
-
assert_equal person.id, Contact.find(model.id).contactable_id, 'contact should not be saved yet'
|
359
|
-
assert model.save
|
360
|
-
assert_nil Contact.find(model.id).contactable_id, 'contact should be saved'
|
361
|
-
assert_equal 0, person.reload.contacts_count
|
362
|
-
end
|
363
|
-
|
364
|
-
def test_saving_has_many_polymorphic_select
|
365
|
-
contacts = Array.new(2) { Contact.create }
|
366
|
-
|
367
|
-
model = update_record_from_params(Person.new, :create, :first_name, :contacts, :first_name => 'Me', :contacts => ['', contacts.first.id.to_s])
|
368
|
-
assert_equal 'Me', model.first_name
|
369
|
-
assert model.contacts.present?
|
370
|
-
assert model.save
|
371
|
-
assert_equal [model.id], model.contacts.map(&:contactable_id)
|
372
|
-
assert_equal model.id, contacts.first.reload.contactable.id, 'contactable should be saved'
|
373
|
-
assert_equal 1, model.reload.contacts_count
|
374
|
-
|
375
|
-
model = update_record_from_params(model, :update, :first_name, :contacts, :first_name => 'Name', :contacts => ['', *contacts.map { |c| c.id.to_s }])
|
376
|
-
assert_equal 'Name', model.first_name
|
377
|
-
assert model.contacts.present?
|
378
|
-
assert model.save
|
379
|
-
assert_equal [model.id] * 2, model.contacts.map(&:contactable_id)
|
380
|
-
assert_equal [model.id] * 2, contacts.map { |c| c.reload.contactable.id }, 'contactable should be saved'
|
381
|
-
assert_equal 2, model.reload.contacts_count
|
382
|
-
|
383
|
-
model = update_record_from_params(model, :update, :first_name, :contacts, :first_name => 'Name', :contacts => [''])
|
384
|
-
assert_equal 'Name', model.first_name
|
385
|
-
assert model.contacts.empty?
|
386
|
-
assert model.save
|
387
|
-
assert_equal [nil] * 2, contacts.map { |c| c.reload.contactable }, 'contactable should be saved'
|
388
|
-
assert_equal 0, model.reload.contacts_count
|
389
|
-
end
|
390
|
-
|
391
|
-
def test_saving_habtm_select
|
392
|
-
roles = Array.new(2) { Role.create }
|
393
|
-
|
394
|
-
model = update_record_from_params(Person.new, :create, :first_name, :roles, :first_name => 'Me', :roles => ['', roles.first.id.to_s])
|
395
|
-
assert_equal 'Me', model.first_name
|
396
|
-
assert model.roles.present?
|
397
|
-
assert model.save
|
398
|
-
assert_equal [[model.id]], model.roles.map(&:person_ids)
|
399
|
-
assert_equal [model.id], roles.first.reload.person_ids, 'role should be saved'
|
400
|
-
|
401
|
-
model = update_record_from_params(model, :update, :first_name, :roles, :first_name => 'Name', :roles => ['', *roles.map { |c| c.id.to_s }])
|
402
|
-
assert_equal 'Name', model.first_name
|
403
|
-
assert model.roles.present?
|
404
|
-
assert model.save
|
405
|
-
assert_equal [[model.id]] * 2, model.roles.map(&:person_ids)
|
406
|
-
assert_equal [[model.id]] * 2, roles.map { |r| r.reload.person_ids }, 'roles should be saved'
|
407
|
-
|
408
|
-
model = update_record_from_params(model, :update, :first_name, :roles, :first_name => 'Name', :roles => [''])
|
409
|
-
assert_equal 'Name', model.first_name
|
410
|
-
assert model.roles.empty?
|
411
|
-
assert model.save
|
412
|
-
assert roles.all? { |r| r.reload.people.empty? }, 'roles should be saved'
|
413
|
-
end
|
414
|
-
|
415
|
-
protected
|
416
|
-
|
417
|
-
def update_record_from_params(record, action, *columns, &block)
|
418
|
-
params = columns.extract_options!.with_indifferent_access
|
419
|
-
new_record = nil
|
420
|
-
record.class.transaction do
|
421
|
-
record = record.class.find(record.id) if record.persisted?
|
422
|
-
new_record = @controller.update_record_from_params(record, build_action_columns(record, action, columns), params)
|
423
|
-
yield if block_given?
|
424
|
-
ActiveScaffold::Registry.constraint_columns.clear
|
425
|
-
end
|
426
|
-
new_record
|
427
|
-
end
|
428
|
-
|
429
|
-
def build_action_columns(record, action, *columns)
|
430
|
-
config = @controller.active_scaffold_config_for(record.class)
|
431
|
-
config.build_action_columns(action, columns)
|
432
|
-
end
|
433
|
-
end
|
434
|
-
|
435
|
-
class Controller
|
436
|
-
def self.helper_method(*); end
|
437
|
-
|
438
|
-
def self.before_action(*); end
|
439
|
-
|
440
|
-
include ActiveScaffold::Core
|
441
|
-
include ActiveScaffold::Helpers::ControllerHelpers
|
442
|
-
include ActiveScaffold::AttributeParams
|
443
|
-
public :update_record_from_params
|
444
|
-
|
445
|
-
def logger
|
446
|
-
@logger ||= Logger.new(STDOUT)
|
447
|
-
end
|
448
|
-
|
449
|
-
def flash
|
450
|
-
@flash ||= ActionDispatch::Flash::FlashHash.new
|
451
|
-
end
|
452
|
-
|
453
|
-
def params_hash?(value)
|
454
|
-
value.is_a? Hash
|
455
|
-
end
|
456
|
-
|
457
|
-
def params_hash(value)
|
458
|
-
value
|
459
|
-
end
|
460
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'class_with_finder'
|
3
|
-
|
4
|
-
class CalculationTest < Minitest::Test
|
5
|
-
def setup
|
6
|
-
@buildings = []
|
7
|
-
@buildings << Building.create { |b| b.build_owner(:first_name => 'foo') }
|
8
|
-
@buildings << Building.create(:name => 'foo bar')
|
9
|
-
@buildings << Building.create
|
10
|
-
|
11
|
-
@klass = ClassWithFinder.new
|
12
|
-
@klass.active_scaffold_config.stubs(:model).returns(Building)
|
13
|
-
end
|
14
|
-
|
15
|
-
def teardown
|
16
|
-
@buildings.each(&:destroy).map(&:owner).compact.each(&:destroy)
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_calculation_with_conditions
|
20
|
-
@klass.expects(:conditions_for_collection).returns(['"buildings"."name" LIKE ? OR "people"."first_name" LIKE ?', '%foo%', '%foo%'])
|
21
|
-
@klass.expects(:active_scaffold_references).returns([:owner])
|
22
|
-
@klass.active_scaffold_config.expects(:list).returns(mock.tap { |m| m.stubs(:count_includes).returns(nil) })
|
23
|
-
|
24
|
-
column = mock.tap { |m| m.stubs(:field).returns('"buildings"."id"') }
|
25
|
-
@klass.active_scaffold_config.expects(:columns).returns(mock.tap { |m| m.stubs(:"[]").returns(column) })
|
26
|
-
query = @klass.send :calculate_query
|
27
|
-
assert_equal 2, query.count
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_calculation_without_conditions
|
31
|
-
@klass.stubs(:active_scaffold_references).returns([:owner])
|
32
|
-
@klass.active_scaffold_config.expects(:list).returns(mock.tap { |m| m.stubs(:count_includes).returns(nil) })
|
33
|
-
|
34
|
-
column = mock.tap { |m| m.stubs(:field).returns('"buildings"."id"') }
|
35
|
-
@klass.active_scaffold_config.expects(:columns).returns(mock.tap { |m| m.stubs(:"[]").returns(column) })
|
36
|
-
query = @klass.send :calculate_query
|
37
|
-
assert_equal Building.count, query.count
|
38
|
-
end
|
39
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ConfigurableClass
|
4
|
-
FOO = 'bar'.freeze
|
5
|
-
def foo; FOO end
|
6
|
-
|
7
|
-
def self.foo; FOO end
|
8
|
-
end
|
9
|
-
|
10
|
-
class IncludedClass < ConfigurableClass
|
11
|
-
include ActiveScaffold::Configurable
|
12
|
-
end
|
13
|
-
|
14
|
-
class ExtendedClass < ConfigurableClass
|
15
|
-
extend ActiveScaffold::Configurable
|
16
|
-
end
|
17
|
-
|
18
|
-
class ConfigurableTest < Minitest::Test
|
19
|
-
##
|
20
|
-
## constants and methods for tests to check against
|
21
|
-
##
|
22
|
-
def hello; 'world' end
|
23
|
-
HELLO = 'world'.freeze
|
24
|
-
|
25
|
-
def test_instance_configuration
|
26
|
-
configurable_class = IncludedClass.new
|
27
|
-
|
28
|
-
##
|
29
|
-
## sanity checks
|
30
|
-
##
|
31
|
-
# make sure the configure method is available
|
32
|
-
assert configurable_class.respond_to?(:configure)
|
33
|
-
# make sure real functions still work
|
34
|
-
assert_equal 'bar', configurable_class.foo
|
35
|
-
# make sure other functions still don't work
|
36
|
-
assert_raises NoMethodError do
|
37
|
-
configurable_class.i_do_not_exist
|
38
|
-
end
|
39
|
-
|
40
|
-
##
|
41
|
-
## test normal block behaviors
|
42
|
-
##
|
43
|
-
# functions
|
44
|
-
assert_equal hello, (configurable_class.configure { hello })
|
45
|
-
# variables
|
46
|
-
assert_equal configurable_class, (configurable_class.configure { configurable_class })
|
47
|
-
# constants
|
48
|
-
assert_equal ConfigurableTest::HELLO, (configurable_class.configure { ConfigurableTest::HELLO })
|
49
|
-
|
50
|
-
##
|
51
|
-
## test extra "localized" block behavior
|
52
|
-
##
|
53
|
-
# functions
|
54
|
-
assert_equal configurable_class.foo, (configurable_class.configure { foo })
|
55
|
-
# constants - not working
|
56
|
-
# assert_equal configurable_class.FOO, configurable_class.configure {FOO}
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_class_configuration
|
60
|
-
##
|
61
|
-
## sanity checks
|
62
|
-
##
|
63
|
-
# make sure the configure method is available
|
64
|
-
assert ExtendedClass.respond_to?(:configure)
|
65
|
-
# make sure real functions still work
|
66
|
-
assert_equal 'bar', ExtendedClass.foo
|
67
|
-
# make sure other functions still don't work
|
68
|
-
assert_raises NoMethodError do
|
69
|
-
ExtendedClass.i_do_not_exist
|
70
|
-
end
|
71
|
-
|
72
|
-
##
|
73
|
-
## test normal block behaviors
|
74
|
-
##
|
75
|
-
# functions
|
76
|
-
assert_equal hello, (ExtendedClass.configure { hello })
|
77
|
-
# variables
|
78
|
-
assert_equal ExtendedClass, (ExtendedClass.configure { ExtendedClass })
|
79
|
-
# constants
|
80
|
-
assert_equal ConfigurableTest::HELLO, (ExtendedClass.configure { ConfigurableTest::HELLO })
|
81
|
-
|
82
|
-
##
|
83
|
-
## test extra "localized" block behavior
|
84
|
-
##
|
85
|
-
# functions
|
86
|
-
assert_equal ExtendedClass.foo, (ExtendedClass.configure { foo })
|
87
|
-
# constants - not working
|
88
|
-
# assert_equal ExtendedClass.FOO, ExtendedClass.configure {FOO}
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_arity
|
92
|
-
# this is the main style
|
93
|
-
assert_equal 'foo', (ExtendedClass.configure { 'foo' })
|
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
|
96
|
-
end
|
97
|
-
end
|