@@ -203,6 +203,30 module ActionController | |||
|
203 | 203 | end |
|
204 | 204 | end |
|
205 | 205 | |
|
206 | if Rails::VERSION::MAJOR < 4 && RUBY_VERSION >= "2.1" | |
|
207 | module ActiveSupport | |
|
208 | class HashWithIndifferentAccess | |
|
209 | def select(*args, &block) | |
|
210 | dup.tap { |hash| hash.select!(*args, &block) } | |
|
211 | end | |
|
212 | ||
|
213 | def reject(*args, &block) | |
|
214 | dup.tap { |hash| hash.reject!(*args, &block) } | |
|
215 | end | |
|
216 | end | |
|
217 | ||
|
218 | class OrderedHash | |
|
219 | def select(*args, &block) | |
|
220 | dup.tap { |hash| hash.select!(*args, &block) } | |
|
221 | end | |
|
222 | ||
|
223 | def reject(*args, &block) | |
|
224 | dup.tap { |hash| hash.reject!(*args, &block) } | |
|
225 | end | |
|
226 | end | |
|
227 | end | |
|
228 | end | |
|
229 | ||
|
206 | 230 | require 'awesome_nested_set/version' |
|
207 | 231 | |
|
208 | 232 | module CollectiveIdea |
@@ -22,6 +22,16 class PatchesTest < ActiveSupport::TestCase | |||
|
22 | 22 | |
|
23 | 23 | def setup |
|
24 | 24 | Setting.default_language = 'en' |
|
25 | @symbols = { :a => 1, :b => 2 } | |
|
26 | @keys = %w( blue green red pink orange ) | |
|
27 | @values = %w( 000099 009900 aa0000 cc0066 cc6633 ) | |
|
28 | @hash = Hash.new | |
|
29 | @ordered_hash = ActiveSupport::OrderedHash.new | |
|
30 | ||
|
31 | @keys.each_with_index do |key, index| | |
|
32 | @hash[key] = @values[index] | |
|
33 | @ordered_hash[key] = @values[index] | |
|
34 | end | |
|
25 | 35 | end |
|
26 | 36 | |
|
27 | 37 | test "ActiveRecord::Base.human_attribute_name should transform name to field_name" do |
@@ -35,4 +45,55 class PatchesTest < ActiveSupport::TestCase | |||
|
35 | 45 | test "ActiveRecord::Base.human_attribute_name should default to humanized value if no translation has been found (useful for custom fields)" do |
|
36 | 46 | assert_equal 'Patch name', ActiveRecord::Base.human_attribute_name('Patch name') |
|
37 | 47 | end |
|
48 | ||
|
49 | # https://github.com/rails/rails/pull/14198/files | |
|
50 | if RUBY_VERSION >= "1.9" | |
|
51 | def test_indifferent_select | |
|
52 | hash = ActiveSupport::HashWithIndifferentAccess.new(@symbols).select { |_ ,v| v == 1 } | |
|
53 | assert_equal({ 'a' => 1 }, hash) | |
|
54 | assert_instance_of (RUBY_VERSION < "2.1" ? | |
|
55 | Hash : ActiveSupport::HashWithIndifferentAccess), | |
|
56 | hash | |
|
57 | end | |
|
58 | ||
|
59 | def test_indifferent_select_bang | |
|
60 | indifferent_strings = ActiveSupport::HashWithIndifferentAccess.new(@symbols) | |
|
61 | indifferent_strings.select! { |_, v| v == 1 } | |
|
62 | assert_equal({ 'a' => 1 }, indifferent_strings) | |
|
63 | assert_instance_of ActiveSupport::HashWithIndifferentAccess, indifferent_strings | |
|
64 | end | |
|
65 | end | |
|
66 | ||
|
67 | def test_indifferent_reject | |
|
68 | hash = ActiveSupport::HashWithIndifferentAccess.new(@symbols).reject { |_, v| v != 1 } | |
|
69 | assert_equal({ 'a' => 1 }, hash) | |
|
70 | assert_instance_of ActiveSupport::HashWithIndifferentAccess, hash | |
|
71 | end | |
|
72 | ||
|
73 | def test_indifferent_reject_bang | |
|
74 | indifferent_strings = ActiveSupport::HashWithIndifferentAccess.new(@symbols) | |
|
75 | indifferent_strings.reject! { |_, v| v != 1 } | |
|
76 | assert_equal({ 'a' => 1 }, indifferent_strings) | |
|
77 | assert_instance_of ActiveSupport::HashWithIndifferentAccess, indifferent_strings | |
|
78 | end | |
|
79 | ||
|
80 | if RUBY_VERSION >= "1.9" | |
|
81 | def test_select | |
|
82 | assert_equal @keys, @ordered_hash.select { true }.map(&:first) | |
|
83 | new_ordered_hash = @ordered_hash.select { true } | |
|
84 | assert_equal @keys, new_ordered_hash.map(&:first) | |
|
85 | assert_instance_of (RUBY_VERSION < "2.1" ? | |
|
86 | Hash : ActiveSupport::OrderedHash), | |
|
87 | new_ordered_hash | |
|
88 | end | |
|
89 | end | |
|
90 | ||
|
91 | def test_reject | |
|
92 | copy = @ordered_hash.dup | |
|
93 | new_ordered_hash = @ordered_hash.reject { |k, _| k == 'pink' } | |
|
94 | assert_equal copy, @ordered_hash | |
|
95 | assert !new_ordered_hash.keys.include?('pink') | |
|
96 | assert @ordered_hash.keys.include?('pink') | |
|
97 | assert_instance_of ActiveSupport::OrderedHash, new_ordered_hash | |
|
98 | end | |
|
38 | 99 | end |
General Comments 0
You need to be logged in to leave comments.
Login now