diff options
author | Yehuda Katz <yehudakatz@YK.local> | 2010-02-10 14:46:16 -0800 |
---|---|---|
committer | Yehuda Katz <yehudakatz@YK.local> | 2010-02-10 14:46:16 -0800 |
commit | a3eaaf6b50b76a51080ec9ae6b217095868f3054 (patch) | |
tree | c13db84df1edf1c87d557d69758ba826f6853c85 /activesupport | |
parent | ff7db40464759687d08a618f8c5784851dd5adb4 (diff) | |
download | rails-a3eaaf6b50b76a51080ec9ae6b217095868f3054.tar.gz rails-a3eaaf6b50b76a51080ec9ae6b217095868f3054.tar.bz2 rails-a3eaaf6b50b76a51080ec9ae6b217095868f3054.zip |
Fix a JSON ordering issue
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/test/json/encoding_test.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/activesupport/test/json/encoding_test.rb b/activesupport/test/json/encoding_test.rb index cf9a635b5f..188b799f3f 100644 --- a/activesupport/test/json/encoding_test.rb +++ b/activesupport/test/json/encoding_test.rb @@ -50,13 +50,18 @@ class TestJSONEncoding < Test::Unit::TestCase StandardDateTimeTests = [[ DateTime.civil(2005,2,1,15,15,10), %("2005-02-01T15:15:10+00:00") ]] StandardStringTests = [[ 'this is the <string>', %("this is the <string>")]] + def sorted_json(json) + return json unless json =~ /^\{.*\}$/ + '{' + json[1..-2].split(',').sort.join(',') + '}' + end + constants.grep(/Tests$/).each do |class_tests| define_method("test_#{class_tests[0..-6].underscore}") do begin ActiveSupport.escape_html_entities_in_json = class_tests !~ /^Standard/ ActiveSupport.use_standard_json_time_format = class_tests =~ /^Standard/ self.class.const_get(class_tests).each do |pair| - assert_equal pair.last, ActiveSupport::JSON.encode(pair.first) + assert_equal pair.last, sorted_json(ActiveSupport::JSON.encode(pair.first)) end ensure ActiveSupport.escape_html_entities_in_json = false @@ -71,8 +76,7 @@ class TestJSONEncoding < Test::Unit::TestCase assert_equal %({\"a\":[1,2]}), ActiveSupport::JSON.encode('a' => [1,2]) assert_equal %({"1":2}), ActiveSupport::JSON.encode(1 => 2) - sorted_json = '{' + ActiveSupport::JSON.encode(:a => :b, :c => :d)[1..-2].split(',').sort.join(',') + '}' - assert_equal %({\"a\":\"b\",\"c\":\"d\"}), sorted_json + assert_equal %({\"a\":\"b\",\"c\":\"d\"}), sorted_json(ActiveSupport::JSON.encode(:a => :b, :c => :d)) end def test_utf8_string_encoded_properly_when_kcode_is_utf8 |