active_scaffold 3.3.2 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -175,7 +175,7 @@ module ActiveScaffold
175
175
 
176
176
  def condition_value_for_numeric(column, value)
177
177
  return value if value.nil?
178
- value = i18n_number_to_native_format(value) if [:i18n_number, :currency].include?(column.options[:format]) && column.search_ui != :number
178
+ value = column.number_to_native(value) if column.options[:format] && column.search_ui != :number
179
179
  case (column.search_ui || column.column.type)
180
180
  when :integer then value.to_i rescue value ? 1 : 0
181
181
  when :float then value.to_f
@@ -184,18 +184,6 @@ module ActiveScaffold
184
184
  value
185
185
  end
186
186
  end
187
-
188
- def i18n_number_to_native_format(value)
189
- native = '.'
190
- delimiter = I18n.t('number.format.delimiter')
191
- separator = I18n.t('number.format.separator')
192
- return value if value.blank? || !value.is_a?(String)
193
- unless delimiter == native && !value.include?(separator) && value !~ /\.\d{3}$/
194
- value.gsub(/[^0-9\-#{I18n.t('number.format.separator')}]/, '').gsub(I18n.t('number.format.separator'), native)
195
- else
196
- value
197
- end
198
- end
199
187
 
200
188
  def datetime_conversion_for_condition(column)
201
189
  if column.column
@@ -367,7 +355,7 @@ module ActiveScaffold
367
355
  end
368
356
 
369
357
  klass = beginning_of_chain
370
- klass = klass.uniq if find_options[:outer_joins].present?
358
+ klass = klass.where(nil).uniq if find_options[:outer_joins].present? # HACK: call where(nil) because calling uniq on associations (nested scaffolds) send SQL to DB
371
359
  # we build the paginator differently for method- and sql-based sorting
372
360
  if options[:sorting] and options[:sorting].sorts_by_method?
373
361
  pager = ::Paginator.new(count, options[:per_page]) do |offset, per_page|
@@ -119,6 +119,7 @@ module ActiveScaffold
119
119
  url_params = url_params.except(:parent_scaffold, :association, nested.param_name) if nested? && scope
120
120
  url_params[:eid] = params[:eid] if params[:eid]
121
121
  if scope
122
+ url_params[:parent_controller] ||= url_params[:controller]
122
123
  url_params[:controller] = subform_controller.controller_path
123
124
  url_params[:scope] = scope
124
125
  url_params[:parent_id] = params[:parent_id] || params[:id]
@@ -160,7 +160,7 @@ module ActiveScaffold
160
160
  if column.associated_limit == 0
161
161
  size if column.associated_number?
162
162
  else
163
- joined_associated = firsts.join(active_scaffold_config.list.association_join_text)
163
+ joined_associated = firsts.join(h(active_scaffold_config.list.association_join_text)).html_safe
164
164
  joined_associated << " (#{size})" if column.associated_number? and column.associated_limit and value.size > column.associated_limit
165
165
  joined_associated
166
166
  end
@@ -38,7 +38,7 @@ module ActiveScaffold
38
38
  page = current_page.number - offset
39
39
  if page < start_number && page > last_page
40
40
  html << '..' if page > last_page + 1
41
- html << pagination_ajax_link(page, params)
41
+ html << pagination_ajax_link(page, url_options, options)
42
42
  last_page = page
43
43
  end
44
44
  end
@@ -82,7 +82,7 @@ module ActiveScaffold
82
82
  active_scaffold_checkbox_list(column, select_options, associated, options)
83
83
  end
84
84
 
85
- def active_scaffold_search_select(column, html_options)
85
+ def active_scaffold_search_select(column, html_options, options = {})
86
86
  associated = html_options.delete :value
87
87
  if column.association
88
88
  associated = associated.is_a?(Array) ? associated.map(&:to_i) : associated.to_i unless associated.nil?
@@ -95,7 +95,7 @@ module ActiveScaffold
95
95
  end
96
96
  end
97
97
 
98
- options = { :selected => associated }.merge! column.options
98
+ options = options.merge(:selected => associated).merge column.options
99
99
  html_options.merge! column.options[:html_options] || {}
100
100
  if html_options[:multiple]
101
101
  html_options[:name] += '[]'
@@ -235,7 +235,12 @@ module ActiveScaffold
235
235
  url_options = action_link_url_options(link, record)
236
236
  if active_scaffold_config.cache_action_link_urls
237
237
  url = url_for(url_options)
238
- @action_links_urls[link.name_to_cache_link_url] = url unless link.dynamic_parameters.is_a?(Proc)
238
+ model = active_scaffold_config.model
239
+ is_sti_record = record && model.columns_hash.include?(model.inheritance_column) &&
240
+ record[model.inheritance_column].present?
241
+ unless link.dynamic_parameters.is_a?(Proc) || is_sti_record
242
+ @action_links_urls[link.name_to_cache_link_url] = url
243
+ end
239
244
  url
240
245
  else
241
246
  url_for(params_for(url_options))
@@ -339,10 +344,7 @@ module ActiveScaffold
339
344
  html_options[:data][:cancel_refresh] = true if link.refresh_on_close
340
345
  html_options[:data][:keep_open] = true if link.keep_open?
341
346
  end
342
- if link.popup?
343
- html_options[:data][:popup] = true
344
- html_options[:target] = '_blank'
345
- end
347
+ html_options[:target] = '_blank' if link.popup?
346
348
  html_options[:id] = link_id
347
349
  html_options[:remote] = true unless link.page? || link.popup?
348
350
  if link.dhtml_confirm?
@@ -69,10 +69,10 @@ class ActiveScaffold::Tableless < ActiveRecord::Base
69
69
  end
70
70
 
71
71
  def self.execute_simple_calculation(relation, operation, column_name, distinct)
72
- if operation == 'count' && column_name == :all && !distinct
72
+ if operation == 'count' && [relation.klass.primary_key, :all].include?(column_name)
73
73
  find_all(relation).size
74
74
  else
75
- raise "self.execute_simple_calculation must be implemented in a Tableless model to support #{operation} #{column_name} #{' distinct' if distinct} columns"
75
+ raise "self.execute_simple_calculation must be implemented in a Tableless model to support #{operation} #{column_name}#{' distinct' if distinct} columns"
76
76
  end
77
77
  end
78
78
 
@@ -2,7 +2,7 @@ module ActiveScaffold
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 3
5
- PATCH = 2
5
+ PATCH = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
@@ -1,9 +1,6 @@
1
- def dbg; require "ruby-debug"; debugger; end;
1
+ require 'test_helper'
2
2
 
3
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
4
-
5
-
6
- class Bridges::BridgeTest < Test::Unit::TestCase
3
+ class BridgeTest < Test::Unit::TestCase
7
4
  def setup
8
5
  @const_store = {}
9
6
  end
@@ -12,36 +9,29 @@ class Bridges::BridgeTest < Test::Unit::TestCase
12
9
  end
13
10
 
14
11
  def test__shouldnt_throw_errors
15
- ActiveScaffold::Bridge.run_all
12
+ ActiveScaffold::Bridges.run_all
16
13
  end
17
14
 
18
15
  def test__cds_bridge
16
+ js, ActiveScaffold.js_framework = ActiveScaffold.js_framework, :prototype
19
17
  ConstMocker.mock("CalendarDateSelect") do |cm|
20
18
  cm.remove
21
19
  assert(! bridge_will_be_installed("CalendarDateSelect"))
22
20
  cm.declare
23
21
  assert(bridge_will_be_installed("CalendarDateSelect"))
24
22
  end
23
+ ActiveScaffold.js_framework = js
25
24
  end
26
25
 
27
26
  def test__file_column_bridge
28
27
  ConstMocker.mock("FileColumn") do |cm|
29
- cm.remove
30
- assert(! bridge_will_be_installed("FileColumn"))
28
+ cm.remove
29
+ assert(! bridge_will_be_installed("FileColumn"))
31
30
  cm.declare
32
31
  assert(bridge_will_be_installed("FileColumn"))
33
32
  end
34
33
  end
35
34
 
36
- def test__dependent_protect_bridge
37
- ConstMocker.mock("DependentProtect") do |cm|
38
- cm.remove
39
- assert(! bridge_will_be_installed("DependentProtect"))
40
- cm.declare
41
- assert(bridge_will_be_installed("DependentProtect"))
42
- end
43
- end
44
-
45
35
  def test__paperclip_bridge
46
36
  ConstMocker.mock("Paperclip") do |cm|
47
37
  cm.remove
@@ -51,22 +41,21 @@ class Bridges::BridgeTest < Test::Unit::TestCase
51
41
  end
52
42
  end
53
43
 
54
- def test__unobtrusive_date_picker_bridge
55
- ConstMocker.mock("UnobtrusiveDatePicker") do |cm|
56
- cm.remove
57
- assert(! bridge_will_be_installed("UnobtrusiveDatePicker"))
58
- cm.declare
59
- assert(bridge_will_be_installed("UnobtrusiveDatePicker"))
44
+ def test__date_picker_bridge
45
+ ConstMocker.mock("Jquery") do |jquery|
46
+ jquery.declare
47
+ ConstMocker.mock("Rails", jquery.const) do |rails|
48
+ rails.declare
49
+ ConstMocker.mock("Ui", jquery.const) do |cm|
50
+ cm.remove
51
+ assert(! bridge_will_be_installed("DatePicker"))
52
+ cm.declare
53
+ assert(bridge_will_be_installed("DatePicker"))
54
+ end
55
+ end
60
56
  end
61
57
  end
62
58
 
63
- def test__validation_reflection_bridge
64
- class << ActiveRecord::Base; undef_method :reflect_on_validations_for; end rescue nil
65
- assert(! bridge_will_be_installed("ValidationReflection"))
66
- class << ActiveRecord::Base; define_method :reflect_on_validations_for, lambda{}; end
67
- assert(bridge_will_be_installed("ValidationReflection"))
68
- end
69
-
70
59
  def test__semantic_attributes_bridge
71
60
  ConstMocker.mock("SemanticAttributes") do |cm|
72
61
  cm.remove
@@ -79,12 +68,12 @@ class Bridges::BridgeTest < Test::Unit::TestCase
79
68
  protected
80
69
 
81
70
  def find_bridge(name)
82
- ActiveScaffold::Bridge.bridges.find{|b| b.name.to_s==name.to_s}
71
+ ActiveScaffold::Bridges[name.to_s.underscore.to_sym]
83
72
  end
84
73
 
85
74
  def bridge_will_be_installed(name)
86
75
  assert bridge=find_bridge(name), "No bridge found matching #{name}"
87
76
 
88
- bridge.instance_variable_get("@install_if").call
77
+ bridge.install?
89
78
  end
90
- end
79
+ end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+ require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/bridges/date_picker/ext')
3
+ #require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/bridges/date_picker/helper')
4
+
5
+ class DatePickerTest < ActionView::TestCase
6
+ include ActiveScaffold::Helpers::ViewHelpers
7
+ include ActiveScaffold::Bridges::DatePicker::Helper::FormColumnHelpers
8
+ include ActiveScaffold::Bridges::DatePicker::Helper::DatepickerColumnHelpers
9
+
10
+ def setup
11
+ @controller.class.class_eval do
12
+ include ActiveScaffold::Finder
13
+ end
14
+ end
15
+
16
+ def test_set_form_ui
17
+ config = ActiveScaffold::Config::Core.new(:company)
18
+ assert_equal nil, config.columns[:name].form_ui, 'form_ui for name'
19
+ assert_equal :date_picker, config.columns[:date].form_ui, 'form_ui for date'
20
+ assert_equal :datetime_picker, config.columns[:datetime].form_ui, 'form_ui for datetime'
21
+ end
22
+
23
+ def test_form_ui
24
+ config = ActiveScaffold::Config::Core.new(:company)
25
+ @record = Company.new
26
+ assert active_scaffold_input_date_picker(config.columns[:date], :name => 'record[date]', :id => 'record_date')
27
+ assert active_scaffold_input_date_picker(config.columns[:datetime], :name => 'record[datetime]', :id => 'record_datetime')
28
+ end
29
+ end
@@ -1,12 +1,11 @@
1
- require 'test/unit'
2
- require File.join(File.dirname(__FILE__), 'company')
3
- require File.join(File.dirname(__FILE__), '../../lib/bridges/paperclip/lib/paperclip_bridge')
4
- require File.join(File.dirname(__FILE__), '../../lib/bridges/paperclip/lib/paperclip_bridge_helpers')
5
- require File.join(File.dirname(__FILE__), '../../lib/bridges/paperclip/lib/form_ui')
6
- require File.join(File.dirname(__FILE__), '../../lib/bridges/paperclip/lib/list_ui')
1
+ require 'test_helper'
2
+ require File.expand_path('../../../lib/active_scaffold/bridges/paperclip/paperclip_bridge', __FILE__)
3
+ require File.expand_path('../../../lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers', __FILE__)
4
+ require File.expand_path('../../../lib/active_scaffold/bridges/paperclip/form_ui', __FILE__)
5
+ require File.expand_path('../../../lib/active_scaffold/bridges/paperclip/list_ui', __FILE__)
7
6
 
8
7
  class PaperclipCore < ActiveScaffold::Config::Core
9
- include ActiveScaffold::PaperclipBridge
8
+ include ActiveScaffold::Bridges::Paperclip::PaperclipBridge
10
9
  end
11
10
 
12
11
  class PaperclipTest < ActionView::TestCase
@@ -49,10 +48,10 @@ class PaperclipTest < ActionView::TestCase
49
48
  company = Company.new
50
49
 
51
50
  company.stubs(:logo).returns(stub(:file? => true, :original_filename => 'file', :url => '/system/file', :styles => Company.attachment_definitions[:logo]))
52
- assert_dom_equal '<a href="/system/file" onclick="window.open(this.href);return false;">file</a>', active_scaffold_column_paperclip(company, config.columns[:logo])
51
+ assert_dom_equal '<a href="/system/file" data-popup="true" target="_blank">file</a>', active_scaffold_column_paperclip(company, config.columns[:logo])
53
52
 
54
53
  company.stubs(:logo).returns(stub(:file? => true, :original_filename => 'file', :url => '/system/file', :styles => {:thumbnail => '40x40'}))
55
- assert_dom_equal '<a href="/system/file" onclick="window.open(this.href);return false;"><img src="/system/file" border="0" alt="File"/></a>', active_scaffold_column_paperclip(company, config.columns[:logo])
54
+ assert_dom_equal '<a href="/system/file" data-popup="true" target="_blank"><img src="/system/file" border="0" alt="File"/></a>', active_scaffold_column_paperclip(company, config.columns[:logo])
56
55
  end
57
56
 
58
57
  def test_form_ui
@@ -60,9 +59,9 @@ class PaperclipTest < ActionView::TestCase
60
59
  @record = Company.new
61
60
 
62
61
  @record.stubs(:logo).returns(stub(:file? => true, :original_filename => 'file', :url => '/system/file', :styles => Company.attachment_definitions[:logo]))
63
- assert_dom_equal '<div><a href="/system/file" onclick="window.open(this.href);return false;">file</a>|<a href="#" onclick="$(this).next().value=\'true\'; $(this).up().hide().next().show(); return false;">Remove or Replace file</a><input name="record[delete_logo]" type="hidden" id="record_delete_logo" value="false" /></div><div style="display: none"><input name="record[logo]" size="30" type="file" id="record_logo" /></div>', active_scaffold_input_paperclip(config.columns[:logo], :name => 'record[logo]', :id => 'record_logo')
62
+ assert_dom_equal '<div><a href="/system/file" data-popup="true" target="_blank">file</a> | <input name="record[delete_logo]" type="hidden" id="record_delete_logo" value="false" /><a href="#" onclick="$(this).prev().val(&#x27;true&#x27;); $(this).parent().hide().next().show(); return false;">Remove or Replace file</a></div><div style="display: none"><input name="record[logo]" class="text-input" autocomplete="off" type="file" id="record_logo" /></div>', active_scaffold_input_paperclip(config.columns[:logo], :name => 'record[logo]', :id => 'record_logo')
64
63
 
65
64
  @record.stubs(:logo).returns(stub(:file? => false))
66
- assert_dom_equal '<input name="record[logo]" size="30" type="file" id="record_logo" />', active_scaffold_input_paperclip(config.columns[:logo], :name => 'record[logo]', :id => 'record_logo')
65
+ assert_dom_equal '<input name="record[logo]" class="text-input" autocomplete="off" type="file" id="record_logo" />', active_scaffold_input_paperclip(config.columns[:logo], :name => 'record[logo]', :id => 'record_logo')
67
66
  end
68
67
  end
@@ -1,21 +1,21 @@
1
- require 'test/unit'
2
- require File.join(File.dirname(__FILE__), 'company')
3
- require File.join(File.dirname(__FILE__), '../../lib/bridges/tiny_mce/lib/tiny_mce_bridge')
1
+ require 'test_helper'
2
+ require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/bridges/tiny_mce/helpers')
4
3
 
5
4
  class TinyMceTest < ActionView::TestCase
6
5
  include ActiveScaffold::Helpers::ViewHelpers
7
- include ActiveScaffold::TinyMceBridge
6
+ include ActiveScaffold::Bridges::TinyMce::Helpers
8
7
 
9
8
  def test_includes
10
- assert_match /.*<script type="text\/javascript">.*ActiveScaffold\.ActionLink\.Abstract\.prototype\.close = function\(\).*<\/script>.*/m, active_scaffold_includes
9
+ ActiveScaffold::Bridges::TinyMce.expects(:install?).returns(true)
10
+ assert ActiveScaffold::Bridges.all_javascripts.include?("tinymce-jquery")
11
11
  end
12
12
 
13
13
  def test_form_ui
14
- config = PaperclipCore.new(:company)
14
+ config = ActiveScaffold::Config::Core.new(:company)
15
15
  @record = Company.new
16
16
  self.expects(:request).returns(stub(:xhr? => true))
17
17
 
18
- assert_dom_equal "<textarea name=\"record[name]\" class=\"name-input mceEditor\" id=\"record_name\"></textarea><script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.execCommand('mceAddControl', false, 'record_name');\n//]]>\n</script>", active_scaffold_input_text_editor(config.columns[:name], :name => 'record[name]', :id => 'record_name', :class => 'name-input')
18
+ assert_dom_equal "<textarea name=\"record[name]\" class=\"name-input mceEditor\" id=\"record_name\">\n</textarea>\n<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.settings = {\"theme\":\"simple\"};tinyMCE.execCommand('mceAddControl', false, 'record_name');\n//]]>\n</script>", active_scaffold_input_text_editor(config.columns[:name], :name => 'record[name]', :id => 'record_name', :class => 'name-input', :object => @record)
19
19
  end
20
20
 
21
21
  protected
@@ -1,14 +1,10 @@
1
- require 'rubygems'
2
- require 'active_record'
3
- require 'active_record/reflection'
4
- require File.join(File.dirname(__FILE__), '../../lib/bridges/dependent_protect/lib/dependent_protect_bridge')
5
-
6
- # Mocking everything necesary to test the plugin.
7
- class Company
1
+ class Company < ActiveRecord::Base
8
2
  def initialize(with_or_without = nil)
9
3
  @with_companies = with_or_without == :with_companies
10
4
  @with_company = with_or_without == :with_company
11
5
  @with_main_company = with_or_without == :with_main_company
6
+ @attributes = {}
7
+ @attributes_cache = {}
12
8
  end
13
9
 
14
10
  def self.columns_hash
@@ -44,9 +40,6 @@ class Company
44
40
  @@before = s
45
41
  end
46
42
 
47
- include ActiveRecord::Reflection
48
- include DependentProtectSecurity
49
-
50
43
  def self.has_many(association_id, options = {})
51
44
  reflection = create_reflection(:has_many, association_id, options, self)
52
45
  end
@@ -56,9 +49,9 @@ class Company
56
49
  def self.belongs_to(association_id, options = {})
57
50
  reflection = create_reflection(:belongs_to, association_id, options, self)
58
51
  end
59
- has_many :companies, :dependent => :protect
60
- has_one :company, :dependent => :protect
61
- belongs_to :main_company, :dependent => :protect, :class_name => 'Company'
52
+ has_many :companies
53
+ has_one :company
54
+ belongs_to :main_company, :class_name => 'Company'
62
55
 
63
56
  def companies
64
57
  if @with_companies
@@ -78,4 +71,12 @@ class Company
78
71
 
79
72
  def name
80
73
  end
74
+
75
+ def date
76
+ Date.today
77
+ end
78
+
79
+ def datetime
80
+ Time.now
81
+ end
81
82
  end
@@ -1,15 +1,17 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::BaseTest < Test::Unit::TestCase
4
- def setup
5
- @base = ActiveScaffold::Config::Base.new(ActiveScaffold::Config::Core.new(:model_stub))
6
- end
7
-
8
- def test_formats
9
- assert_equal [], @base.formats
10
- @base.formats << :pdf
11
- assert_equal [:pdf], @base.formats
12
- @base.formats = [:html]
13
- assert_equal [:html], @base.formats
3
+ module Config
4
+ class BaseTest < Test::Unit::TestCase
5
+ def setup
6
+ @base = ActiveScaffold::Config::Base.new(ActiveScaffold::Config::Core.new(:model_stub))
7
+ end
8
+
9
+ def test_formats
10
+ assert_equal [], @base.formats
11
+ @base.formats << :pdf
12
+ assert_equal [:pdf], @base.formats
13
+ @base.formats = [:html]
14
+ assert_equal [:html], @base.formats
15
+ end
14
16
  end
15
17
  end
@@ -1,58 +1,64 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper.rb')
1
+ require 'test_helper'
2
2
 
3
- class Config::CoreTest < 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.add_sti_create_links?
10
- assert !@config.sti_children
11
- assert_equal [:create, :list, :search, :update, :delete, :show, :nested, :subform], @config.actions.to_a
12
- assert_equal :default, @config.frontend
13
- assert_equal :default, @config.theme
14
- assert_equal 'ModelStub', @config.label(:count => 1)
15
- assert_equal 'ModelStubs', @config.label
16
- end
17
-
18
- def test_add_sti_children
19
- @config.sti_create_links = true
20
- assert !@config.add_sti_create_links?
21
- @config.sti_children = [:a]
22
- assert @config.add_sti_create_links?
23
- end
24
-
25
- def test_sti_children
26
- @config.sti_children = [:a]
27
- assert_equal [:a], @config.sti_children
28
- end
29
-
30
- def test_actions
31
- assert @config.actions.include?(:create)
32
- @config.actions = [:list]
33
- assert !@config.actions.include?(:create)
34
- assert_equal [:list], @config.actions.to_a
35
- end
36
-
37
- def test_form_ui_in_sti
38
- @config.columns << :type
3
+ module Config
4
+ class CoreTest < Test::Unit::TestCase
5
+ class ModelStubsController < ActionController::Base; end
6
+ def setup
7
+ @config = ActiveScaffold::Config::Core.new :model_stub
8
+ ModelStubsController.instance_variable_set :@active_scaffold_config, @config
9
+ end
39
10
 
40
- @config.sti_children = [:model_stub]
41
- @config._configure_sti
42
- assert_equal :select, @config.columns[:type].form_ui
43
- assert_equal [['Modelstub', 'ModelStub']], @config.columns[:type].options[:options]
11
+ def test_default_options
12
+ assert !@config.add_sti_create_links?
13
+ assert !@config.sti_children
14
+ assert_equal [:create, :list, :search, :update, :delete, :show, :nested, :subform], @config.actions.to_a
15
+ assert_equal :default, @config.frontend
16
+ assert_equal :default, @config.theme
17
+ assert_equal 'Model stub', @config.label(:count => 1)
18
+ assert_equal 'ModelStubs', @config.label
19
+ end
44
20
 
45
- @config.columns[:type].form_ui = nil
46
- @config.sti_create_links = true
47
- @config._configure_sti
48
- assert_equal :hidden, @config.columns[:type].form_ui
49
- end
50
-
51
- def test_sti_children_links
52
- @config.sti_children = [:model_stub]
53
- @config.sti_create_links = true
54
- @config.action_links.add @config.create.link
55
- @config._add_sti_create_links
56
- assert_equal 'Create Modelstub', @config.action_links[:new].label
21
+ def test_add_sti_children
22
+ @config.sti_create_links = true
23
+ assert !@config.add_sti_create_links?
24
+ @config.sti_children = [:a]
25
+ assert @config.add_sti_create_links?
26
+ end
27
+
28
+ def test_sti_children
29
+ @config.sti_children = [:a]
30
+ assert_equal [:a], @config.sti_children
31
+ end
32
+
33
+ def test_actions
34
+ assert @config.actions.include?(:create)
35
+ @config.actions = [:list]
36
+ assert !@config.actions.include?(:create)
37
+ assert_equal [:list], @config.actions.to_a
38
+ end
39
+
40
+ def test_form_ui_in_sti
41
+ @config.columns << :type
42
+
43
+ @config.sti_create_links = false
44
+ @config.sti_children = [:model_stub]
45
+ @config._configure_sti
46
+ assert_equal :select, @config.columns[:type].form_ui
47
+ assert_equal [['Model stub', 'ModelStub']], @config.columns[:type].options[:options]
48
+
49
+ @config.columns[:type].form_ui = nil
50
+ @config.sti_create_links = true
51
+ @config._configure_sti
52
+ assert_equal :hidden, @config.columns[:type].form_ui
53
+ end
54
+
55
+ def test_sti_children_links
56
+ @config.sti_children = [:model_stub]
57
+ @config.sti_create_links = true
58
+ @config.action_links.add @config.create.link
59
+ ModelStubsController.send(:_add_sti_create_links)
60
+ assert_equal 'Create Model stub', @config.action_links[:new].label
61
+ assert_equal 'config/core_test/model_stubs', @config.action_links[:new].parameters[:parent_sti]
62
+ end
57
63
  end
58
64
  end