active_scaffold-sequel 0.3.0
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.
- data/CHANGELOG +179 -0
- data/MIT-LICENSE +20 -0
- data/README +36 -0
- data/app/assets/images/active_scaffold/add.gif +0 -0
- data/app/assets/images/active_scaffold/arrow_down.gif +0 -0
- data/app/assets/images/active_scaffold/arrow_up.gif +0 -0
- data/app/assets/images/active_scaffold/close.gif +0 -0
- data/app/assets/images/active_scaffold/close_touch.png +0 -0
- data/app/assets/images/active_scaffold/config.png +0 -0
- data/app/assets/images/active_scaffold/cross.png +0 -0
- data/app/assets/images/active_scaffold/gears.png +0 -0
- data/app/assets/images/active_scaffold/indicator-small.gif +0 -0
- data/app/assets/images/active_scaffold/indicator.gif +0 -0
- data/app/assets/images/active_scaffold/magnifier.png +0 -0
- data/app/assets/javascripts/active_scaffold.js.erb +19 -0
- data/app/assets/javascripts/jquery/active_scaffold.js +1057 -0
- data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +24 -0
- data/app/assets/javascripts/jquery/draggable_lists.js +27 -0
- data/app/assets/javascripts/jquery/jquery.editinplace.js +743 -0
- data/app/assets/javascripts/jquery/tiny_mce_bridge.js +7 -0
- data/app/assets/javascripts/prototype/active_scaffold.js +1052 -0
- data/app/assets/javascripts/prototype/dhtml_history.js +870 -0
- data/app/assets/javascripts/prototype/form_enhancements.js +117 -0
- data/app/assets/javascripts/prototype/rico_corner.js +370 -0
- data/app/assets/javascripts/prototype/tiny_mce_bridge.js +7 -0
- data/app/assets/stylesheets/active_scaffold-ie.css +35 -0
- data/app/assets/stylesheets/active_scaffold.css.scss +14 -0
- data/app/assets/stylesheets/active_scaffold_colors.css.scss +395 -0
- data/app/assets/stylesheets/active_scaffold_extensions.css.erb +2 -0
- data/app/assets/stylesheets/active_scaffold_images.css.scss +43 -0
- data/app/assets/stylesheets/active_scaffold_layout.css +912 -0
- data/app/assets/stylesheets/blue-theme.css +74 -0
- data/config/locales/de.yml +114 -0
- data/config/locales/en.yml +118 -0
- data/config/locales/es.yml +120 -0
- data/config/locales/fr.yml +121 -0
- data/config/locales/hu.yml +74 -0
- data/config/locales/ja.yml +73 -0
- data/config/locales/ru.yml +123 -0
- data/frontends/default/views/_action_group.html.erb +24 -0
- data/frontends/default/views/_add_existing_form.html.erb +30 -0
- data/frontends/default/views/_base_form.html.erb +51 -0
- data/frontends/default/views/_create_form.html.erb +8 -0
- data/frontends/default/views/_create_form_on_list.html.erb +6 -0
- data/frontends/default/views/_field_search.html.erb +32 -0
- data/frontends/default/views/_form.html.erb +24 -0
- data/frontends/default/views/_form_association.html.erb +15 -0
- data/frontends/default/views/_form_association_footer.html.erb +47 -0
- data/frontends/default/views/_form_attribute.html.erb +20 -0
- data/frontends/default/views/_form_hidden_attribute.html.erb +2 -0
- data/frontends/default/views/_form_messages.html.erb +5 -0
- data/frontends/default/views/_horizontal_subform.html.erb +28 -0
- data/frontends/default/views/_horizontal_subform_footer.html.erb +0 -0
- data/frontends/default/views/_horizontal_subform_header.html.erb +11 -0
- data/frontends/default/views/_horizontal_subform_record.html.erb +38 -0
- data/frontends/default/views/_human_conditions.html.erb +1 -0
- data/frontends/default/views/_list.html.erb +18 -0
- data/frontends/default/views/_list_actions.html.erb +15 -0
- data/frontends/default/views/_list_calculations.html.erb +16 -0
- data/frontends/default/views/_list_column_headings.html.erb +12 -0
- data/frontends/default/views/_list_header.html.erb +10 -0
- data/frontends/default/views/_list_inline_adapter.html.erb +10 -0
- data/frontends/default/views/_list_messages.html.erb +30 -0
- data/frontends/default/views/_list_pagination.html.erb +11 -0
- data/frontends/default/views/_list_pagination_links.html.erb +9 -0
- data/frontends/default/views/_list_record.html.erb +14 -0
- data/frontends/default/views/_list_record_columns.html.erb +8 -0
- data/frontends/default/views/_list_with_header.html.erb +36 -0
- data/frontends/default/views/_messages.html.erb +10 -0
- data/frontends/default/views/_render_field.js.erb +20 -0
- data/frontends/default/views/_row.html.erb +6 -0
- data/frontends/default/views/_search.html.erb +34 -0
- data/frontends/default/views/_search_attribute.html.erb +10 -0
- data/frontends/default/views/_show.html.erb +8 -0
- data/frontends/default/views/_show_columns.html.erb +15 -0
- data/frontends/default/views/_update_actions.html.erb +9 -0
- data/frontends/default/views/_update_form.html.erb +6 -0
- data/frontends/default/views/_vertical_subform.html.erb +12 -0
- data/frontends/default/views/_vertical_subform_record.html.erb +38 -0
- data/frontends/default/views/action_confirmation.html.erb +13 -0
- data/frontends/default/views/add_existing.js.erb +18 -0
- data/frontends/default/views/add_existing_form.html.erb +5 -0
- data/frontends/default/views/create.html.erb +5 -0
- data/frontends/default/views/delete.html.erb +13 -0
- data/frontends/default/views/destroy.js.erb +24 -0
- data/frontends/default/views/edit_associated.js.erb +12 -0
- data/frontends/default/views/field_search.html.erb +5 -0
- data/frontends/default/views/form_messages.js.erb +1 -0
- data/frontends/default/views/list.html.erb +1 -0
- data/frontends/default/views/on_action_update.js.erb +13 -0
- data/frontends/default/views/on_create.js.erb +47 -0
- data/frontends/default/views/on_mark_all.js.erb +12 -0
- data/frontends/default/views/on_update.js.erb +31 -0
- data/frontends/default/views/refresh_list.js.erb +1 -0
- data/frontends/default/views/render_field.js.erb +1 -0
- data/frontends/default/views/search.html.erb +5 -0
- data/frontends/default/views/show.html.erb +5 -0
- data/frontends/default/views/update.html.erb +8 -0
- data/frontends/default/views/update_column.js.erb +16 -0
- data/frontends/default/views/update_row.js.erb +1 -0
- data/lib/active_scaffold/actions/common_search.rb +25 -0
- data/lib/active_scaffold/actions/core.rb +197 -0
- data/lib/active_scaffold/actions/create.rb +148 -0
- data/lib/active_scaffold/actions/delete.rb +76 -0
- data/lib/active_scaffold/actions/field_search.rb +82 -0
- data/lib/active_scaffold/actions/list.rb +196 -0
- data/lib/active_scaffold/actions/mark.rb +75 -0
- data/lib/active_scaffold/actions/nested.rb +245 -0
- data/lib/active_scaffold/actions/search.rb +48 -0
- data/lib/active_scaffold/actions/show.rb +61 -0
- data/lib/active_scaffold/actions/subform.rb +23 -0
- data/lib/active_scaffold/actions/update.rb +150 -0
- data/lib/active_scaffold/active_record_permissions.rb +136 -0
- data/lib/active_scaffold/attribute_params.rb +208 -0
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +39 -0
- data/lib/active_scaffold/bridges/ancestry.rb +5 -0
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +67 -0
- data/lib/active_scaffold/bridges/calendar_date_select.rb +24 -0
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +107 -0
- data/lib/active_scaffold/bridges/cancan.rb +15 -0
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +31 -0
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge_helpers.rb +10 -0
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +45 -0
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +17 -0
- data/lib/active_scaffold/bridges/carrierwave.rb +12 -0
- data/lib/active_scaffold/bridges/country_helper/country_helper_bridge.rb +358 -0
- data/lib/active_scaffold/bridges/country_helper.rb +9 -0
- data/lib/active_scaffold/bridges/date_picker/ext.rb +45 -0
- data/lib/active_scaffold/bridges/date_picker/helper.rb +180 -0
- data/lib/active_scaffold/bridges/date_picker.rb +23 -0
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +34 -0
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge_helpers.rb +10 -0
- data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +27 -0
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +16 -0
- data/lib/active_scaffold/bridges/dragonfly.rb +9 -0
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +48 -0
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +57 -0
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +34 -0
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +26 -0
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +43 -0
- data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +9 -0
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +15 -0
- data/lib/active_scaffold/bridges/file_column.rb +11 -0
- data/lib/active_scaffold/bridges/paperclip/form_ui.rb +27 -0
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +16 -0
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +36 -0
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +24 -0
- data/lib/active_scaffold/bridges/paperclip.rb +12 -0
- data/lib/active_scaffold/bridges/record_select/helpers.rb +86 -0
- data/lib/active_scaffold/bridges/record_select.rb +11 -0
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +20 -0
- data/lib/active_scaffold/bridges/semantic_attributes.rb +5 -0
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +209 -0
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +46 -0
- data/lib/active_scaffold/bridges/tiny_mce.rb +17 -0
- data/lib/active_scaffold/bridges.rb +61 -0
- data/lib/active_scaffold/config/base.rb +71 -0
- data/lib/active_scaffold/config/core.rb +219 -0
- data/lib/active_scaffold/config/create.rb +44 -0
- data/lib/active_scaffold/config/delete.rb +33 -0
- data/lib/active_scaffold/config/field_search.rb +76 -0
- data/lib/active_scaffold/config/form.rb +48 -0
- data/lib/active_scaffold/config/list.rb +196 -0
- data/lib/active_scaffold/config/mark.rb +35 -0
- data/lib/active_scaffold/config/nested.rb +42 -0
- data/lib/active_scaffold/config/search.rb +73 -0
- data/lib/active_scaffold/config/show.rb +32 -0
- data/lib/active_scaffold/config/subform.rb +35 -0
- data/lib/active_scaffold/config/update.rb +41 -0
- data/lib/active_scaffold/configurable.rb +29 -0
- data/lib/active_scaffold/constraints.rb +170 -0
- data/lib/active_scaffold/data_structures/action_columns.rb +140 -0
- data/lib/active_scaffold/data_structures/action_link.rb +179 -0
- data/lib/active_scaffold/data_structures/action_links.rb +185 -0
- data/lib/active_scaffold/data_structures/actions.rb +45 -0
- data/lib/active_scaffold/data_structures/bridge.rb +22 -0
- data/lib/active_scaffold/data_structures/column.rb +389 -0
- data/lib/active_scaffold/data_structures/columns.rb +75 -0
- data/lib/active_scaffold/data_structures/error_message.rb +24 -0
- data/lib/active_scaffold/data_structures/nested_info.rb +130 -0
- data/lib/active_scaffold/data_structures/set.rb +57 -0
- data/lib/active_scaffold/data_structures/sorting.rb +172 -0
- data/lib/active_scaffold/engine.rb +4 -0
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +22 -0
- data/lib/active_scaffold/extensions/action_view_rendering.rb +115 -0
- data/lib/active_scaffold/extensions/active_record_offset.rb +12 -0
- data/lib/active_scaffold/extensions/array.rb +7 -0
- data/lib/active_scaffold/extensions/cache_association.rb +16 -0
- data/lib/active_scaffold/extensions/localize.rb +10 -0
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +12 -0
- data/lib/active_scaffold/extensions/nil_id_in_url_params.rb +7 -0
- data/lib/active_scaffold/extensions/paginator_extensions.rb +26 -0
- data/lib/active_scaffold/extensions/routing_mapper.rb +48 -0
- data/lib/active_scaffold/extensions/to_label.rb +8 -0
- data/lib/active_scaffold/extensions/unsaved_associated.rb +60 -0
- data/lib/active_scaffold/extensions/unsaved_record.rb +20 -0
- data/lib/active_scaffold/extensions/usa_state.rb +46 -0
- data/lib/active_scaffold/finder.rb +372 -0
- data/lib/active_scaffold/helpers/association_helpers.rb +48 -0
- data/lib/active_scaffold/helpers/controller_helpers.rb +88 -0
- data/lib/active_scaffold/helpers/form_column_helpers.rb +321 -0
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +62 -0
- data/lib/active_scaffold/helpers/id_helpers.rb +127 -0
- data/lib/active_scaffold/helpers/list_column_helpers.rb +340 -0
- data/lib/active_scaffold/helpers/pagination_helpers.rb +55 -0
- data/lib/active_scaffold/helpers/search_column_helpers.rb +267 -0
- data/lib/active_scaffold/helpers/show_column_helpers.rb +50 -0
- data/lib/active_scaffold/helpers/view_helpers.rb +342 -0
- data/lib/active_scaffold/marked_model.rb +38 -0
- data/lib/active_scaffold/paginator.rb +136 -0
- data/lib/active_scaffold/responds_to_parent.rb +70 -0
- data/lib/active_scaffold/version.rb +9 -0
- data/lib/active_scaffold.rb +368 -0
- data/lib/active_scaffold_env.rb +11 -0
- data/lib/generators/active_scaffold/USAGE +29 -0
- data/lib/generators/active_scaffold/active_scaffold_generator.rb +20 -0
- data/lib/generators/active_scaffold_controller/USAGE +19 -0
- data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +29 -0
- data/lib/generators/active_scaffold_controller/templates/controller.rb +4 -0
- data/lib/generators/active_scaffold_controller/templates/helper.rb +2 -0
- data/public/blank.html +33 -0
- data/shoulda_macros/macros.rb +136 -0
- data/test/bridges/active_scaffold_dependent_protect_test.rb +34 -0
- data/test/bridges/bridge_test.rb +90 -0
- data/test/bridges/company.rb +81 -0
- data/test/bridges/paperclip_test.rb +68 -0
- data/test/bridges/tiny_mce_test.rb +27 -0
- data/test/bridges/unobtrusive_date_picker_test.rb +49 -0
- data/test/bridges/validation_reflection_test.rb +57 -0
- data/test/config/base_test.rb +15 -0
- data/test/config/core_test.rb +58 -0
- data/test/config/create_test.rb +58 -0
- data/test/config/delete_test.rb +33 -0
- data/test/config/field_search_test.rb +47 -0
- data/test/config/list_test.rb +129 -0
- data/test/config/nested_test.rb +62 -0
- data/test/config/search_test.rb +60 -0
- data/test/config/show_test.rb +43 -0
- data/test/config/subform_test.rb +17 -0
- data/test/config/update_test.rb +40 -0
- data/test/const_mocker.rb +36 -0
- data/test/data_structures/action_columns_test.rb +113 -0
- data/test/data_structures/action_link_test.rb +78 -0
- data/test/data_structures/action_links_test.rb +78 -0
- data/test/data_structures/actions_test.rb +25 -0
- data/test/data_structures/association_column_test.rb +42 -0
- data/test/data_structures/column_test.rb +185 -0
- data/test/data_structures/columns_test.rb +69 -0
- data/test/data_structures/error_message_test.rb +28 -0
- data/test/data_structures/set_test.rb +86 -0
- data/test/data_structures/sorting_test.rb +126 -0
- data/test/data_structures/standard_column_test.rb +24 -0
- data/test/data_structures/virtual_column_test.rb +23 -0
- data/test/extensions/active_record_test.rb +45 -0
- data/test/extensions/array_test.rb +12 -0
- data/test/helpers/form_column_helpers_test.rb +31 -0
- data/test/helpers/list_column_helpers_test.rb +42 -0
- data/test/helpers/pagination_helpers_test.rb +59 -0
- data/test/misc/active_record_permissions_test.rb +154 -0
- data/test/misc/attribute_params_test.rb +146 -0
- data/test/misc/configurable_test.rb +96 -0
- data/test/misc/constraints_test.rb +193 -0
- data/test/misc/finder_test.rb +92 -0
- data/test/misc/lang_test.rb +11 -0
- data/test/mock_app/app/controllers/application_controller.rb +10 -0
- data/test/mock_app/app/helpers/application_helper.rb +3 -0
- data/test/mock_app/config/boot.rb +110 -0
- data/test/mock_app/config/database.yml +16 -0
- data/test/mock_app/config/environment.rb +43 -0
- data/test/mock_app/config/environments/development.rb +17 -0
- data/test/mock_app/config/environments/production.rb +28 -0
- data/test/mock_app/config/environments/test.rb +28 -0
- data/test/mock_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/mock_app/config/initializers/inflections.rb +10 -0
- data/test/mock_app/config/initializers/mime_types.rb +5 -0
- data/test/mock_app/config/initializers/new_rails_defaults.rb +19 -0
- data/test/mock_app/config/initializers/session_store.rb +15 -0
- data/test/mock_app/config/locales/en.yml +5 -0
- data/test/mock_app/config/routes.rb +43 -0
- data/test/mock_app/db/test.sqlite3 +1 -0
- data/test/mock_app/public/blank.html +33 -0
- data/test/mock_app/public/images/active_scaffold/DO_NOT_EDIT +2 -0
- data/test/mock_app/public/images/active_scaffold/default/add.gif +0 -0
- data/test/mock_app/public/images/active_scaffold/default/arrow_down.gif +0 -0
- data/test/mock_app/public/images/active_scaffold/default/arrow_up.gif +0 -0
- data/test/mock_app/public/images/active_scaffold/default/close.gif +0 -0
- data/test/mock_app/public/images/active_scaffold/default/cross.png +0 -0
- data/test/mock_app/public/images/active_scaffold/default/indicator-small.gif +0 -0
- data/test/mock_app/public/images/active_scaffold/default/indicator.gif +0 -0
- data/test/mock_app/public/images/active_scaffold/default/magnifier.png +0 -0
- data/test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
- data/test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js +532 -0
- data/test/mock_app/public/javascripts/active_scaffold/default/dhtml_history.js +867 -0
- data/test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js +117 -0
- data/test/mock_app/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
- data/test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
- data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet-ie.css +35 -0
- data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +848 -0
- data/test/model_stub.rb +55 -0
- data/test/run_all.rb +8 -0
- data/test/test_helper.rb +39 -0
- data/vendor/assets/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/vendor/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/vendor/assets/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/vendor/assets/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/vendor/assets/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/vendor/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/vendor/assets/images/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/images/ui-icons_228ef1_256x240.png +0 -0
- data/vendor/assets/images/ui-icons_ef8c08_256x240.png +0 -0
- data/vendor/assets/images/ui-icons_ffd27a_256x240.png +0 -0
- data/vendor/assets/images/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +1276 -0
- data/vendor/assets/stylesheets/jquery-ui.css +568 -0
- metadata +502 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
require File.join(File.dirname(__FILE__), '../model_stub')
|
|
3
|
+
|
|
4
|
+
class AssociationColumnTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@association_column = ActiveScaffold::DataStructures::Column.new('other_model', ModelStub)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_virtuality
|
|
10
|
+
assert @association_column.association
|
|
11
|
+
assert !@association_column.virtual?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_sorting
|
|
15
|
+
# sorting on association columns is method-based
|
|
16
|
+
hash = {:method => "other_model.to_s"}
|
|
17
|
+
assert_equal hash, @association_column.sort
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_searching
|
|
21
|
+
# by default searching on association columns uses primary key
|
|
22
|
+
assert @association_column.searchable?
|
|
23
|
+
assert_equal '"model_stubs"."id"', @association_column.search_sql
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_association
|
|
27
|
+
assert @association_column.association.is_a?(ActiveRecord::Reflection::AssociationReflection)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_includes
|
|
31
|
+
assert_equal [:other_model], @association_column.includes
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_plurality
|
|
35
|
+
assert @association_column.singular_association?
|
|
36
|
+
assert !@association_column.plural_association?
|
|
37
|
+
|
|
38
|
+
plural_association_column = ActiveScaffold::DataStructures::Column.new('other_models', ModelStub)
|
|
39
|
+
assert plural_association_column.plural_association?
|
|
40
|
+
assert !plural_association_column.singular_association?
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class ColumnTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@column = ActiveScaffold::DataStructures::Column.new(:a, ModelStub)
|
|
6
|
+
@association_col = ActiveScaffold::DataStructures::Column.new(:b, ModelStub)
|
|
7
|
+
@association_col.stubs(:polymorphic_association?).returns(false)
|
|
8
|
+
@association_col.instance_variable_set(:@association, true)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_column
|
|
12
|
+
assert @column.column.is_a?(ActiveRecord::ConnectionAdapters::Column)
|
|
13
|
+
assert @column.column.name == 'a'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_basic_properties
|
|
17
|
+
# test that it was set during initialization
|
|
18
|
+
assert_equal @column.name, :a
|
|
19
|
+
# test that we can change it
|
|
20
|
+
@column.name = :b
|
|
21
|
+
assert_equal @column.name, :b
|
|
22
|
+
|
|
23
|
+
# label
|
|
24
|
+
@column.label = 'foo'
|
|
25
|
+
assert_equal 'foo', @column.label
|
|
26
|
+
|
|
27
|
+
# description
|
|
28
|
+
@column.description = 'hello world'
|
|
29
|
+
assert_equal 'hello world', @column.description
|
|
30
|
+
|
|
31
|
+
# css class
|
|
32
|
+
@column.css_class = 'style_me'
|
|
33
|
+
assert_equal 'style_me', @column.css_class
|
|
34
|
+
|
|
35
|
+
# required
|
|
36
|
+
assert !@column.required?, 'default is false'
|
|
37
|
+
@column.required = true
|
|
38
|
+
assert @column.required?, 'can be changed'
|
|
39
|
+
|
|
40
|
+
# calculation
|
|
41
|
+
assert !@column.calculation?, 'default is nil'
|
|
42
|
+
@column.calculate = :sum
|
|
43
|
+
assert @column.calculation?, 'can be changed'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_field
|
|
47
|
+
assert_equal '"model_stubs"."a"', @column.send(:field)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_table
|
|
51
|
+
assert_equal 'model_stubs', @column.send(:table)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_equality
|
|
55
|
+
# create a separate columns object, and make sure it's not ==
|
|
56
|
+
columns = ActiveScaffold::DataStructures::Columns.new(ModelStub, :a, :b)
|
|
57
|
+
assert columns != @column
|
|
58
|
+
|
|
59
|
+
# create a separate action_columns object, and make sure it's not ==
|
|
60
|
+
columns = ActiveScaffold::DataStructures::ActionColumns.new(:a, :b)
|
|
61
|
+
assert columns != @column
|
|
62
|
+
|
|
63
|
+
# identity
|
|
64
|
+
assert @column == @column
|
|
65
|
+
|
|
66
|
+
# string comparison
|
|
67
|
+
assert @column == 'a'
|
|
68
|
+
assert @column != 'fake'
|
|
69
|
+
|
|
70
|
+
# symbol comparison
|
|
71
|
+
assert @column == :a
|
|
72
|
+
assert @column != :fake
|
|
73
|
+
|
|
74
|
+
# comparison with different object of same type
|
|
75
|
+
column2 = ActiveScaffold::DataStructures::Column.new(:fake, ModelStub)
|
|
76
|
+
assert @column != column2
|
|
77
|
+
column2.name = 'a'
|
|
78
|
+
assert @column == column2
|
|
79
|
+
|
|
80
|
+
# special comparisons
|
|
81
|
+
assert @column != nil
|
|
82
|
+
assert @column != ''
|
|
83
|
+
assert @column != 0
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_ui
|
|
87
|
+
assert_nil @column.form_ui
|
|
88
|
+
assert_nil @column.list_ui
|
|
89
|
+
assert_nil @column.search_ui
|
|
90
|
+
assert_equal :select, @association_col.search_ui
|
|
91
|
+
|
|
92
|
+
@column.form_ui = :calendar
|
|
93
|
+
assert_equal :calendar, @column.form_ui
|
|
94
|
+
assert_equal :calendar, @column.list_ui
|
|
95
|
+
assert_equal :calendar, @column.search_ui
|
|
96
|
+
|
|
97
|
+
@association_col.form_ui = :record_select
|
|
98
|
+
assert_equal :record_select, @association_col.form_ui
|
|
99
|
+
assert_equal :record_select, @association_col.search_ui
|
|
100
|
+
|
|
101
|
+
@column.search_ui = :record_select
|
|
102
|
+
@column.list_ui = :checkbox
|
|
103
|
+
assert_equal :calendar, @column.form_ui
|
|
104
|
+
assert_equal :checkbox, @column.list_ui
|
|
105
|
+
assert_equal :record_select, @column.search_ui
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def test_searchable
|
|
109
|
+
@column.search_sql = nil
|
|
110
|
+
assert !@column.searchable?
|
|
111
|
+
@column.search_sql = true
|
|
112
|
+
assert @column.searchable?
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_sortable
|
|
116
|
+
@column.sort = nil
|
|
117
|
+
assert !@column.sortable?
|
|
118
|
+
@column.sort = true
|
|
119
|
+
assert @column.sortable?
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def test_custom_search
|
|
123
|
+
@column.search_sql = true
|
|
124
|
+
assert_equal '"model_stubs"."a"', @column.search_sql
|
|
125
|
+
@column.search_sql = 'foobar'
|
|
126
|
+
assert_equal 'foobar', @column.search_sql
|
|
127
|
+
assert @column.searchable?
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def test_custom_sort
|
|
131
|
+
@column.sort = true
|
|
132
|
+
hash = {:sql => '"model_stubs"."a"'}
|
|
133
|
+
assert_equal hash, @column.sort
|
|
134
|
+
@column.sort_by :sql => 'foobar'
|
|
135
|
+
hash = {:sql => 'foobar'}
|
|
136
|
+
assert_equal hash, @column.sort
|
|
137
|
+
|
|
138
|
+
some_proc = proc {'foobar'}
|
|
139
|
+
@column.sort_by :method => some_proc
|
|
140
|
+
hash = {:method => some_proc}
|
|
141
|
+
assert_equal hash, @column.sort
|
|
142
|
+
assert @column.sortable?
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_custom_sort__should_assert_keys
|
|
146
|
+
assert_raise(ArgumentError) { @column.sort_by :proc => "invalid config" }
|
|
147
|
+
assert_raise(ArgumentError) { @column.sort={:proc => "invalid config" } }
|
|
148
|
+
assert_nothing_raised(ArgumentError) {@column.sort_by :method => "method" }
|
|
149
|
+
assert_nothing_raised(ArgumentError) {@column.sort_by :sql => "method" }
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def test_config_block
|
|
153
|
+
@column.configure do |config|
|
|
154
|
+
# we can use the config object
|
|
155
|
+
config.name = 'foo'
|
|
156
|
+
# or not
|
|
157
|
+
self.label = 'hello'
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
assert_equal 'foo', @column.name
|
|
161
|
+
assert_equal 'hello', @column.label
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def test_action_link
|
|
165
|
+
link = ActiveScaffold::DataStructures::ActionLink.new('foo/bar')
|
|
166
|
+
@column.set_link link
|
|
167
|
+
assert_equal link, @column.link
|
|
168
|
+
|
|
169
|
+
@column.set_link 'hello_world'
|
|
170
|
+
assert_equal 'hello_world', @column.link.action
|
|
171
|
+
assert_equal @column.label, @column.link.label
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def test_includes
|
|
175
|
+
assert_equal [], @column.includes
|
|
176
|
+
|
|
177
|
+
# make sure that when a non-array comes in, an array comes out
|
|
178
|
+
@column.includes = :column_name
|
|
179
|
+
assert_equal([:column_name], @column.includes)
|
|
180
|
+
|
|
181
|
+
# make sure that when a non-array comes in, an array comes out
|
|
182
|
+
@column.includes = [:column_name]
|
|
183
|
+
assert_equal([:column_name], @column.includes)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
# require 'test/model_stub'
|
|
3
|
+
|
|
4
|
+
class ColumnsTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@columns = ActiveScaffold::DataStructures::Columns.new(ModelStub, :a, :b)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_initialization
|
|
10
|
+
assert_equal ModelStub, @columns.active_record_class
|
|
11
|
+
|
|
12
|
+
assert @columns.include?('a'), 'checking via string'
|
|
13
|
+
assert @columns.include?(:b), 'checking via symbol'
|
|
14
|
+
assert !@columns.include?(:c)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_add
|
|
18
|
+
assert !@columns.include?(:c)
|
|
19
|
+
@columns.add 'c'
|
|
20
|
+
assert @columns.include?('c')
|
|
21
|
+
|
|
22
|
+
# test the alias
|
|
23
|
+
assert !@columns.include?(:d)
|
|
24
|
+
@columns << :d
|
|
25
|
+
assert @columns.include?(:d)
|
|
26
|
+
|
|
27
|
+
# try adding an array of columns
|
|
28
|
+
assert !@columns.include?(:f)
|
|
29
|
+
@columns.add [:f, :g]
|
|
30
|
+
assert @columns.include?(:f)
|
|
31
|
+
assert @columns.include?(:g)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_finders
|
|
35
|
+
# test some basic assumptions before testing the finders
|
|
36
|
+
assert @columns.include?(:a)
|
|
37
|
+
assert @columns[:a].is_a?(ActiveScaffold::DataStructures::Column)
|
|
38
|
+
|
|
39
|
+
# test the single finders
|
|
40
|
+
assert @columns.find_by_name(:a).name == :a
|
|
41
|
+
assert @columns[:b].name == :b
|
|
42
|
+
|
|
43
|
+
# test the collection finders
|
|
44
|
+
found = @columns.find_by_names(:a, :b)
|
|
45
|
+
assert found.any? {|c| c.name == :a}
|
|
46
|
+
assert found.any? {|c| c.name == :b}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_each
|
|
50
|
+
@columns.each do |column|
|
|
51
|
+
assert [:a, :b].include?(column.name)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_block_config
|
|
56
|
+
assert !@columns.include?(:d)
|
|
57
|
+
assert !@columns.include?(:c)
|
|
58
|
+
|
|
59
|
+
@columns.configure do |config|
|
|
60
|
+
# test that we can use the config object
|
|
61
|
+
config << :d
|
|
62
|
+
# but test that we don't have to
|
|
63
|
+
add 'c'
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
assert @columns.include?(:d)
|
|
67
|
+
assert @columns.include?(:c)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class ErrorMessageTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@error = ActiveScaffold::DataStructures::ErrorMessage.new 'foo'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_attributes
|
|
9
|
+
assert @error.public_attributes.has_key?(:error)
|
|
10
|
+
assert_equal 'foo', @error.public_attributes[:error]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_xml
|
|
14
|
+
xml = Hash.from_xml(@error.to_xml)
|
|
15
|
+
assert xml.has_key?('errors')
|
|
16
|
+
assert xml['errors'].has_key?('error')
|
|
17
|
+
assert_equal 'foo', xml['errors']['error']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_yaml
|
|
21
|
+
yml = nil
|
|
22
|
+
assert_nothing_raised do
|
|
23
|
+
yml = YAML.load(@error.to_yaml)
|
|
24
|
+
end
|
|
25
|
+
assert yml.has_key?(:error)
|
|
26
|
+
assert_equal 'foo', yml[:error]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
# require 'test/model_stub'
|
|
3
|
+
|
|
4
|
+
class SetTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@items = ActiveScaffold::DataStructures::Set.new(:a, :b)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_initialization
|
|
10
|
+
assert @items.include?(:a)
|
|
11
|
+
assert @items.include?(:b)
|
|
12
|
+
assert !@items.include?(:c)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_exclude
|
|
16
|
+
# exclude with a symbol
|
|
17
|
+
assert @items.include?(:b)
|
|
18
|
+
@items.exclude :b
|
|
19
|
+
assert !@items.include?(:b)
|
|
20
|
+
|
|
21
|
+
# exclude with a string
|
|
22
|
+
assert @items.include?(:a)
|
|
23
|
+
@items.exclude 'a'
|
|
24
|
+
assert !@items.include?(:a)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_exclude_array
|
|
28
|
+
# exclude with a symbol
|
|
29
|
+
assert @items.include?(:b)
|
|
30
|
+
@items.exclude [:a, :b]
|
|
31
|
+
assert !@items.include?(:b)
|
|
32
|
+
assert !@items.include?(:a)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_remove
|
|
36
|
+
assert @items.include?(:a)
|
|
37
|
+
@items.remove 'a'
|
|
38
|
+
assert !@items.include?(:a)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_add
|
|
42
|
+
# try adding a simple column using a string
|
|
43
|
+
assert !@items.include?(:c)
|
|
44
|
+
@items.add 'c'
|
|
45
|
+
assert @items.include?(:c)
|
|
46
|
+
|
|
47
|
+
# try adding a simple column using a symbol
|
|
48
|
+
assert !@items.include?(:d)
|
|
49
|
+
@items.add :d
|
|
50
|
+
assert @items.include?(:d)
|
|
51
|
+
|
|
52
|
+
# test that << also adds
|
|
53
|
+
assert !@items.include?(:e)
|
|
54
|
+
@items << "e"
|
|
55
|
+
assert @items.include?(:e)
|
|
56
|
+
|
|
57
|
+
# try adding an array of columns
|
|
58
|
+
assert !@items.include?(:f)
|
|
59
|
+
@items.add [:f, :g]
|
|
60
|
+
assert @items.include?(:f)
|
|
61
|
+
assert @items.include?(:g)
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_length
|
|
66
|
+
assert_equal 2, @items.length
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_block_config
|
|
70
|
+
@items.configure do |config|
|
|
71
|
+
# we may use the config argument
|
|
72
|
+
config.add :c
|
|
73
|
+
# or we may not
|
|
74
|
+
exclude :b
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
assert @items.include?(:c)
|
|
78
|
+
assert !@items.include?(:b)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_include
|
|
82
|
+
assert @items.include?(:a)
|
|
83
|
+
assert @items.include?(:b)
|
|
84
|
+
assert !@items.include?(:d)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
# require 'test/model_stub'
|
|
3
|
+
|
|
4
|
+
class SortingTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@columns = ActiveScaffold::DataStructures::Columns.new(ModelStub, :a, :b, :c, :d)
|
|
7
|
+
@sorting = ActiveScaffold::DataStructures::Sorting.new(@columns)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_add
|
|
11
|
+
@sorting.add :a, 'ASC'
|
|
12
|
+
# test adding by symbol
|
|
13
|
+
assert @sorting.sorts_on?(:a)
|
|
14
|
+
# test adding an uppercase string direction
|
|
15
|
+
assert_equal 'ASC', @sorting.direction_of(:a)
|
|
16
|
+
|
|
17
|
+
@sorting.add 'b', :ASC
|
|
18
|
+
# test adding by string
|
|
19
|
+
assert @sorting.sorts_on?(:b)
|
|
20
|
+
# test adding an uppercase symbol direction
|
|
21
|
+
assert_equal 'ASC', @sorting.direction_of(:b)
|
|
22
|
+
|
|
23
|
+
@sorting.add @columns[:c], 'desc'
|
|
24
|
+
# test adding by object
|
|
25
|
+
assert @sorting.sorts_on?(:c)
|
|
26
|
+
# test adding a lowercase string direction
|
|
27
|
+
assert_equal 'DESC', @sorting.direction_of(:c)
|
|
28
|
+
|
|
29
|
+
@sorting << [:d, :desc]
|
|
30
|
+
# testing adding with the alias
|
|
31
|
+
assert @sorting.sorts_on?(:d)
|
|
32
|
+
assert_equal 'DESC', @sorting.direction_of(:d)
|
|
33
|
+
|
|
34
|
+
@sorting.clear
|
|
35
|
+
|
|
36
|
+
# test adding without a direction (test default)
|
|
37
|
+
@sorting.add :a
|
|
38
|
+
assert_equal 'ASC', @sorting.direction_of(:a)
|
|
39
|
+
|
|
40
|
+
# test adding a bad column
|
|
41
|
+
assert_raises ArgumentError do
|
|
42
|
+
@sorting.add :foo
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# test adding a bad direction
|
|
46
|
+
assert_raises ArgumentError do
|
|
47
|
+
@sorting.add :b, :FOO
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_set
|
|
52
|
+
@sorting.add :a, 'ASC'
|
|
53
|
+
assert @sorting.sorts_on?(:a)
|
|
54
|
+
|
|
55
|
+
@sorting.set :b, 'DESC'
|
|
56
|
+
assert @sorting.instance_variable_get('@clauses').size == 1
|
|
57
|
+
assert !@sorting.sorts_on?(:a)
|
|
58
|
+
assert @sorting.sorts_on?(:b)
|
|
59
|
+
assert_equal 'DESC', @sorting.direction_of(:b)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_sorts_on
|
|
63
|
+
@sorting.add :a
|
|
64
|
+
@sorting.add :b
|
|
65
|
+
|
|
66
|
+
assert @sorting.sorts_on?(:a)
|
|
67
|
+
assert @sorting.sorts_on?(:b)
|
|
68
|
+
assert !@sorting.sorts_on?(:c)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_direction_of
|
|
72
|
+
@sorting.add :a, 'ASC'
|
|
73
|
+
@sorting.add :b, :DESC
|
|
74
|
+
|
|
75
|
+
assert_equal 'ASC', @sorting.direction_of(:a)
|
|
76
|
+
assert_equal 'DESC', @sorting.direction_of(:b)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_sorts_by_method
|
|
80
|
+
@columns[:a].sort_by :method => proc{0}
|
|
81
|
+
|
|
82
|
+
#test pure method sorting: true
|
|
83
|
+
@sorting.add :a
|
|
84
|
+
assert @sorting.sorts_by_method?
|
|
85
|
+
|
|
86
|
+
#test mixed sql/method sorting: raise error
|
|
87
|
+
assert_raise ArgumentError do
|
|
88
|
+
@sorting.add :b
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
#test pure sql sorting: false
|
|
92
|
+
@sorting.clear
|
|
93
|
+
@sorting.add :b
|
|
94
|
+
assert !@sorting.sorts_by_method?
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def test_build_order_clause
|
|
98
|
+
assert @sorting.clause.nil?
|
|
99
|
+
|
|
100
|
+
@sorting << [:a, 'desc']
|
|
101
|
+
@sorting << [:b, 'asc']
|
|
102
|
+
|
|
103
|
+
assert_equal '"model_stubs"."a" DESC, "model_stubs"."b" ASC', @sorting.clause
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def test_set_default_sorting_with_simple_default_scope
|
|
107
|
+
model_stub_with_default_scope = ModelStub.clone
|
|
108
|
+
model_stub_with_default_scope.class_eval { default_scope :order => 'a' }
|
|
109
|
+
@sorting.set_default_sorting model_stub_with_default_scope
|
|
110
|
+
|
|
111
|
+
assert @sorting.sorts_on?(:a)
|
|
112
|
+
assert_equal 'ASC', @sorting.direction_of(:a)
|
|
113
|
+
assert_nil @sorting.clause
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def test_set_default_sorting_with_complex_default_scope
|
|
117
|
+
model_stub_with_default_scope = ModelStub.clone
|
|
118
|
+
model_stub_with_default_scope.class_eval { default_scope :order => 'a DESC, players.last_name ASC' }
|
|
119
|
+
@sorting.set_default_sorting model_stub_with_default_scope
|
|
120
|
+
|
|
121
|
+
assert @sorting.sorts_on?(:a)
|
|
122
|
+
assert_equal 'DESC', @sorting.direction_of(:a)
|
|
123
|
+
assert_equal 1, @sorting.instance_variable_get(:@clauses).size
|
|
124
|
+
assert_nil @sorting.clause
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
# require 'test/model_stub'
|
|
3
|
+
|
|
4
|
+
class StandardColumnTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@standard_column = ActiveScaffold::DataStructures::Column.new(ModelStub.columns.first.name, ModelStub)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_virtuality
|
|
10
|
+
assert @standard_column.column
|
|
11
|
+
assert !@standard_column.virtual?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_sorting
|
|
15
|
+
hash = {:sql => '"model_stubs"."a"'}
|
|
16
|
+
assert @standard_column.sortable?
|
|
17
|
+
assert_equal hash, @standard_column.sort # check default
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_searching
|
|
21
|
+
assert @standard_column.searchable?
|
|
22
|
+
assert_equal '"model_stubs"."a"', @standard_column.search_sql # check default
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class VirtualColumnTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@virtual_column = ActiveScaffold::DataStructures::Column.new(:fake, ModelStub)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_virtuality
|
|
9
|
+
assert !@virtual_column.column
|
|
10
|
+
assert !@virtual_column.association
|
|
11
|
+
assert @virtual_column.virtual?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_sorting
|
|
15
|
+
# right now, there's no intelligent sorting on virtual columns
|
|
16
|
+
assert !@virtual_column.sortable?
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_searching
|
|
20
|
+
# right now, there's no intelligent searching on virtual columns
|
|
21
|
+
assert !@virtual_column.searchable?
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
#require 'test/model_stub'
|
|
3
|
+
|
|
4
|
+
class ActiveRecordTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@record = ModelStub.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_to_label
|
|
10
|
+
# without anything defined, it'll use the to_s method (e.g. #<ModelStub:0xb7379300>)
|
|
11
|
+
assert_match /^#<[a-z]+:0x[0-9a-f]+>$/i, @record.to_label
|
|
12
|
+
|
|
13
|
+
class << @record
|
|
14
|
+
def to_s
|
|
15
|
+
'to_s'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
assert_equal 'to_s', @record.to_label
|
|
20
|
+
|
|
21
|
+
class << @record
|
|
22
|
+
def title
|
|
23
|
+
'title'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
assert_equal 'title', @record.to_label
|
|
28
|
+
|
|
29
|
+
class << @record
|
|
30
|
+
def label
|
|
31
|
+
'label'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
assert_equal 'label', @record.to_label
|
|
36
|
+
|
|
37
|
+
class << @record
|
|
38
|
+
def name
|
|
39
|
+
'name'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
assert_equal 'name', @record.to_label
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class ArrayTest < Test::Unit::TestCase
|
|
4
|
+
def test_after
|
|
5
|
+
@sequence = ['a', 'b', 'c']
|
|
6
|
+
|
|
7
|
+
assert_equal 'b', @sequence.after('a')
|
|
8
|
+
assert_equal 'c', @sequence.after('b')
|
|
9
|
+
assert_equal 'a', @sequence.after('c')
|
|
10
|
+
assert_equal nil, @sequence.after('d')
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class FormColumnHelpersTest < ActionView::TestCase
|
|
4
|
+
include ActiveScaffold::Helpers::FormColumnHelpers
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@column = ActiveScaffold::DataStructures::Column.new(:a, ModelStub)
|
|
8
|
+
@record = stub(:a => nil)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_choices_for_select_form_ui_for_simple_column
|
|
12
|
+
@column.options[:options] = [:value_1, :value_2, :value_3]
|
|
13
|
+
assert_dom_equal '<select name="record[a]" id="record_a"><option value="value_1">Value 1</option><option value="value_2">Value 2</option><option value="value_3">Value 3</option></select>', active_scaffold_input_select(@column, {})
|
|
14
|
+
|
|
15
|
+
@column.options[:options] = %w(value_1 value_2 value_3)
|
|
16
|
+
assert_dom_equal '<select name="record[a]" id="record_a"><option value="value_1">value_1</option><option value="value_2">value_2</option><option value="value_3">value_3</option></select>', active_scaffold_input_select(@column, {})
|
|
17
|
+
|
|
18
|
+
@column.options[:options] = [%w(text_1 value_1), %w(text_2 value_2), %w(text_3 value_3)]
|
|
19
|
+
assert_dom_equal '<select name="record[a]" id="record_a"><option value="value_1">text_1</option><option value="value_2">text_2</option><option value="value_3">text_3</option></select>', active_scaffold_input_select(@column, {})
|
|
20
|
+
|
|
21
|
+
@column.options[:options] = [[:text_1, :value_1], [:text_2, :value_2], [:text_3, :value_3]]
|
|
22
|
+
assert_dom_equal '<select name="record[a]" id="record_a"><option value="value_1">Text 1</option><option value="value_2">Text 2</option><option value="value_3">Text 3</option></select>', active_scaffold_input_select(@column, {})
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_options_for_select_form_ui_for_simple_column
|
|
26
|
+
@column.options = {:include_blank => 'None', :selected => 'value_2', :disabled => %w(value_1 value_3)}
|
|
27
|
+
@column.options[:options] = %w(value_1 value_2 value_3)
|
|
28
|
+
@column.options[:html_options] = {:class => 'big'}
|
|
29
|
+
assert_dom_equal '<select name="record[a]" class="big" id="record_a"><option value="">None</option><option disabled="disabled" value="value_1">value_1</option><option selected="selected" value="value_2">value_2</option><option disabled="disabled" value="value_3">value_3</option></select>', active_scaffold_input_select(@column, {})
|
|
30
|
+
end
|
|
31
|
+
end
|