Fixes unhandled case in json builder.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4464 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2010-12-04 11:20:20 +00:00
parent 558a951ed6
commit 88e593ee02
2 changed files with 13 additions and 2 deletions

View File

@ -36,7 +36,7 @@ module Redmine
if args.any? if args.any?
if args.first.is_a?(Hash) if args.first.is_a?(Hash)
if @struct.last.is_a?(Array) if @struct.last.is_a?(Array)
@struct.last << args.first @struct.last << args.first unless block
else else
@struct.last[sym] = args.first @struct.last[sym] = args.first
end end
@ -50,7 +50,7 @@ module Redmine
end end
if block if block
@struct << {} @struct << (args.first.is_a?(Hash) ? args.first : {})
block.call(self) block.call(self)
ret = @struct.pop ret = @struct.pop
if @struct.last.is_a?(Array) if @struct.last.is_a?(Array)

View File

@ -51,6 +51,17 @@ class Redmine::Views::Builders::JsonTest < HelperTestCase
b.book :title => 'Book 2', :author => 'G. Cooper' b.book :title => 'Book 2', :author => 'G. Cooper'
end end
end end
assert_json_output({'books' => [{'title' => 'Book 1', 'author' => 'B. Smith'}, {'title' => 'Book 2', 'author' => 'G. Cooper'}]}) do |b|
b.array :books do |b|
b.book :title => 'Book 1' do
b.author 'B. Smith'
end
b.book :title => 'Book 2' do
b.author 'G. Cooper'
end
end
end
end end
def test_array_with_content_tags def test_array_with_content_tags