jbuilder 2.8.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +25 -34
- data/Appraisals +15 -7
- data/CHANGELOG.md +22 -0
- data/Gemfile +0 -1
- data/README.md +19 -16
- data/gemfiles/rails_5_0.gemfile +1 -2
- data/gemfiles/rails_5_1.gemfile +1 -2
- data/gemfiles/{rails_4_2.gemfile → rails_5_2.gemfile} +1 -2
- data/gemfiles/rails_6_0.gemfile +10 -0
- data/gemfiles/rails_head.gemfile +10 -0
- data/jbuilder.gemspec +3 -4
- data/lib/generators/rails/jbuilder_generator.rb +8 -2
- data/lib/generators/rails/scaffold_controller_generator.rb +6 -0
- data/lib/generators/rails/templates/api_controller.rb +2 -2
- data/lib/generators/rails/templates/controller.rb +2 -2
- data/lib/generators/rails/templates/index.json.jbuilder +1 -1
- data/lib/generators/rails/templates/partial.json.jbuilder +1 -1
- data/lib/jbuilder/jbuilder_template.rb +7 -6
- data/lib/jbuilder.rb +13 -12
- data/test/jbuilder_generator_test.rb +13 -5
- data/test/jbuilder_template_test.rb +193 -338
- data/test/jbuilder_test.rb +30 -2
- data/test/scaffold_api_controller_generator_test.rb +6 -2
- data/test/scaffold_controller_generator_test.rb +6 -2
- data/test/test_helper.rb +25 -7
- metadata +9 -22
data/test/jbuilder_test.rb
CHANGED
@@ -75,7 +75,7 @@ class JbuilderTest < ActiveSupport::TestCase
|
|
75
75
|
end
|
76
76
|
|
77
77
|
assert result.has_key?('content')
|
78
|
-
|
78
|
+
assert_nil result['content']
|
79
79
|
end
|
80
80
|
|
81
81
|
test 'multiple keys' do
|
@@ -99,7 +99,7 @@ class JbuilderTest < ActiveSupport::TestCase
|
|
99
99
|
assert_equal 32, result['age']
|
100
100
|
end
|
101
101
|
|
102
|
-
test 'extracting from object using call style
|
102
|
+
test 'extracting from object using call style' do
|
103
103
|
person = Struct.new(:name, :age).new('David', 32)
|
104
104
|
|
105
105
|
result = jbuild do |json|
|
@@ -159,6 +159,25 @@ class JbuilderTest < ActiveSupport::TestCase
|
|
159
159
|
assert_equal 32, result['author']['age']
|
160
160
|
end
|
161
161
|
|
162
|
+
test 'nested blocks are additive' do
|
163
|
+
result = jbuild do |json|
|
164
|
+
json.author do
|
165
|
+
json.name do
|
166
|
+
json.first 'David'
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
json.author do
|
171
|
+
json.name do
|
172
|
+
json.last 'Heinemeier Hansson'
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
assert_equal 'David', result['author']['name']['first']
|
178
|
+
assert_equal 'Heinemeier Hansson', result['author']['name']['last']
|
179
|
+
end
|
180
|
+
|
162
181
|
test 'support merge! method' do
|
163
182
|
result = jbuild do |json|
|
164
183
|
json.merge! 'foo' => 'bar'
|
@@ -713,4 +732,13 @@ class JbuilderTest < ActiveSupport::TestCase
|
|
713
732
|
end
|
714
733
|
end
|
715
734
|
end
|
735
|
+
|
736
|
+
if RUBY_VERSION >= "2.2.10"
|
737
|
+
test "respects JSON encoding customizations" do
|
738
|
+
# Active Support overrides Time#as_json for custom formatting.
|
739
|
+
# Ensure we call #to_json on the final attributes instead of JSON.dump.
|
740
|
+
result = JSON.load(Jbuilder.encode { |json| json.time Time.parse("2018-05-13 11:51:00.485 -0400") })
|
741
|
+
assert_equal "2018-05-13T11:51:00.485-04:00", result["time"]
|
742
|
+
end
|
743
|
+
end
|
716
744
|
end
|
@@ -6,7 +6,7 @@ if Rails::VERSION::MAJOR > 4
|
|
6
6
|
|
7
7
|
class ScaffoldApiControllerGeneratorTest < Rails::Generators::TestCase
|
8
8
|
tests Rails::Generators::ScaffoldControllerGenerator
|
9
|
-
arguments %w(Post title body:text --api)
|
9
|
+
arguments %w(Post title body:text images:attachments --api)
|
10
10
|
destination File.expand_path('../tmp', __FILE__)
|
11
11
|
setup :prepare_destination
|
12
12
|
|
@@ -39,7 +39,11 @@ if Rails::VERSION::MAJOR > 4
|
|
39
39
|
end
|
40
40
|
|
41
41
|
assert_match %r{def post_params}, content
|
42
|
-
|
42
|
+
if Rails::VERSION::MAJOR >= 6
|
43
|
+
assert_match %r{params\.require\(:post\)\.permit\(:title, :body, images: \[\]\)}, content
|
44
|
+
else
|
45
|
+
assert_match %r{params\.require\(:post\)\.permit\(:title, :body, :images\)}, content
|
46
|
+
end
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
@@ -4,7 +4,7 @@ require 'generators/rails/scaffold_controller_generator'
|
|
4
4
|
|
5
5
|
class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
|
6
6
|
tests Rails::Generators::ScaffoldControllerGenerator
|
7
|
-
arguments %w(Post title body:text)
|
7
|
+
arguments %w(Post title body:text images:attachments)
|
8
8
|
destination File.expand_path('../tmp', __FILE__)
|
9
9
|
setup :prepare_destination
|
10
10
|
|
@@ -51,7 +51,11 @@ class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
|
|
51
51
|
end
|
52
52
|
|
53
53
|
assert_match %r{def post_params}, content
|
54
|
-
|
54
|
+
if Rails::VERSION::MAJOR >= 6
|
55
|
+
assert_match %r{params\.require\(:post\)\.permit\(:title, :body, images: \[\]\)}, content
|
56
|
+
else
|
57
|
+
assert_match %r{params\.require\(:post\)\.permit\(:title, :body, :images\)}, content
|
58
|
+
end
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
data/test/test_helper.rb
CHANGED
@@ -1,16 +1,34 @@
|
|
1
1
|
require "bundler/setup"
|
2
|
+
|
2
3
|
require "active_support"
|
3
|
-
require
|
4
|
+
require "active_support/core_ext/array/access"
|
5
|
+
require "active_support/cache/memory_store"
|
6
|
+
require "active_support/json"
|
7
|
+
require "active_model"
|
8
|
+
require "action_view"
|
4
9
|
require "rails/version"
|
10
|
+
|
5
11
|
require "jbuilder"
|
6
12
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
13
|
+
require "active_support/testing/autorun"
|
14
|
+
require "mocha/setup"
|
15
|
+
|
16
|
+
ActiveSupport.test_order = :random
|
17
|
+
|
18
|
+
class << Rails
|
19
|
+
def cache
|
20
|
+
@cache ||= ActiveSupport::Cache::MemoryStore.new
|
21
|
+
end
|
11
22
|
end
|
12
23
|
|
24
|
+
class Post < Struct.new(:id, :body, :author_name); end
|
13
25
|
|
14
|
-
|
15
|
-
|
26
|
+
class Racer < Struct.new(:id, :name)
|
27
|
+
extend ActiveModel::Naming
|
28
|
+
include ActiveModel::Conversion
|
16
29
|
end
|
30
|
+
|
31
|
+
ActionView::Template.register_template_handler :jbuilder, JbuilderHandler
|
32
|
+
|
33
|
+
ActionView::Base.remove_possible_method :fragment_name_with_digest
|
34
|
+
ActionView::Base.remove_possible_method :cache_fragment_name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: multi_json
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.2'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.2'
|
26
|
+
version: 5.0.0
|
41
27
|
description:
|
42
28
|
email: david@basecamp.com
|
43
29
|
executables: []
|
@@ -53,9 +39,11 @@ files:
|
|
53
39
|
- MIT-LICENSE
|
54
40
|
- README.md
|
55
41
|
- Rakefile
|
56
|
-
- gemfiles/rails_4_2.gemfile
|
57
42
|
- gemfiles/rails_5_0.gemfile
|
58
43
|
- gemfiles/rails_5_1.gemfile
|
44
|
+
- gemfiles/rails_5_2.gemfile
|
45
|
+
- gemfiles/rails_6_0.gemfile
|
46
|
+
- gemfiles/rails_head.gemfile
|
59
47
|
- jbuilder.gemspec
|
60
48
|
- lib/generators/rails/jbuilder_generator.rb
|
61
49
|
- lib/generators/rails/scaffold_controller_generator.rb
|
@@ -91,15 +79,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
79
|
requirements:
|
92
80
|
- - ">="
|
93
81
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
82
|
+
version: 2.2.2
|
95
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
84
|
requirements:
|
97
85
|
- - ">="
|
98
86
|
- !ruby/object:Gem::Version
|
99
87
|
version: '0'
|
100
88
|
requirements: []
|
101
|
-
|
102
|
-
rubygems_version: 2.7.6
|
89
|
+
rubygems_version: 3.0.6
|
103
90
|
signing_key:
|
104
91
|
specification_version: 4
|
105
92
|
summary: Create JSON structures via a Builder-style DSL
|