active_scaffold_vho 3.0.6
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/.autotest +27 -0
- data/.document +5 -0
- data/CHANGELOG +179 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +20 -0
- data/MIT-LICENSE +20 -0
- data/README +63 -0
- data/Rakefile +53 -0
- data/frontends/default/images/add.gif +0 -0
- data/frontends/default/images/arrow_down.gif +0 -0
- data/frontends/default/images/arrow_up.gif +0 -0
- data/frontends/default/images/close.gif +0 -0
- data/frontends/default/images/config.png +0 -0
- data/frontends/default/images/cross.png +0 -0
- data/frontends/default/images/gears.png +0 -0
- data/frontends/default/images/indicator-small.gif +0 -0
- data/frontends/default/images/indicator.gif +0 -0
- data/frontends/default/images/magnifier.png +0 -0
- data/frontends/default/javascripts/jquery/active_scaffold.js +957 -0
- data/frontends/default/javascripts/jquery/jquery.editinplace.js +743 -0
- data/frontends/default/javascripts/prototype/active_scaffold.js +957 -0
- data/frontends/default/javascripts/prototype/dhtml_history.js +867 -0
- data/frontends/default/javascripts/prototype/form_enhancements.js +117 -0
- data/frontends/default/javascripts/prototype/rico_corner.js +370 -0
- data/frontends/default/stylesheets/stylesheet-ie.css +35 -0
- data/frontends/default/stylesheets/stylesheet.css +964 -0
- data/frontends/default/views/_action_group.html.erb +20 -0
- data/frontends/default/views/_add_existing_form.html.erb +30 -0
- data/frontends/default/views/_base_form.html.erb +45 -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 +14 -0
- data/frontends/default/views/_form_association_footer.html.erb +40 -0
- data/frontends/default/views/_form_attribute.html.erb +15 -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 +19 -0
- data/frontends/default/views/_horizontal_subform_header.html.erb +10 -0
- data/frontends/default/views/_horizontal_subform_record.html.erb +37 -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 +32 -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 +32 -0
- data/frontends/default/views/_messages.html.erb +10 -0
- data/frontends/default/views/_render_field.js.rjs +13 -0
- data/frontends/default/views/_row.html.erb +12 -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.rjs +17 -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.rjs +11 -0
- data/frontends/default/views/edit_associated.js.rjs +11 -0
- data/frontends/default/views/field_search.html.erb +5 -0
- data/frontends/default/views/form_messages.js.rjs +1 -0
- data/frontends/default/views/list.html.erb +1 -0
- data/frontends/default/views/list.js.rjs +1 -0
- data/frontends/default/views/on_action_update.js.rjs +8 -0
- data/frontends/default/views/on_create.js.rjs +41 -0
- data/frontends/default/views/on_update.js.rjs +28 -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.rjs +13 -0
- data/frontends/default/views/update_row.js.rjs +1 -0
- data/init.rb +9 -0
- data/lib/active_record_permissions.rb +134 -0
- data/lib/active_scaffold/actions/common_search.rb +22 -0
- data/lib/active_scaffold/actions/core.rb +170 -0
- data/lib/active_scaffold/actions/create.rb +145 -0
- data/lib/active_scaffold/actions/delete.rb +75 -0
- data/lib/active_scaffold/actions/field_search.rb +82 -0
- data/lib/active_scaffold/actions/list.rb +184 -0
- data/lib/active_scaffold/actions/mark.rb +50 -0
- data/lib/active_scaffold/actions/nested.rb +250 -0
- data/lib/active_scaffold/actions/search.rb +47 -0
- data/lib/active_scaffold/actions/show.rb +61 -0
- data/lib/active_scaffold/actions/subform.rb +17 -0
- data/lib/active_scaffold/actions/update.rb +141 -0
- data/lib/active_scaffold/attribute_params.rb +207 -0
- data/lib/active_scaffold/bridges/ancestry/bridge.rb +5 -0
- data/lib/active_scaffold/bridges/ancestry/lib/ancestry_bridge.rb +39 -0
- data/lib/active_scaffold/bridges/bridge.rb +52 -0
- data/lib/active_scaffold/bridges/calendar_date_select/bridge.rb +16 -0
- data/lib/active_scaffold/bridges/calendar_date_select/lib/as_cds_bridge.rb +79 -0
- data/lib/active_scaffold/bridges/carrierwave/bridge.rb +7 -0
- data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge.rb +38 -0
- data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge_helpers.rb +26 -0
- data/lib/active_scaffold/bridges/carrierwave/lib/form_ui.rb +35 -0
- data/lib/active_scaffold/bridges/carrierwave/lib/list_ui.rb +17 -0
- data/lib/active_scaffold/bridges/date_picker/bridge.rb +22 -0
- data/lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb +225 -0
- data/lib/active_scaffold/bridges/date_picker/public/javascripts/date_picker_bridge.js +22 -0
- data/lib/active_scaffold/bridges/file_column/bridge.rb +11 -0
- data/lib/active_scaffold/bridges/file_column/lib/as_file_column_bridge.rb +46 -0
- data/lib/active_scaffold/bridges/file_column/lib/file_column_helpers.rb +59 -0
- data/lib/active_scaffold/bridges/file_column/lib/form_ui.rb +37 -0
- data/lib/active_scaffold/bridges/file_column/lib/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/paperclip/bridge.rb +10 -0
- data/lib/active_scaffold/bridges/paperclip/lib/form_ui.rb +27 -0
- data/lib/active_scaffold/bridges/paperclip/lib/list_ui.rb +16 -0
- data/lib/active_scaffold/bridges/paperclip/lib/paperclip_bridge.rb +38 -0
- data/lib/active_scaffold/bridges/paperclip/lib/paperclip_bridge_helpers.rb +26 -0
- data/lib/active_scaffold/bridges/semantic_attributes/bridge.rb +5 -0
- data/lib/active_scaffold/bridges/semantic_attributes/lib/semantic_attributes_bridge.rb +20 -0
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +187 -0
- data/lib/active_scaffold/bridges/tiny_mce/bridge.rb +5 -0
- data/lib/active_scaffold/bridges/tiny_mce/lib/tiny_mce_bridge.rb +45 -0
- data/lib/active_scaffold/bridges/validation_reflection/bridge.rb +8 -0
- data/lib/active_scaffold/bridges/validation_reflection/lib/validation_reflection_bridge.rb +21 -0
- data/lib/active_scaffold/config/base.rb +62 -0
- data/lib/active_scaffold/config/core.rb +220 -0
- data/lib/active_scaffold/config/create.rb +51 -0
- data/lib/active_scaffold/config/delete.rb +34 -0
- data/lib/active_scaffold/config/field_search.rb +75 -0
- data/lib/active_scaffold/config/form.rb +47 -0
- data/lib/active_scaffold/config/list.rb +174 -0
- data/lib/active_scaffold/config/mark.rb +22 -0
- data/lib/active_scaffold/config/nested.rb +44 -0
- data/lib/active_scaffold/config/search.rb +69 -0
- data/lib/active_scaffold/config/show.rb +35 -0
- data/lib/active_scaffold/config/subform.rb +35 -0
- data/lib/active_scaffold/config/update.rb +46 -0
- data/lib/active_scaffold/configurable.rb +29 -0
- data/lib/active_scaffold/constraints.rb +184 -0
- data/lib/active_scaffold/data_structures/action_columns.rb +133 -0
- data/lib/active_scaffold/data_structures/action_link.rb +171 -0
- data/lib/active_scaffold/data_structures/action_links.rb +175 -0
- data/lib/active_scaffold/data_structures/actions.rb +45 -0
- data/lib/active_scaffold/data_structures/column.rb +351 -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 +123 -0
- data/lib/active_scaffold/data_structures/set.rb +62 -0
- data/lib/active_scaffold/data_structures/sorting.rb +168 -0
- data/lib/active_scaffold/finder.rb +333 -0
- data/lib/active_scaffold/helpers/association_helpers.rb +40 -0
- data/lib/active_scaffold/helpers/controller_helpers.rb +82 -0
- data/lib/active_scaffold/helpers/country_helpers.rb +352 -0
- data/lib/active_scaffold/helpers/form_column_helpers.rb +347 -0
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +59 -0
- data/lib/active_scaffold/helpers/id_helpers.rb +127 -0
- data/lib/active_scaffold/helpers/list_column_helpers.rb +361 -0
- data/lib/active_scaffold/helpers/pagination_helpers.rb +55 -0
- data/lib/active_scaffold/helpers/search_column_helpers.rb +243 -0
- data/lib/active_scaffold/helpers/show_column_helpers.rb +46 -0
- data/lib/active_scaffold/helpers/view_helpers.rb +356 -0
- data/lib/active_scaffold/locale/de.rb +120 -0
- data/lib/active_scaffold/locale/en.rb +119 -0
- data/lib/active_scaffold/locale/es.yml +115 -0
- data/lib/active_scaffold/locale/fr.rb +116 -0
- data/lib/active_scaffold/locale/hu.yml +63 -0
- data/lib/active_scaffold/locale/ja.yml +64 -0
- data/lib/active_scaffold/locale/ru.yml +119 -0
- data/lib/active_scaffold/marked_model.rb +38 -0
- data/lib/active_scaffold/version.rb +9 -0
- data/lib/active_scaffold.rb +345 -0
- data/lib/active_scaffold_assets.rb +45 -0
- data/lib/dhtml_confirm.rb +54 -0
- data/lib/environment.rb +14 -0
- data/lib/extensions/action_controller_rendering.rb +20 -0
- data/lib/extensions/action_view_rendering.rb +113 -0
- data/lib/extensions/action_view_resolver.rb +7 -0
- data/lib/extensions/active_association_reflection.rb +13 -0
- data/lib/extensions/active_record_offset.rb +12 -0
- data/lib/extensions/array.rb +7 -0
- data/lib/extensions/localize.rb +10 -0
- data/lib/extensions/name_option_for_datetime.rb +12 -0
- data/lib/extensions/nil_id_in_url_params.rb +7 -0
- data/lib/extensions/paginator_extensions.rb +26 -0
- data/lib/extensions/reverse_associations.rb +62 -0
- data/lib/extensions/routing_mapper.rb +34 -0
- data/lib/extensions/to_label.rb +8 -0
- data/lib/extensions/unsaved_associated.rb +61 -0
- data/lib/extensions/unsaved_record.rb +20 -0
- data/lib/extensions/usa_state.rb +46 -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 +28 -0
- data/lib/generators/active_scaffold_controller/templates/controller.rb +4 -0
- data/lib/generators/active_scaffold_setup/USAGE +10 -0
- data/lib/generators/active_scaffold_setup/active_scaffold_setup_generator.rb +53 -0
- data/lib/paginator.rb +136 -0
- data/lib/responds_to_parent.rb +70 -0
- data/public/blank.html +33 -0
- data/shoulda_macros/macros.rb +136 -0
- data/test/bridges/bridge_test.rb +47 -0
- data/test/config/base_test.rb +15 -0
- data/test/config/create_test.rb +55 -0
- data/test/config/list_test.rb +74 -0
- data/test/config/show_test.rb +43 -0
- data/test/config/update_test.rb +17 -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 +31 -0
- data/test/helpers/pagination_helpers_test.rb +55 -0
- data/test/misc/active_record_permissions_test.rb +154 -0
- data/test/misc/attribute_params_test.rb +110 -0
- data/test/misc/configurable_test.rb +96 -0
- data/test/misc/constraints_test.rb +193 -0
- data/test/misc/finder_test.rb +93 -0
- data/test/misc/lang_test.rb +12 -0
- data/test/mock_app/.gitignore +2 -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 +839 -0
- data/test/model_stub.rb +55 -0
- data/test/run_all.rb +8 -0
- data/test/test_helper.rb +39 -0
- data/uninstall.rb +13 -0
- metadata +492 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class ActionLinksTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@links = ActiveScaffold::DataStructures::ActionLinks.new
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_add_and_find
|
|
9
|
+
# test adding with a shortcut
|
|
10
|
+
@links.add 'foo/bar'
|
|
11
|
+
|
|
12
|
+
assert_equal 1, @links.find_all{true}.size
|
|
13
|
+
assert_equal 'foo/bar', @links.find_all{true}[0].action
|
|
14
|
+
assert_equal 'foo/bar', @links['foo/bar'].action
|
|
15
|
+
|
|
16
|
+
# test adding an ActionLink object directly
|
|
17
|
+
@links.add ActiveScaffold::DataStructures::ActionLink.new('hello/world')
|
|
18
|
+
|
|
19
|
+
assert_equal 2, @links.find_all{true}.size
|
|
20
|
+
|
|
21
|
+
# test the << alias
|
|
22
|
+
@links << 'a/b'
|
|
23
|
+
|
|
24
|
+
assert_equal 3, @links.find_all{true}.size
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_array_access
|
|
28
|
+
@link1 = ActiveScaffold::DataStructures::ActionLink.new 'foo/bar'
|
|
29
|
+
@link2 = ActiveScaffold::DataStructures::ActionLink.new 'hello_world'
|
|
30
|
+
|
|
31
|
+
@links.add @link1
|
|
32
|
+
@links.add @link2
|
|
33
|
+
|
|
34
|
+
assert_equal @link1, @links[@link1.action]
|
|
35
|
+
assert_equal @link2, @links[@link2.action]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_empty
|
|
39
|
+
assert @links.empty?
|
|
40
|
+
@links.add 'a'
|
|
41
|
+
assert !@links.empty?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_cloning
|
|
45
|
+
@links.add 'foo/bar'
|
|
46
|
+
@links_copy = @links.clone
|
|
47
|
+
|
|
48
|
+
assert !@links.equal?(@links_copy)
|
|
49
|
+
assert !@links['foo/bar'].equal?(@links_copy['foo/bar'])
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_each
|
|
53
|
+
@links.add 'foo', :type => :collection
|
|
54
|
+
@links.add 'bar', :type => :member
|
|
55
|
+
|
|
56
|
+
@links.each :collection do |link|
|
|
57
|
+
assert_equal 'foo', link.action
|
|
58
|
+
end
|
|
59
|
+
@links.each :member do |link|
|
|
60
|
+
assert_equal 'bar', link.action
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_delete
|
|
65
|
+
@links.add 'foo'
|
|
66
|
+
@links.add 'bar'
|
|
67
|
+
|
|
68
|
+
@links.delete :foo
|
|
69
|
+
assert @links['foo'].nil?
|
|
70
|
+
begin
|
|
71
|
+
@links.delete :foo
|
|
72
|
+
@links.delete 'foo'
|
|
73
|
+
rescue
|
|
74
|
+
assert false, "deleting from action links when item doesn't exist should not throw an error"
|
|
75
|
+
end
|
|
76
|
+
assert !@links['bar'].nil?
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../test_helper.rb')
|
|
2
|
+
|
|
3
|
+
class ActionsTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@actions = ActiveScaffold::DataStructures::Actions.new(:a, 'b')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_initialization
|
|
9
|
+
assert @actions.include?('a')
|
|
10
|
+
assert @actions.include?(:b)
|
|
11
|
+
assert !@actions.include?(:c)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_exclude
|
|
15
|
+
assert @actions.include?('b')
|
|
16
|
+
@actions.exclude :b
|
|
17
|
+
assert !@actions.include?(:b)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_add
|
|
21
|
+
assert !@actions.include?(:c)
|
|
22
|
+
@actions.add 'c'
|
|
23
|
+
assert @actions.include?('c')
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -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
|