@@ -581,6 +581,58 @@ class JbuilderTest < ActiveSupport::TestCase
581
581
assert_equal [ 'oats and friends' ] , result . keys
582
582
end
583
583
584
+ test 'key_format! with merge!' do
585
+ hash = { camel_style : 'for JS' }
586
+ result = jbuild do |json |
587
+ json . key_format! camelize : :lower
588
+ json . merge! hash
589
+ end
590
+
591
+ assert_equal [ 'camelStyle' ] , result . keys
592
+ end
593
+
594
+ test 'key_format! with merge! deep' do
595
+ hash = { camel_style : { sub_attr : 'for JS' } }
596
+ result = jbuild do |json |
597
+ json . key_format! camelize : :lower
598
+ json . merge! hash
599
+ end
600
+
601
+ assert_equal [ 'subAttr' ] , result [ 'camelStyle' ] . keys
602
+ end
603
+
604
+ test 'key_format! with set! array of hashes' do
605
+ names = [ { first_name : 'camel' , last_name : 'case' } ]
606
+ result = jbuild do |json |
607
+ json . key_format! camelize : :lower
608
+ json . set! :names , names
609
+ end
610
+
611
+ assert_equal %w[ firstName lastName ] , result [ 'names' ] [ 0 ] . keys
612
+ end
613
+
614
+ test 'key_format! with array! of hashes' do
615
+ names = [ { first_name : 'camel' , last_name : 'case' } ]
616
+ result = jbuild do |json |
617
+ json . key_format! camelize : :lower
618
+ json . array! names
619
+ end
620
+
621
+ assert_equal %w[ firstName lastName ] , result [ 0 ] . keys
622
+ end
623
+
624
+ test 'key_format! with merge! array of hashes' do
625
+ names = [ { first_name : 'camel' , last_name : 'case' } ]
626
+ new_names = [ { first_name : 'snake' , last_name : 'case' } ]
627
+ result = jbuild do |json |
628
+ json . key_format! camelize : :lower
629
+ json . array! names
630
+ json . merge! new_names
631
+ end
632
+
633
+ assert_equal %w[ firstName lastName ] , result [ 1 ] . keys
634
+ end
635
+
584
636
test 'default key_format!' do
585
637
Jbuilder . key_format camelize : :lower
586
638
result = jbuild { |json | json . camel_style 'for JS' }
0 commit comments