active_scaffold 3.3.2 → 3.3.3

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.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +9 -0
  3. data/app/assets/javascripts/active_scaffold.js.erb +5 -2
  4. data/app/assets/javascripts/jquery/active_scaffold.js +4 -6
  5. data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +16 -14
  6. data/app/assets/javascripts/prototype/active_scaffold.js +0 -5
  7. data/app/assets/stylesheets/active_scaffold.css.scss +1 -1
  8. data/app/assets/stylesheets/active_scaffold_jquery_ui.css.erb +7 -0
  9. data/lib/active_scaffold.rb +1 -1
  10. data/lib/active_scaffold/actions/update.rb +2 -1
  11. data/lib/active_scaffold/attribute_params.rb +2 -2
  12. data/lib/active_scaffold/bridges/date_picker.rb +1 -1
  13. data/lib/active_scaffold/config/core.rb +0 -2
  14. data/lib/active_scaffold/config/nested.rb +6 -3
  15. data/lib/active_scaffold/constraints.rb +2 -2
  16. data/lib/active_scaffold/data_structures/action_columns.rb +68 -72
  17. data/lib/active_scaffold/data_structures/column.rb +7 -3
  18. data/lib/active_scaffold/data_structures/sorting.rb +2 -1
  19. data/lib/active_scaffold/finder.rb +2 -14
  20. data/lib/active_scaffold/helpers/form_column_helpers.rb +1 -0
  21. data/lib/active_scaffold/helpers/list_column_helpers.rb +1 -1
  22. data/lib/active_scaffold/helpers/pagination_helpers.rb +1 -1
  23. data/lib/active_scaffold/helpers/search_column_helpers.rb +2 -2
  24. data/lib/active_scaffold/helpers/view_helpers.rb +7 -5
  25. data/lib/active_scaffold/tableless.rb +2 -2
  26. data/lib/active_scaffold/version.rb +1 -1
  27. data/test/bridges/bridge_test.rb +22 -33
  28. data/test/bridges/date_picker_test.rb +29 -0
  29. data/test/bridges/paperclip_test.rb +10 -11
  30. data/test/bridges/tiny_mce_test.rb +7 -7
  31. data/test/{bridges/company.rb → company.rb} +14 -13
  32. data/test/config/base_test.rb +14 -12
  33. data/test/config/core_test.rb +59 -53
  34. data/test/config/create_test.rb +56 -54
  35. data/test/config/delete_test.rb +31 -29
  36. data/test/config/field_search_test.rb +45 -43
  37. data/test/config/list_test.rb +119 -117
  38. data/test/config/nested_test.rb +50 -58
  39. data/test/config/search_test.rb +58 -56
  40. data/test/config/show_test.rb +42 -40
  41. data/test/config/subform_test.rb +15 -13
  42. data/test/config/update_test.rb +40 -38
  43. data/test/const_mocker.rb +14 -18
  44. data/test/data_structures/action_columns_test.rb +3 -3
  45. data/test/data_structures/action_link_test.rb +1 -1
  46. data/test/data_structures/action_links_test.rb +3 -3
  47. data/test/data_structures/actions_test.rb +2 -2
  48. data/test/data_structures/association_column_test.rb +5 -6
  49. data/test/data_structures/column_test.rb +8 -4
  50. data/test/data_structures/columns_test.rb +2 -3
  51. data/test/data_structures/error_message_test.rb +2 -2
  52. data/test/data_structures/set_test.rb +2 -3
  53. data/test/data_structures/sorting_test.rb +1 -2
  54. data/test/data_structures/standard_column_test.rb +2 -3
  55. data/test/data_structures/validation_reflection_test.rb +51 -0
  56. data/test/data_structures/virtual_column_test.rb +1 -1
  57. data/test/extensions/active_record_test.rb +2 -3
  58. data/test/extensions/array_test.rb +2 -2
  59. data/test/helpers/form_column_helpers_test.rb +6 -6
  60. data/test/helpers/list_column_helpers_test.rb +4 -1
  61. data/test/helpers/pagination_helpers_test.rb +7 -3
  62. data/test/misc/active_record_permissions_test.rb +1 -1
  63. data/test/misc/attribute_params_test.rb +3 -4
  64. data/test/misc/configurable_test.rb +2 -2
  65. data/test/misc/constraints_test.rb +29 -29
  66. data/test/misc/finder_test.rb +13 -10
  67. data/test/misc/lang_test.rb +1 -1
  68. data/test/mock_app/Rakefile +7 -0
  69. data/test/mock_app/config.ru +4 -0
  70. data/test/mock_app/config/application.rb +11 -0
  71. data/test/mock_app/config/boot.rb +6 -109
  72. data/test/mock_app/config/database.yml +2 -2
  73. data/test/mock_app/config/environment.rb +4 -42
  74. data/test/mock_app/config/environments/development.rb +21 -13
  75. data/test/mock_app/config/environments/production.rb +41 -20
  76. data/test/mock_app/config/environments/test.rb +27 -22
  77. data/test/mock_app/config/initializers/backtrace_silencers.rb +2 -2
  78. data/test/mock_app/config/initializers/inflections.rb +1 -1
  79. data/test/mock_app/config/initializers/secret_token.rb +7 -0
  80. data/test/mock_app/config/initializers/session_store.rb +2 -9
  81. data/test/mock_app/config/initializers/wrap_parameters.rb +14 -0
  82. data/test/mock_app/config/routes.rb +2 -42
  83. data/test/model_stub.rb +2 -3
  84. data/test/test_helper.rb +13 -11
  85. data/vendor/assets/stylesheets/jquery-ui-theme.css.erb +47 -0
  86. data/vendor/assets/stylesheets/jquery-ui.css +2 -36
  87. metadata +92 -103
  88. data/test/bridges/active_scaffold_dependent_protect_test.rb +0 -34
  89. data/test/bridges/unobtrusive_date_picker_test.rb +0 -49
  90. data/test/bridges/validation_reflection_test.rb +0 -57
  91. data/test/mock_app/config/initializers/new_rails_defaults.rb +0 -19
@@ -1,62 +1,54 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::NestedTest < Test::Unit::TestCase
4
- def setup
5
- @config = ActiveScaffold::Config::Core.new :model_stub
6
- end
7
-
8
- def test_default_options
9
- assert !@config.nested.shallow_delete
10
- assert_equal 'Add Existing ModelStub', @config.nested.label
11
- end
12
-
13
- def test_label
14
- label = 'nested monkeys'
15
- @config.nested.label = label
16
- assert_equal label, @config.nested.label
17
- I18n.backend.store_translations :en, :active_scaffold => {:create_model => 'Add new %{model}'}
18
- @config.nested.label = :create_model
19
- assert_equal 'Add new ModelStub', @config.nested.label
20
- end
21
-
22
- def test_shallow_delete
23
- @config.nested.shallow_delete = true
24
- assert @config.nested.shallow_delete
25
- end
26
-
27
- def test_add_link_deprecation
28
- ActiveSupport::Deprecation.silence { @config.nested.add_link :custom_link, [:assoc_1, :assoc_2] }
29
- link = @config.action_links['nested']
30
- assert_equal 'Custom Link', link.label
31
- assert_equal 'nested', link.action
32
- assert_equal :after, link.position
33
- assert !link.page?
34
- assert !link.popup?
35
- assert !link.confirm?
36
- assert link.inline?
37
- assert_equal :assoc_1, link.parameters[:associations]
38
- assert_equal 'assoc_1', link.html_options[:class]
39
- assert_equal :get, link.method
40
- assert_equal :member, link.type
41
- assert_equal :read, link.crud_type
42
- assert_equal :nested_authorized?, link.security_method
43
- end
3
+ module Config
4
+ class NestedTest < Test::Unit::TestCase
5
+ class ModelStubsController < ActionController::Base
6
+ active_scaffold
7
+ end
44
8
 
45
- def test_add_link
46
- @config.nested.add_link :custom_link, :assoc_1
47
- link = @config.action_links['nested']
48
- assert_equal 'Custom Link', link.label
49
- assert_equal 'nested', link.action
50
- assert_equal :after, link.position
51
- assert !link.page?
52
- assert !link.popup?
53
- assert !link.confirm?
54
- assert link.inline?
55
- assert_equal :assoc_1, link.parameters[:associations]
56
- assert_equal 'assoc_1', link.html_options[:class]
57
- assert_equal :get, link.method
58
- assert_equal :member, link.type
59
- assert_equal :read, link.crud_type
60
- assert_equal :nested_authorized?, link.security_method
9
+ def setup
10
+ @config = ActiveScaffold::Config::Core.new(:model_stub)
11
+ end
12
+
13
+ def test_default_options
14
+ assert @config.nested.shallow_delete
15
+ assert_equal 'Add Existing Model stub', @config.nested.label
16
+ end
17
+
18
+ def test_label
19
+ label = 'nested monkeys'
20
+ @config.nested.label = label
21
+ assert_equal label, @config.nested.label
22
+ I18n.backend.store_translations :en, :active_scaffold => {:create_model => 'Add new %{model}'}
23
+ @config.nested.label = :create_model
24
+ assert_equal 'Add new Model stub', @config.nested.label
25
+ end
26
+
27
+ def test_shallow_delete
28
+ @config.nested.shallow_delete = true
29
+ assert @config.nested.shallow_delete
30
+ end
31
+
32
+ def test_add_link
33
+ assert_raise(ArgumentError) { @config.nested.add_link :assoc_1 }
34
+ config = @config
35
+ ModelStubsController.class_eval do
36
+ config.configure { nested.add_link :other_models }
37
+ end
38
+ link = @config.action_links['index']
39
+ assert_equal 'ModelStubs', link.label
40
+ assert_equal 'index', link.action
41
+ assert_equal :after, link.position
42
+ assert !link.page?
43
+ assert !link.popup?
44
+ assert !link.confirm?
45
+ assert link.inline?
46
+ assert link.refresh_on_close
47
+ assert_equal :other_models, link.parameters[:association]
48
+ assert_equal :get, link.method
49
+ assert_equal :member, link.type
50
+ assert_equal :read, link.crud_type
51
+ assert_equal :nested_authorized?, link.security_method
52
+ end
61
53
  end
62
54
  end
@@ -1,60 +1,62 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::SearchTest < Test::Unit::TestCase
4
- def setup
5
- @config = ActiveScaffold::Config::Core.new :model_stub
6
- @default_link = @config.search.link
7
- end
8
-
9
- def teardown
10
- @config.search.link = @default_link
11
- end
12
-
13
- def test_default_options
14
- assert_equal :full, @config.search.text_search
15
- assert !@config.search.live?
16
- assert_equal ' ', @config.search.split_terms
17
- end
18
-
19
- def test_text_search
20
- @config.search.text_search = :start
21
- assert_equal :start, @config.search.text_search
22
- @config.search.text_search = :end
23
- assert_equal :end, @config.search.text_search
24
- @config.search.text_search = false
25
- assert !@config.search.text_search
26
- end
27
-
28
- def test_live
29
- @config.search.live = true
30
- assert @config.search.live?
31
- end
32
-
33
- def test_split_terms
34
- @config.search.split_terms = nil
35
- assert @config.search.split_terms.nil?
36
- @config.search.split_terms = ','
37
- assert_equal ',', @config.search.split_terms
38
- end
3
+ module Config
4
+ class SearchTest < Test::Unit::TestCase
5
+ def setup
6
+ @config = ActiveScaffold::Config::Core.new :model_stub
7
+ @default_link = @config.search.link
8
+ end
9
+
10
+ def teardown
11
+ @config.search.link = @default_link
12
+ end
13
+
14
+ def test_default_options
15
+ assert_equal :full, @config.search.text_search
16
+ assert !@config.search.live?
17
+ assert_equal ' ', @config.search.split_terms
18
+ end
19
+
20
+ def test_text_search
21
+ @config.search.text_search = :start
22
+ assert_equal :start, @config.search.text_search
23
+ @config.search.text_search = :end
24
+ assert_equal :end, @config.search.text_search
25
+ @config.search.text_search = false
26
+ assert !@config.search.text_search
27
+ end
28
+
29
+ def test_live
30
+ @config.search.live = true
31
+ assert @config.search.live?
32
+ end
33
+
34
+ def test_split_terms
35
+ @config.search.split_terms = nil
36
+ assert @config.search.split_terms.nil?
37
+ @config.search.split_terms = ','
38
+ assert_equal ',', @config.search.split_terms
39
+ end
39
40
 
40
- def test_link_defaults
41
- link = @config.search.link
42
- assert !link.page?
43
- assert !link.popup?
44
- assert !link.confirm?
45
- assert_equal "show_search", link.action
46
- assert_equal "Search", link.label
47
- assert link.inline?
48
- blank = {}
49
- assert_equal blank, link.html_options
50
- assert_equal :get, link.method
51
- assert_equal :collection, link.type
52
- assert_equal :read, link.crud_type
53
- assert_equal :search_authorized?, link.security_method
54
- end
55
-
56
- def test_setting_link
57
- @config.search.link = ActiveScaffold::DataStructures::ActionLink.new('update', :label => 'Monkeys')
58
- assert_not_equal(@default_link, @config.search.link)
41
+ def test_link_defaults
42
+ link = @config.search.link
43
+ assert !link.page?
44
+ assert !link.popup?
45
+ assert !link.confirm?
46
+ assert_equal "show_search", link.action
47
+ assert_equal "Search", link.label
48
+ assert link.inline?
49
+ blank = {}
50
+ assert_equal blank, link.html_options
51
+ assert_equal :get, link.method
52
+ assert_equal :collection, link.type
53
+ assert_equal :read, link.crud_type
54
+ assert_equal :search_authorized?, link.security_method
55
+ end
56
+
57
+ def test_setting_link
58
+ @config.search.link = ActiveScaffold::DataStructures::ActionLink.new('update', :label => 'Monkeys')
59
+ assert_not_equal(@default_link, @config.search.link)
60
+ end
59
61
  end
60
62
  end
@@ -1,43 +1,45 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::ShowTest < Test::Unit::TestCase
4
- def setup
5
- @config = ActiveScaffold::Config::Core.new :model_stub
6
- @default_link = @config.show.link
7
- end
8
-
9
- def teardown
10
- @config.show.link = @default_link
11
- end
12
-
13
- def test_link_defaults
14
- link = @config.show.link
15
- assert !link.page?
16
- assert !link.popup?
17
- assert !link.confirm?
18
- assert_equal "show", link.action
19
- assert_equal "Show", link.label
20
- assert link.inline?
21
- blank = {}
22
- assert_equal blank, link.html_options
23
- assert_equal :get, link.method
24
- assert_equal :member, link.type
25
- assert_equal :read, link.crud_type
26
- assert_equal :show_authorized?, link.security_method
27
- end
28
-
29
- def test_setting_link
30
- @config.show.link = ActiveScaffold::DataStructures::ActionLink.new('update', :label => 'Monkeys')
31
- assert_not_equal(@default_link, @config.show.link)
32
- end
33
-
34
- def test_label
35
- label = 'show monkeys'
36
- @config.show.label = label
37
- assert_equal label, @config.show.label
38
- I18n.backend.store_translations :en, :active_scaffold => {:view_model => 'View %{model}'}
39
- @config.show.label = :view_model
40
- assert_equal 'View ModelStub', @config.show.label
41
- assert_equal 'View record', @config.show.label('record')
3
+ module Config
4
+ class ShowTest < Test::Unit::TestCase
5
+ def setup
6
+ @config = ActiveScaffold::Config::Core.new :model_stub
7
+ @default_link = @config.show.link
8
+ end
9
+
10
+ def teardown
11
+ @config.show.link = @default_link
12
+ end
13
+
14
+ def test_link_defaults
15
+ link = @config.show.link
16
+ assert !link.page?
17
+ assert !link.popup?
18
+ assert !link.confirm?
19
+ assert_equal "show", link.action
20
+ assert_equal "Show", link.label
21
+ assert link.inline?
22
+ blank = {}
23
+ assert_equal blank, link.html_options
24
+ assert_equal :get, link.method
25
+ assert_equal :member, link.type
26
+ assert_equal :read, link.crud_type
27
+ assert_equal :show_authorized?, link.security_method
28
+ end
29
+
30
+ def test_setting_link
31
+ @config.show.link = ActiveScaffold::DataStructures::ActionLink.new('update', :label => 'Monkeys')
32
+ assert_not_equal(@default_link, @config.show.link)
33
+ end
34
+
35
+ def test_label
36
+ label = 'show monkeys'
37
+ @config.show.label = label
38
+ assert_equal label, @config.show.label
39
+ I18n.backend.store_translations :en, :active_scaffold => {:view_model => 'View %{model}'}
40
+ @config.show.label = :view_model
41
+ assert_equal 'View Model stub', @config.show.label
42
+ assert_equal 'View record', @config.show.label('record')
43
+ end
42
44
  end
43
45
  end
@@ -1,17 +1,19 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::SubformTest < Test::Unit::TestCase
4
- def setup
5
- @config = ActiveScaffold::Config::Core.new :model_stub
6
- end
3
+ module Config
4
+ class SubformTest < Test::Unit::TestCase
5
+ def setup
6
+ @config = ActiveScaffold::Config::Core.new :model_stub
7
+ end
7
8
 
8
- def test_defaults
9
- assert_equal :horizontal, @config.subform.layout
10
- end
11
-
12
- def test_setting_layout
13
- layout = :vertical
14
- @config.subform.layout = layout
15
- assert_equal layout, @config.subform.layout
9
+ def test_defaults
10
+ assert_equal :horizontal, @config.subform.layout
11
+ end
12
+
13
+ def test_setting_layout
14
+ layout = :vertical
15
+ @config.subform.layout = layout
16
+ assert_equal layout, @config.subform.layout
17
+ end
16
18
  end
17
19
  end
@@ -1,40 +1,42 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::UpdateTest < Test::Unit::TestCase
4
- def setup
5
- @config = ActiveScaffold::Config::Core.new :model_stub
3
+ module Config
4
+ class UpdateTest < Test::Unit::TestCase
5
+ def setup
6
+ @config = ActiveScaffold::Config::Core.new :model_stub
7
+ end
8
+
9
+ def test__params_for_columns__returns_all_params
10
+ @config._load_action_columns
11
+ @config.columns[:a].params.add :keep_a, :a_temp
12
+ assert @config.columns[:a].params.include?(:keep_a)
13
+ assert @config.columns[:a].params.include?(:a_temp)
14
+ end
15
+
16
+ def test_default_options
17
+ assert !@config.update.persistent
18
+ assert !@config.update.nested_links
19
+ assert_equal 'Model stub', @config.update.label
20
+ end
21
+
22
+ def test_persistent
23
+ @config.update.persistent = true
24
+ assert @config.update.persistent
25
+ end
26
+
27
+ def test_nested_links
28
+ @config.update.nested_links = true
29
+ assert @config.update.nested_links
30
+ end
31
+
32
+ def test_label
33
+ label = 'update new monkeys'
34
+ @config.update.label = label
35
+ assert_equal label, @config.update.label
36
+ I18n.backend.store_translations :en, :active_scaffold => {:change_model => 'Change %{model}'}
37
+ @config.update.label = :change_model
38
+ assert_equal 'Change Model stub', @config.update.label
39
+ assert_equal 'Change record', @config.update.label('record')
40
+ end
6
41
  end
7
-
8
- def test__params_for_columns__returns_all_params
9
- @config._load_action_columns
10
- @config.columns[:a].params.add :keep_a, :a_temp
11
- assert @config.columns[:a].params.include?(:keep_a)
12
- assert @config.columns[:a].params.include?(:a_temp)
13
- end
14
-
15
- def test_default_options
16
- assert !@config.update.persistent
17
- assert !@config.update.nested_links
18
- assert_equal 'Update ModelStub', @config.update.label
19
- end
20
-
21
- def test_persistent
22
- @config.update.persistent = true
23
- assert @config.update.persistent
24
- end
25
-
26
- def test_nested_links
27
- @config.update.nested_links = true
28
- assert @config.update.nested_links
29
- end
30
-
31
- def test_label
32
- label = 'update new monkeys'
33
- @config.update.label = label
34
- assert_equal label, @config.update.label
35
- I18n.backend.store_translations :en, :active_scaffold => {:change_model => 'Change %{model}'}
36
- @config.update.label = :change_model
37
- assert_equal 'Change ModelStub', @config.update.label
38
- assert_equal 'Change record', @config.update.label('record')
39
- end
40
- end
42
+ end
data/test/const_mocker.rb CHANGED
@@ -1,34 +1,30 @@
1
1
  class ConstMocker
2
- def initialize(*const_names)
3
- @const_names = const_names
4
- @const_states = {}
5
- @const_names.each{|const_name|
6
- @const_states[const_name] = Object.const_defined?(const_name) ? Object.const_get(const_name) : nil
7
- }
2
+ def initialize(const_name, parent = Object)
3
+ @parent = parent
4
+ @const_name = const_name
5
+ @const_state = nil
6
+ @const_state = @parent.const_defined?(@const_name) ? @parent.const_get(@const_name) : nil
8
7
  end
9
8
 
10
9
  def remove
11
- @const_names.each{|const_name|
12
- Object.send :remove_const, const_name if Object.const_defined?(const_name)
13
- }
10
+ @parent.send :remove_const, @const_name if @parent.const_defined?(@const_name)
14
11
  end
15
12
 
16
13
  def declare
17
- @const_names.each{|const_name|
18
- Object.class_eval "class #{const_name}; end;" unless Object.const_defined?(const_name)
19
- }
14
+ @parent.const_set @const_name, Class.new
20
15
  end
21
16
 
22
17
  def restore
23
18
  remove
24
-
25
- @const_states.each_pair{|const_name, const|
26
- Object.const_set const_name, const if const
27
- }
19
+ @parent.const_set @const_name, @const_state if @const_state
20
+ end
21
+
22
+ def const
23
+ @parent.const_get @const_name if @parent.const_defined?(@const_name)
28
24
  end
29
25
 
30
- def self.mock(*const_names, &block)
31
- cm = new(*const_names)
26
+ def self.mock(const_name, parent = Object, &block)
27
+ cm = new(const_name, parent)
32
28
  yield(cm)
33
29
  cm.restore
34
30
  true