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.
- checksums.yaml +7 -0
- data/CHANGELOG +9 -0
- data/app/assets/javascripts/active_scaffold.js.erb +5 -2
- data/app/assets/javascripts/jquery/active_scaffold.js +4 -6
- data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +16 -14
- data/app/assets/javascripts/prototype/active_scaffold.js +0 -5
- data/app/assets/stylesheets/active_scaffold.css.scss +1 -1
- data/app/assets/stylesheets/active_scaffold_jquery_ui.css.erb +7 -0
- data/lib/active_scaffold.rb +1 -1
- data/lib/active_scaffold/actions/update.rb +2 -1
- data/lib/active_scaffold/attribute_params.rb +2 -2
- data/lib/active_scaffold/bridges/date_picker.rb +1 -1
- data/lib/active_scaffold/config/core.rb +0 -2
- data/lib/active_scaffold/config/nested.rb +6 -3
- data/lib/active_scaffold/constraints.rb +2 -2
- data/lib/active_scaffold/data_structures/action_columns.rb +68 -72
- data/lib/active_scaffold/data_structures/column.rb +7 -3
- data/lib/active_scaffold/data_structures/sorting.rb +2 -1
- data/lib/active_scaffold/finder.rb +2 -14
- data/lib/active_scaffold/helpers/form_column_helpers.rb +1 -0
- data/lib/active_scaffold/helpers/list_column_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/pagination_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/search_column_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/view_helpers.rb +7 -5
- data/lib/active_scaffold/tableless.rb +2 -2
- data/lib/active_scaffold/version.rb +1 -1
- data/test/bridges/bridge_test.rb +22 -33
- data/test/bridges/date_picker_test.rb +29 -0
- data/test/bridges/paperclip_test.rb +10 -11
- data/test/bridges/tiny_mce_test.rb +7 -7
- data/test/{bridges/company.rb → company.rb} +14 -13
- data/test/config/base_test.rb +14 -12
- data/test/config/core_test.rb +59 -53
- data/test/config/create_test.rb +56 -54
- data/test/config/delete_test.rb +31 -29
- data/test/config/field_search_test.rb +45 -43
- data/test/config/list_test.rb +119 -117
- data/test/config/nested_test.rb +50 -58
- data/test/config/search_test.rb +58 -56
- data/test/config/show_test.rb +42 -40
- data/test/config/subform_test.rb +15 -13
- data/test/config/update_test.rb +40 -38
- data/test/const_mocker.rb +14 -18
- data/test/data_structures/action_columns_test.rb +3 -3
- data/test/data_structures/action_link_test.rb +1 -1
- data/test/data_structures/action_links_test.rb +3 -3
- data/test/data_structures/actions_test.rb +2 -2
- data/test/data_structures/association_column_test.rb +5 -6
- data/test/data_structures/column_test.rb +8 -4
- data/test/data_structures/columns_test.rb +2 -3
- data/test/data_structures/error_message_test.rb +2 -2
- data/test/data_structures/set_test.rb +2 -3
- data/test/data_structures/sorting_test.rb +1 -2
- data/test/data_structures/standard_column_test.rb +2 -3
- data/test/data_structures/validation_reflection_test.rb +51 -0
- data/test/data_structures/virtual_column_test.rb +1 -1
- data/test/extensions/active_record_test.rb +2 -3
- data/test/extensions/array_test.rb +2 -2
- data/test/helpers/form_column_helpers_test.rb +6 -6
- data/test/helpers/list_column_helpers_test.rb +4 -1
- data/test/helpers/pagination_helpers_test.rb +7 -3
- data/test/misc/active_record_permissions_test.rb +1 -1
- data/test/misc/attribute_params_test.rb +3 -4
- data/test/misc/configurable_test.rb +2 -2
- data/test/misc/constraints_test.rb +29 -29
- data/test/misc/finder_test.rb +13 -10
- data/test/misc/lang_test.rb +1 -1
- data/test/mock_app/Rakefile +7 -0
- data/test/mock_app/config.ru +4 -0
- data/test/mock_app/config/application.rb +11 -0
- data/test/mock_app/config/boot.rb +6 -109
- data/test/mock_app/config/database.yml +2 -2
- data/test/mock_app/config/environment.rb +4 -42
- data/test/mock_app/config/environments/development.rb +21 -13
- data/test/mock_app/config/environments/production.rb +41 -20
- data/test/mock_app/config/environments/test.rb +27 -22
- data/test/mock_app/config/initializers/backtrace_silencers.rb +2 -2
- data/test/mock_app/config/initializers/inflections.rb +1 -1
- data/test/mock_app/config/initializers/secret_token.rb +7 -0
- data/test/mock_app/config/initializers/session_store.rb +2 -9
- data/test/mock_app/config/initializers/wrap_parameters.rb +14 -0
- data/test/mock_app/config/routes.rb +2 -42
- data/test/model_stub.rb +2 -3
- data/test/test_helper.rb +13 -11
- data/vendor/assets/stylesheets/jquery-ui-theme.css.erb +47 -0
- data/vendor/assets/stylesheets/jquery-ui.css +2 -36
- metadata +92 -103
- data/test/bridges/active_scaffold_dependent_protect_test.rb +0 -34
- data/test/bridges/unobtrusive_date_picker_test.rb +0 -49
- data/test/bridges/validation_reflection_test.rb +0 -57
- data/test/mock_app/config/initializers/new_rails_defaults.rb +0 -19
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
# require 'test/model_stub'
|
|
3
|
-
require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/data_structures/set.rb')
|
|
3
|
+
#require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/data_structures/set.rb')
|
|
4
4
|
|
|
5
5
|
class ActionColumnsTest < Test::Unit::TestCase
|
|
6
6
|
def setup
|
|
@@ -110,4 +110,4 @@ class ActionColumnsTest < Test::Unit::TestCase
|
|
|
110
110
|
assert @columns.include?(:c)
|
|
111
111
|
assert !@columns.include?(:d)
|
|
112
112
|
end
|
|
113
|
-
end
|
|
113
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ActionLinksTest < Test::Unit::TestCase
|
|
4
4
|
def setup
|
|
@@ -53,10 +53,10 @@ class ActionLinksTest < Test::Unit::TestCase
|
|
|
53
53
|
@links.add 'foo', :type => :collection
|
|
54
54
|
@links.add 'bar', :type => :member
|
|
55
55
|
|
|
56
|
-
@links.each
|
|
56
|
+
@links.collection.each do |link|
|
|
57
57
|
assert_equal 'foo', link.action
|
|
58
58
|
end
|
|
59
|
-
@links.each
|
|
59
|
+
@links.member.each do |link|
|
|
60
60
|
assert_equal 'bar', link.action
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ActionsTest < Test::Unit::TestCase
|
|
4
4
|
def setup
|
|
@@ -22,4 +22,4 @@ class ActionsTest < Test::Unit::TestCase
|
|
|
22
22
|
@actions.add 'c'
|
|
23
23
|
assert @actions.include?('c')
|
|
24
24
|
end
|
|
25
|
-
end
|
|
25
|
+
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'model_stub'
|
|
3
3
|
|
|
4
4
|
class AssociationColumnTest < Test::Unit::TestCase
|
|
5
5
|
def setup
|
|
@@ -12,15 +12,14 @@ class AssociationColumnTest < Test::Unit::TestCase
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def test_sorting
|
|
15
|
-
# sorting on association columns is
|
|
16
|
-
|
|
17
|
-
assert_equal hash, @association_column.sort
|
|
15
|
+
# sorting on association columns is not defined
|
|
16
|
+
assert_equal false, @association_column.sort
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
def test_searching
|
|
21
20
|
# by default searching on association columns uses primary key
|
|
22
21
|
assert @association_column.searchable?
|
|
23
|
-
assert_equal '"model_stubs"."id"', @association_column.search_sql
|
|
22
|
+
assert_equal ['"model_stubs"."id"'], @association_column.search_sql
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def test_association
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ColumnTest < Test::Unit::TestCase
|
|
4
4
|
def setup
|
|
@@ -121,9 +121,9 @@ class ColumnTest < Test::Unit::TestCase
|
|
|
121
121
|
|
|
122
122
|
def test_custom_search
|
|
123
123
|
@column.search_sql = true
|
|
124
|
-
assert_equal '"model_stubs"."a"', @column.search_sql
|
|
124
|
+
assert_equal ['"model_stubs"."a"'], @column.search_sql
|
|
125
125
|
@column.search_sql = 'foobar'
|
|
126
|
-
assert_equal 'foobar', @column.search_sql
|
|
126
|
+
assert_equal ['foobar'], @column.search_sql
|
|
127
127
|
assert @column.searchable?
|
|
128
128
|
end
|
|
129
129
|
|
|
@@ -172,7 +172,7 @@ class ColumnTest < Test::Unit::TestCase
|
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
def test_includes
|
|
175
|
-
assert_equal
|
|
175
|
+
assert_equal nil, @column.includes
|
|
176
176
|
|
|
177
177
|
# make sure that when a non-array comes in, an array comes out
|
|
178
178
|
@column.includes = :column_name
|
|
@@ -181,5 +181,9 @@ class ColumnTest < Test::Unit::TestCase
|
|
|
181
181
|
# make sure that when a non-array comes in, an array comes out
|
|
182
182
|
@column.includes = [:column_name]
|
|
183
183
|
assert_equal([:column_name], @column.includes)
|
|
184
|
+
|
|
185
|
+
# make sure that when a non-array comes in, an array comes out
|
|
186
|
+
@column.includes = nil
|
|
187
|
+
assert_nil @column.includes
|
|
184
188
|
end
|
|
185
189
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
# require 'test/model_stub'
|
|
1
|
+
require 'test_helper'
|
|
3
2
|
|
|
4
3
|
class ColumnsTest < Test::Unit::TestCase
|
|
5
4
|
def setup
|
|
@@ -66,4 +65,4 @@ class ColumnsTest < Test::Unit::TestCase
|
|
|
66
65
|
assert @columns.include?(:d)
|
|
67
66
|
assert @columns.include?(:c)
|
|
68
67
|
end
|
|
69
|
-
end
|
|
68
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ErrorMessageTest < Test::Unit::TestCase
|
|
4
4
|
def setup
|
|
@@ -25,4 +25,4 @@ class ErrorMessageTest < Test::Unit::TestCase
|
|
|
25
25
|
assert yml.has_key?(:error)
|
|
26
26
|
assert_equal 'foo', yml[:error]
|
|
27
27
|
end
|
|
28
|
-
end
|
|
28
|
+
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
# require 'test/model_stub'
|
|
1
|
+
require 'test_helper'
|
|
3
2
|
|
|
4
3
|
class SetTest < Test::Unit::TestCase
|
|
5
4
|
def setup
|
|
@@ -83,4 +82,4 @@ class SetTest < Test::Unit::TestCase
|
|
|
83
82
|
assert @items.include?(:b)
|
|
84
83
|
assert !@items.include?(:d)
|
|
85
84
|
end
|
|
86
|
-
end
|
|
85
|
+
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
# require 'test/model_stub'
|
|
1
|
+
require 'test_helper'
|
|
3
2
|
|
|
4
3
|
class StandardColumnTest < Test::Unit::TestCase
|
|
5
4
|
def setup
|
|
@@ -19,6 +18,6 @@ class StandardColumnTest < Test::Unit::TestCase
|
|
|
19
18
|
|
|
20
19
|
def test_searching
|
|
21
20
|
assert @standard_column.searchable?
|
|
22
|
-
assert_equal '"model_stubs"."a"', @standard_column.search_sql # check default
|
|
21
|
+
assert_equal ['"model_stubs"."a"'], @standard_column.search_sql # check default
|
|
23
22
|
end
|
|
24
23
|
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ValidationReflectionTest < Test::Unit::TestCase
|
|
4
|
+
def test_set_required_for_validates_presence_of
|
|
5
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
6
|
+
assert !column.required?
|
|
7
|
+
Company.expects(:validators_on).with(:name).returns([ActiveModel::Validations::PresenceValidator.new(:attributes => :name)])
|
|
8
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
9
|
+
assert column.required?
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_set_required_for_validates_inclusion_of
|
|
13
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
14
|
+
assert !column.required?
|
|
15
|
+
Company.expects(:validators_on).with(:name).returns([ActiveModel::Validations::InclusionValidator.new(:attributes => :name, :in => [])])
|
|
16
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
17
|
+
assert column.required?
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_not_set_required_for_validates_inclusion_of_and_allow_nil
|
|
21
|
+
Company.expects(:validators_on).with(:name).returns([ActiveModel::Validations::InclusionValidator.new(:attributes => :name, :in => [], :allow_nil => true)])
|
|
22
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
23
|
+
assert !column.required?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_not_set_required_for_validates_inclusion_of_and_allow_blank
|
|
27
|
+
Company.expects(:validators_on).with(:name).returns([ActiveModel::Validations::InclusionValidator.new(:attributes => :name, :in => [], :allow_blank => true)])
|
|
28
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
29
|
+
assert !column.required?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_not_set_required_for_no_validation
|
|
33
|
+
Company.expects(:validators_on).with(:name).returns([])
|
|
34
|
+
column = ActiveScaffold::DataStructures::Column.new(:name, Company)
|
|
35
|
+
assert !column.required?
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_set_required_for_validates_presence_of_in_association
|
|
39
|
+
column = ActiveScaffold::DataStructures::Column.new(:main_company, Company)
|
|
40
|
+
assert !column.required?
|
|
41
|
+
Company.expects(:validators_on).with(:main_company).returns([ActiveModel::Validations::PresenceValidator.new(:attributes => :main_company)])
|
|
42
|
+
column = ActiveScaffold::DataStructures::Column.new(:main_company, Company)
|
|
43
|
+
assert column.required?
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_not_set_required_for_no_validation_in_association_neither_foreign_key
|
|
47
|
+
Company.expects(:validators_on).returns([])
|
|
48
|
+
column = ActiveScaffold::DataStructures::Column.new(:main_company, Company)
|
|
49
|
+
assert !column.required?
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
#require 'test/model_stub'
|
|
1
|
+
require 'test_helper'
|
|
3
2
|
|
|
4
3
|
class ActiveRecordTest < Test::Unit::TestCase
|
|
5
4
|
def setup
|
|
@@ -42,4 +41,4 @@ class ActiveRecordTest < Test::Unit::TestCase
|
|
|
42
41
|
|
|
43
42
|
assert_equal 'name', @record.to_label
|
|
44
43
|
end
|
|
45
|
-
end
|
|
44
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ArrayTest < Test::Unit::TestCase
|
|
4
4
|
def test_after
|
|
@@ -9,4 +9,4 @@ class ArrayTest < Test::Unit::TestCase
|
|
|
9
9
|
assert_equal 'a', @sequence.after('c')
|
|
10
10
|
assert_equal nil, @sequence.after('d')
|
|
11
11
|
end
|
|
12
|
-
end
|
|
12
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class FormColumnHelpersTest < ActionView::TestCase
|
|
4
4
|
include ActiveScaffold::Helpers::FormColumnHelpers
|
|
@@ -10,22 +10,22 @@ class FormColumnHelpersTest < ActionView::TestCase
|
|
|
10
10
|
|
|
11
11
|
def test_choices_for_select_form_ui_for_simple_column
|
|
12
12
|
@column.options[:options] = [:value_1, :value_2, :value_3]
|
|
13
|
-
assert_dom_equal
|
|
13
|
+
assert_dom_equal "<select name=\"record[a]\" id=\"record_a\"><option value=\"value_1\">Value 1</option>\n<option value=\"value_2\">Value 2</option>\n<option value=\"value_3\">Value 3</option></select>", active_scaffold_input_select(@column, {})
|
|
14
14
|
|
|
15
15
|
@column.options[:options] = %w(value_1 value_2 value_3)
|
|
16
|
-
assert_dom_equal
|
|
16
|
+
assert_dom_equal "<select name=\"record[a]\" id=\"record_a\"><option value=\"value_1\">value_1</option>\n<option value=\"value_2\">value_2</option>\n<option value=\"value_3\">value_3</option></select>", active_scaffold_input_select(@column, {})
|
|
17
17
|
|
|
18
18
|
@column.options[:options] = [%w(text_1 value_1), %w(text_2 value_2), %w(text_3 value_3)]
|
|
19
|
-
assert_dom_equal
|
|
19
|
+
assert_dom_equal "<select name=\"record[a]\" id=\"record_a\"><option value=\"value_1\">text_1</option>\n<option value=\"value_2\">text_2</option>\n<option value=\"value_3\">text_3</option></select>", active_scaffold_input_select(@column, {})
|
|
20
20
|
|
|
21
21
|
@column.options[:options] = [[:text_1, :value_1], [:text_2, :value_2], [:text_3, :value_3]]
|
|
22
|
-
assert_dom_equal
|
|
22
|
+
assert_dom_equal "<select name=\"record[a]\" id=\"record_a\"><option value=\"value_1\">Text 1</option>\n<option value=\"value_2\">Text 2</option>\n<option value=\"value_3\">Text 3</option></select>", active_scaffold_input_select(@column, {})
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def test_options_for_select_form_ui_for_simple_column
|
|
26
26
|
@column.options = {:include_blank => 'None', :selected => 'value_2', :disabled => %w(value_1 value_3)}
|
|
27
27
|
@column.options[:options] = %w(value_1 value_2 value_3)
|
|
28
28
|
@column.options[:html_options] = {:class => 'big'}
|
|
29
|
-
assert_dom_equal
|
|
29
|
+
assert_dom_equal "<select name=\"record[a]\" class=\"big\" id=\"record_a\"><option value=\"\">None</option>\n<option disabled=\"disabled\" value=\"value_1\">value_1</option>\n<option selected=\"selected\" value=\"value_2\">value_2</option>\n<option disabled=\"disabled\" value=\"value_3\">value_3</option></select>", active_scaffold_input_select(@column, {})
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ListColumnHelpersTest < ActionView::TestCase
|
|
4
4
|
include ActiveScaffold::Helpers::ListColumnHelpers
|
|
5
5
|
include ActiveScaffold::Helpers::ViewHelpers
|
|
6
|
+
include ::ERB::Util
|
|
6
7
|
|
|
7
8
|
def setup
|
|
8
9
|
@column = ActiveScaffold::DataStructures::Column.new(:a, ModelStub)
|
|
@@ -32,6 +33,8 @@ class ListColumnHelpersTest < ActionView::TestCase
|
|
|
32
33
|
value.each {|v| v.stubs(:to_label).returns(v)}
|
|
33
34
|
assert_equal '1, 2, 3, … (4)', format_association_value(value, @association_column, value.size)
|
|
34
35
|
@config.list.stubs(:association_join_text => ',<br/>')
|
|
36
|
+
assert_equal '1,<br/>2,<br/>3,<br/>… (4)', format_association_value(value, @association_column, value.size)
|
|
37
|
+
@config.list.stubs(:association_join_text => ',<br/>'.html_safe)
|
|
35
38
|
assert_equal '1,<br/>2,<br/>3,<br/>… (4)', format_association_value(value, @association_column, value.size)
|
|
36
39
|
end
|
|
37
40
|
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class PaginationHelpersTest < Test::Unit::TestCase
|
|
4
4
|
include ActiveScaffold::Helpers::PaginationHelpers
|
|
5
5
|
|
|
6
|
+
def active_scaffold_config
|
|
7
|
+
@config ||= config_for('model_stub')
|
|
8
|
+
end
|
|
9
|
+
|
|
6
10
|
def test_links
|
|
7
11
|
self.stubs(:pagination_ajax_link).returns('l')
|
|
8
12
|
|
|
@@ -50,10 +54,10 @@ class PaginationHelpersTest < Test::Unit::TestCase
|
|
|
50
54
|
def links(current, last_page, window_size = 2, infinite = false)
|
|
51
55
|
paginator = stub(:last => last_page = stub(:number => last_page), :infinite? => infinite)
|
|
52
56
|
current_page = stub(:number => current, :pager => paginator)
|
|
53
|
-
pagination_ajax_links(current_page, {}, window_size)
|
|
57
|
+
pagination_ajax_links(current_page, {}, {}, window_size, 0)
|
|
54
58
|
end
|
|
55
59
|
|
|
56
|
-
def content_tag(tag, text)
|
|
60
|
+
def content_tag(tag, text, *args)
|
|
57
61
|
text
|
|
58
62
|
end
|
|
59
63
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class NumberModel < ActiveRecord::Base
|
|
4
4
|
abstract_class = true
|
|
@@ -9,6 +9,7 @@ end
|
|
|
9
9
|
|
|
10
10
|
class AttributeParamsTest < Test::Unit::TestCase
|
|
11
11
|
include ActiveScaffold::AttributeParams
|
|
12
|
+
include ActiveScaffold::Finder
|
|
12
13
|
|
|
13
14
|
def setup
|
|
14
15
|
I18n.backend.store_translations :en, :number => {:format => {
|
|
@@ -27,9 +28,7 @@ class AttributeParamsTest < Test::Unit::TestCase
|
|
|
27
28
|
}}
|
|
28
29
|
|
|
29
30
|
@config = config_for('number_model')
|
|
30
|
-
|
|
31
|
-
include ActiveScaffold::DataStructures::ActionColumns::AfterConfiguration
|
|
32
|
-
end
|
|
31
|
+
@config.columns[:number].form_ui = nil
|
|
33
32
|
@config.list.columns.set_columns @config.columns
|
|
34
33
|
end
|
|
35
34
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class ConfigurableClass
|
|
4
4
|
FOO = 'bar'
|
|
@@ -93,4 +93,4 @@ class ConfigurableTest < Test::Unit::TestCase
|
|
|
93
93
|
# but we want to let people accept the configurable class as the first argument, too
|
|
94
94
|
assert_equal 'bar', ConfigurableClass.configure {|a| a.foo}
|
|
95
95
|
end
|
|
96
|
-
end
|
|
96
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
module ModelStubs
|
|
4
4
|
class ModelStub < ActiveRecord::Base
|
|
5
5
|
abstract_class = true
|
|
6
6
|
def self.columns; [ActiveRecord::ConnectionAdapters::Column.new('foo', '')] end
|
|
7
7
|
def self.table_name
|
|
8
|
-
to_s.split('::').last.underscore.pluralize
|
|
8
|
+
@table_name || to_s.split('::').last.underscore.pluralize
|
|
9
9
|
end
|
|
10
10
|
self.store_full_sti_class = false
|
|
11
11
|
end
|
|
@@ -43,31 +43,31 @@ module ModelStubs
|
|
|
43
43
|
##
|
|
44
44
|
|
|
45
45
|
class OtherAddress < ModelStub
|
|
46
|
-
|
|
46
|
+
self.table_name = 'addresses'
|
|
47
47
|
belongs_to :other_addressable, :polymorphic => true
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
class OtherUser < ModelStub
|
|
51
|
-
|
|
51
|
+
self.table_name = 'users'
|
|
52
52
|
has_and_belongs_to_many :other_roles, :class_name => 'ModelStubs::OtherRole', :foreign_key => 'user_id', :association_foreign_key => 'role_id', :join_table => 'roles_users'
|
|
53
53
|
has_one :other_subscription, :class_name => 'ModelStubs::OtherSubscription', :foreign_key => 'user_id'
|
|
54
54
|
has_one :other_address, :as => :other_addressable, :class_name => 'ModelStubs::OtherAddress', :foreign_key => 'addressable_id'
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
class OtherService < ModelStub
|
|
58
|
-
|
|
58
|
+
self.table_name = 'services'
|
|
59
59
|
has_many :other_subscriptions, :class_name => 'ModelStubs::OtherSubscription', :foreign_key => 'service_id'
|
|
60
60
|
has_many :other_users, :through => :other_subscriptions # :class_name and :foreign_key are ignored for :through
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
class OtherSubscription < ModelStub
|
|
64
|
-
|
|
64
|
+
self.table_name = 'subscriptions'
|
|
65
65
|
belongs_to :other_service, :class_name => 'ModelStubs::OtherService', :foreign_key => 'service_id'
|
|
66
66
|
belongs_to :other_user, :class_name => 'ModelStubs::OtherUser', :foreign_key => 'user_id'
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
class OtherRole < ModelStub
|
|
70
|
-
|
|
70
|
+
self.table_name = 'roles'
|
|
71
71
|
has_and_belongs_to_many :other_users, :class_name => 'ModelStubs::OtherUser', :foreign_key => 'role_id', :association_foreign_key => 'user_id', :join_table => 'roles_users'
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -112,72 +112,72 @@ class ConstraintsTest < Test::Unit::TestCase
|
|
|
112
112
|
def test_constraint_conditions_for_default_associations
|
|
113
113
|
@test_object.active_scaffold_config = config_for('user')
|
|
114
114
|
# has_one (vs belongs_to)
|
|
115
|
-
assert_constraint_condition({:subscription => 5}, ['subscriptions.id
|
|
115
|
+
assert_constraint_condition({:subscription => 5}, [{'subscriptions.id' => 5}], 'find the user with subscription #5')
|
|
116
116
|
# habtm (vs habtm)
|
|
117
|
-
assert_constraint_condition({:roles => 4}, ['roles_users.role_id
|
|
117
|
+
assert_constraint_condition({:roles => 4}, [{'roles_users.role_id' => 4}], 'find all users with role #4')
|
|
118
118
|
# has_one (vs polymorphic)
|
|
119
|
-
assert_constraint_condition({:address => 11}, ['addresses.id
|
|
119
|
+
assert_constraint_condition({:address => 11}, [{'addresses.id' => 11}], 'find the user with address #11')
|
|
120
120
|
# reverse of a has_many :through
|
|
121
|
-
assert_constraint_condition({:subscription => {:service => 5}}, ['services.id
|
|
121
|
+
assert_constraint_condition({:subscription => {:service => 5}}, [{'services.id' => 5}], 'find all users subscribed to service #5')
|
|
122
122
|
assert(@test_object.active_scaffold_includes.include?({:subscription => :service}), 'multi-level association include')
|
|
123
123
|
|
|
124
124
|
@test_object.active_scaffold_config = config_for('subscription')
|
|
125
125
|
# belongs_to (vs has_one)
|
|
126
|
-
assert_constraint_condition({:user => 2}, ['subscriptions.user_id
|
|
126
|
+
assert_constraint_condition({:user => 2}, [{'subscriptions.user_id' => 2}], 'find the subscription for user #2')
|
|
127
127
|
# belongs_to (vs has_many)
|
|
128
|
-
assert_constraint_condition({:service => 1}, ['subscriptions.service_id
|
|
128
|
+
assert_constraint_condition({:service => 1}, [{'subscriptions.service_id' => 1}], 'find all subscriptions for service #1')
|
|
129
129
|
|
|
130
130
|
@test_object.active_scaffold_config = config_for('service')
|
|
131
131
|
# has_many (vs belongs_to)
|
|
132
|
-
assert_constraint_condition({:subscriptions => 10}, ['subscriptions.id
|
|
132
|
+
assert_constraint_condition({:subscriptions => 10}, [{'subscriptions.id' => 10}], 'find the service with subscription #10')
|
|
133
133
|
# has_many :through (through has_many)
|
|
134
|
-
assert_constraint_condition({:users => 7}, ['users.id
|
|
134
|
+
assert_constraint_condition({:users => 7}, [{'users.id' => 7}], 'find the service with user #7')
|
|
135
135
|
|
|
136
136
|
@test_object.active_scaffold_config = config_for('address')
|
|
137
137
|
# belongs_to :polymorphic => true
|
|
138
|
-
@test_object.params[:parent_model] = 'User'
|
|
139
|
-
assert_constraint_condition({:addressable => 14}, ['addresses.addressable_id
|
|
138
|
+
@test_object.params[:parent_model] = 'ModelStubs::User'
|
|
139
|
+
assert_constraint_condition({:addressable => 14}, [{'addresses.addressable_id' => 14, 'addresses.addressable_type' => 'ModelStubs::User'}], 'find all addresses for user #14')
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
def test_constraint_conditions_for_configured_associations
|
|
143
143
|
@test_object.active_scaffold_config = config_for('other_user')
|
|
144
144
|
# has_one (vs belongs_to)
|
|
145
|
-
assert_constraint_condition({:other_subscription => 5}, ['subscriptions.id
|
|
145
|
+
assert_constraint_condition({:other_subscription => 5}, [{'subscriptions.id' => 5}], 'find the user with subscription #5')
|
|
146
146
|
# habtm (vs habtm)
|
|
147
|
-
assert_constraint_condition({:other_roles => 4}, ['roles_users.role_id
|
|
147
|
+
assert_constraint_condition({:other_roles => 4}, [{'roles_users.role_id' => 4}], 'find all users with role #4')
|
|
148
148
|
# has_one (vs polymorphic)
|
|
149
|
-
assert_constraint_condition({:other_address => 11}, ['addresses.id
|
|
149
|
+
assert_constraint_condition({:other_address => 11}, [{'addresses.id' => 11}], 'find the user with address #11')
|
|
150
150
|
# reverse of a has_many :through
|
|
151
|
-
assert_constraint_condition({:other_subscription => {:other_service => 5}}, ['services.id
|
|
151
|
+
assert_constraint_condition({:other_subscription => {:other_service => 5}}, [{'services.id' => 5}], 'find all users subscribed to service #5')
|
|
152
152
|
|
|
153
153
|
@test_object.active_scaffold_config = config_for('other_subscription')
|
|
154
154
|
# belongs_to (vs has_one)
|
|
155
|
-
assert_constraint_condition({:other_user => 2}, ['subscriptions.user_id
|
|
155
|
+
assert_constraint_condition({:other_user => 2}, [{'subscriptions.user_id' => 2}], 'find the subscription for user #2')
|
|
156
156
|
# belongs_to (vs has_many)
|
|
157
|
-
assert_constraint_condition({:other_service => 1}, ['subscriptions.service_id
|
|
157
|
+
assert_constraint_condition({:other_service => 1}, [{'subscriptions.service_id' => 1}], 'find all subscriptions for service #1')
|
|
158
158
|
|
|
159
159
|
@test_object.active_scaffold_config = config_for('other_service')
|
|
160
160
|
# has_many (vs belongs_to)
|
|
161
|
-
assert_constraint_condition({:other_subscriptions => 10}, ['subscriptions.id
|
|
161
|
+
assert_constraint_condition({:other_subscriptions => 10}, [{'subscriptions.id' => 10}], 'find the service with subscription #10')
|
|
162
162
|
# has_many :through (through has_many)
|
|
163
|
-
assert_constraint_condition({:other_users => 7}, ['users.id
|
|
163
|
+
assert_constraint_condition({:other_users => 7}, [{'users.id' => 7}], 'find the service with user #7')
|
|
164
164
|
|
|
165
165
|
@test_object.active_scaffold_config = config_for('other_address')
|
|
166
166
|
# belongs_to :polymorphic => true
|
|
167
|
-
@test_object.params[:parent_model] = 'OtherUser'
|
|
168
|
-
assert_constraint_condition({:other_addressable => 14}, ['addresses.other_addressable_id
|
|
167
|
+
@test_object.params[:parent_model] = 'ModelStubs::OtherUser'
|
|
168
|
+
assert_constraint_condition({:other_addressable => 14}, [{'addresses.other_addressable_id' => 14, 'addresses.other_addressable_type' => 'ModelStubs::OtherUser'}], 'find all addresses for user #14')
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
def test_constraint_conditions_for_normal_attributes
|
|
172
172
|
@test_object.active_scaffold_config = config_for('user')
|
|
173
|
-
assert_constraint_condition({'foo' => 'bar'}, ['"users"."foo" = ?', 'bar'], 'normal column-based constraint')
|
|
173
|
+
assert_constraint_condition({'foo' => 'bar'}, [['"users"."foo" = ?', 'bar']], 'normal column-based constraint')
|
|
174
174
|
end
|
|
175
175
|
|
|
176
176
|
def test_constraint_conditions_for_associations_with_primary_key_option
|
|
177
177
|
@test_object.active_scaffold_config = config_for('primary_key_location')
|
|
178
178
|
#user = ModelStubs::PrimaryKeyUser.new(:id => 1, :name => 'User Name')
|
|
179
179
|
ModelStubs::PrimaryKeyUser.expects(:find).with(1).returns(stub(:id => 1, :name => 'User Name'))
|
|
180
|
-
assert_constraint_condition({'user' => 1}, ['primary_key_locations.username
|
|
180
|
+
assert_constraint_condition({'user' => 1}, [{'primary_key_locations.username' => 'User Name'}], 'association with primary-key constraint')
|
|
181
181
|
end
|
|
182
182
|
|
|
183
183
|
protected
|