Changeset 20
- Timestamp:
- 10/10/2006 09:02:58 AM (2 years ago)
- Files:
-
- trunk/auto-admin/lib/auto_admin_configuration.rb (modified) (1 diff)
- trunk/auto-admin/lib/auto_admin_filter_sets.rb (modified) (1 diff)
- trunk/auto-admin/test/configuration_tests.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/auto-admin/lib/auto_admin_configuration.rb
r14 r20 118 118 119 119 def filter_options_for column_name, custom_options, &block 120 (@custom_filter_options ||= {})[column_name.to_sym] = AutoAdmin::CustomFilterSet.new( column_name, custom_options, &block )120 (@custom_filter_options ||= {})[column_name.to_sym] = AutoAdmin::CustomFilterSet.new( self, reflect_on_association( column_name ) || find_column( column_name ), custom_options, &block ) 121 121 end 122 122 def filters trunk/auto-admin/lib/auto_admin_filter_sets.rb
r1 r20 42 42 @options, @block = options, block 43 43 end 44 def sql_from_string option_name 45 @block ? @block.call( option_name ) : super 46 end 44 47 def other_options 45 48 a = [] 46 49 @options.each do |k,v| 47 50 o = build_option( k, v ) 48 o[:sql] = block.call( k ) unlessblock.nil?51 o[:sql] = @block.call( k ) unless @block.nil? 49 52 a << o 50 53 end trunk/auto-admin/test/configuration_tests.rb
r1 r20 134 134 135 135 136 def test_filter_options_for 137 assert_equal [], Film.columns_for_filter 138 Film.filter_by :rating 139 Film.filter_options_for :rating, 'A' => 'X', 'B' => 'Y', 'C' => 'Z' 140 assert_equal [:rating], Film.columns_for_filter 141 assert_equal( { 'rating' => '*' }, Film.filter_defaults ) 142 assert_equal ['rating = ?', 'B'], Film.filter_conditions( :rating => 'B' ) 143 end 144 def test_filter_options_for_with_custom_sql_builder 145 assert_equal [], Film.columns_for_filter 146 Film.filter_by :length 147 Film.filter_options_for( :length, '0-60' => 'Very Short', '60-120' => 'Short', '120-999' => 'Long' ) do |val| 148 ["length BETWEEN ? AND ?", *( val.split('-').map {|n| n.to_i } )] 149 end 150 assert_equal [:length], Film.columns_for_filter 151 assert_equal( { 'length' => '*' }, Film.filter_defaults ) 152 assert_equal ['length BETWEEN ? AND ?', 0, 60], Film.filter_conditions( :length => '0-60' ) 153 end 136 154 def test_filter_by_string 137 155 assert_equal [], Film.columns_for_filter
