44class JbuilderTemplateTest < ActiveSupport ::TestCase
55 POST_PARTIAL = <<-JBUILDER
66 json.extract! post, :id, :body
7+ json.title post.title if local_assigns.fetch(:include_title, false)
78 json.author do
89 first_name, last_name = post.author_name.split(nil, 2)
910 json.first_name first_name
@@ -30,7 +31,7 @@ class JbuilderTemplateTest < ActiveSupport::TestCase
3031 }
3132
3233 AUTHORS = [ "David Heinemeier Hansson" , "Pavel Pravosud" ] . cycle
33- POSTS = ( 1 ..10 ) . collect { |i | Post . new ( i , "Post ##{ i } " , AUTHORS . next ) }
34+ POSTS = ( 1 ..10 ) . collect { |i | Post . new ( i , "Title #{ i } " , " Post ##{ i } ", AUTHORS . next ) }
3435
3536 setup { Rails . cache . clear }
3637
@@ -141,6 +142,18 @@ class JbuilderTemplateTest < ActiveSupport::TestCase
141142 assert_equal [ ] , render ( 'json.array! @posts, partial: "post", as: :post' , posts : nil )
142143 end
143144
145+ test "single partial under key" do
146+ result = render ( 'json.post @post, partial: "post", as: :post' , post : POSTS . first )
147+ assert_equal "Post #1" , result [ "post" ] [ "body" ]
148+ assert_equal "Heinemeier Hansson" , result [ "post" ] [ "author" ] [ "last_name" ]
149+ assert_equal "David" , result [ "post" ] [ "author" ] [ "first_name" ]
150+ end
151+
152+ test 'single partial under key with local' do
153+ result = render ( 'json.post @post, partial: "post", as: :post, include_title: true' , post : POSTS . first )
154+ assert_equal "Title 1" , result [ "post" ] [ "title" ]
155+ end
156+
144157 test "array of partials under key" do
145158 result = render ( 'json.posts @posts, partial: "post", as: :post' , posts : POSTS )
146159 assert_equal 10 , result [ "posts" ] . count
@@ -149,13 +162,19 @@ class JbuilderTemplateTest < ActiveSupport::TestCase
149162 assert_equal "Pavel" , result [ "posts" ] [ 5 ] [ "author" ] [ "first_name" ]
150163 end
151164
165+ test "array of partials under key with local" do
166+ result = render ( 'json.posts @posts, partial: "post", as: :post, include_title: true' , posts : POSTS )
167+ assert_equal "Title 1" , result [ "posts" ] [ 0 ] [ "title" ]
168+ assert_equal "Title 2" , result [ "posts" ] [ 1 ] [ "title" ]
169+ end
170+
152171 test "empty array of partials under key from nil collection" do
153172 Jbuilder ::CollectionRenderer . expects ( :new ) . never
154173 result = render ( 'json.posts @posts, partial: "post", as: :post' , posts : nil )
155174 assert_equal [ ] , result [ "posts" ]
156175 end
157176
158- test "empty array of partials under key from an empy collection" do
177+ test "empty array of partials under key from an empty collection" do
159178 Jbuilder ::CollectionRenderer . expects ( :new ) . never
160179 result = render ( 'json.posts @posts, partial: "post", as: :post' , posts : [ ] )
161180 assert_equal [ ] , result [ "posts" ]
0 commit comments