]> source.dussan.org Git - redmine.git/commitdiff
Fixes unhandled case in json builder.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 4 Dec 2010 10:41:31 +0000 (10:41 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 4 Dec 2010 10:41:31 +0000 (10:41 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4463 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/views/builders/structure.rb
test/unit/lib/redmine/views/builders/json_test.rb

index c168bd73a42fa71f4572a410d3bc67b215fc60d5..9b9481587586b8cdebff5ef288fc33e7850a494f 100644 (file)
@@ -56,7 +56,11 @@ module Redmine
             if @struct.last.is_a?(Array)
               @struct.last << ret
             else
-              @struct.last[sym] = ret
+              if @struct.last.has_key?(sym) && @struct.last[sym].is_a?(Hash)
+                @struct.last[sym].merge! ret
+              else
+                @struct.last[sym] = ret
+              end
             end
           end
         end
index 195fba020cc632045c3e72b514f828bc085a35cd..919fe2236470cd712b59222e65f87a266d95dd2c 100644 (file)
@@ -35,6 +35,13 @@ class Redmine::Views::Builders::JsonTest < HelperTestCase
         b.birth :city => 'London', :country => 'UK'
       end
     end
+    
+    assert_json_output({'person' => {'id' => 1, 'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b|
+      b.person :id => 1 do
+        b.name 'Ryan'
+        b.birth :city => 'London', :country => 'UK'
+      end
+    end
   end
   
   def test_array