media_types 1.0.0 → 2.1.1
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/.github/workflows/debian.yml +43 -0
- data/.github/workflows/ruby.yml +3 -0
- data/.gitignore +10 -10
- data/CHANGELOG.md +80 -54
- data/Gemfile +6 -6
- data/Gemfile.lock +43 -114
- data/LICENSE +21 -0
- data/README.md +278 -85
- data/Rakefile +12 -12
- data/lib/media_types.rb +46 -3
- data/lib/media_types/constructable.rb +15 -9
- data/lib/media_types/dsl.rb +66 -31
- data/lib/media_types/dsl/errors.rb +18 -0
- data/lib/media_types/errors.rb +19 -0
- data/lib/media_types/scheme.rb +127 -13
- data/lib/media_types/scheme/errors.rb +66 -0
- data/lib/media_types/scheme/links.rb +15 -0
- data/lib/media_types/scheme/missing_validation.rb +12 -4
- data/lib/media_types/scheme/output_empty_guard.rb +5 -4
- data/lib/media_types/scheme/output_iterator_with_predicate.rb +13 -2
- data/lib/media_types/scheme/output_type_guard.rb +1 -1
- data/lib/media_types/scheme/rules.rb +53 -1
- data/lib/media_types/scheme/rules_exhausted_guard.rb +15 -4
- data/lib/media_types/scheme/validation_options.rb +17 -5
- data/lib/media_types/testing/assertions.rb +20 -0
- data/lib/media_types/validations.rb +29 -7
- data/lib/media_types/version.rb +1 -1
- data/media_types.gemspec +4 -7
- metadata +19 -63
- data/.travis.yml +0 -19
- data/lib/media_types/.dsl.rb.swp +0 -0
- data/lib/media_types/defaults.rb +0 -31
- data/lib/media_types/integrations.rb +0 -32
- data/lib/media_types/integrations/actionpack.rb +0 -21
- data/lib/media_types/integrations/http.rb +0 -47
- data/lib/media_types/minitest/assert_media_type_format.rb +0 -10
- data/lib/media_types/minitest/assert_media_types_registered.rb +0 -166
- data/lib/media_types/registrar.rb +0 -148
data/lib/media_types/version.rb
CHANGED
data/media_types.gemspec
CHANGED
@@ -7,8 +7,8 @@ require 'media_types/version'
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
8
|
spec.name = 'media_types'
|
9
9
|
spec.version = MediaTypes::VERSION
|
10
|
-
spec.authors = ['Derk-Jan Karrenbeld']
|
11
|
-
spec.email = ['derk-jan+github@karrenbeld.info']
|
10
|
+
spec.authors = ['Derk-Jan Karrenbeld', 'Max Maton']
|
11
|
+
spec.email = ['derk-jan+github@karrenbeld.info', 'info@maxmaton.nl']
|
12
12
|
|
13
13
|
spec.summary = 'Library to create media type definitions, schemes and validations'
|
14
14
|
spec.description = 'Media Types as mime types are not easily supported by frameworks such as rails. '
|
@@ -23,14 +23,11 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
|
-
spec.add_development_dependency 'actionpack'
|
27
26
|
spec.add_development_dependency 'awesome_print'
|
28
|
-
spec.add_development_dependency 'bundler', '
|
29
|
-
spec.add_development_dependency 'http'
|
27
|
+
spec.add_development_dependency 'bundler', '>= 2'
|
30
28
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
31
|
-
spec.add_development_dependency 'minitest-ci'
|
32
29
|
spec.add_development_dependency 'minitest-reporters'
|
33
30
|
spec.add_development_dependency 'oj'
|
34
|
-
spec.add_development_dependency 'rake', '
|
31
|
+
spec.add_development_dependency 'rake', '>= 12.0'
|
35
32
|
spec.add_development_dependency 'simplecov'
|
36
33
|
end
|
metadata
CHANGED
@@ -1,29 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: media_types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derk-Jan Karrenbeld
|
8
|
-
|
8
|
+
- Max Maton
|
9
|
+
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2021-08-19 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: actionpack
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
14
|
- !ruby/object:Gem::Dependency
|
28
15
|
name: awesome_print
|
29
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -40,32 +27,18 @@ dependencies:
|
|
40
27
|
version: '0'
|
41
28
|
- !ruby/object:Gem::Dependency
|
42
29
|
name: bundler
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '2'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: http
|
57
30
|
requirement: !ruby/object:Gem::Requirement
|
58
31
|
requirements:
|
59
32
|
- - ">="
|
60
33
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
34
|
+
version: '2'
|
62
35
|
type: :development
|
63
36
|
prerelease: false
|
64
37
|
version_requirements: !ruby/object:Gem::Requirement
|
65
38
|
requirements:
|
66
39
|
- - ">="
|
67
40
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
41
|
+
version: '2'
|
69
42
|
- !ruby/object:Gem::Dependency
|
70
43
|
name: minitest
|
71
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +53,6 @@ dependencies:
|
|
80
53
|
- - "~>"
|
81
54
|
- !ruby/object:Gem::Version
|
82
55
|
version: '5.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: minitest-ci
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
56
|
- !ruby/object:Gem::Dependency
|
98
57
|
name: minitest-reporters
|
99
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,16 +85,16 @@ dependencies:
|
|
126
85
|
name: rake
|
127
86
|
requirement: !ruby/object:Gem::Requirement
|
128
87
|
requirements:
|
129
|
-
- - "
|
88
|
+
- - ">="
|
130
89
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
90
|
+
version: '12.0'
|
132
91
|
type: :development
|
133
92
|
prerelease: false
|
134
93
|
version_requirements: !ruby/object:Gem::Requirement
|
135
94
|
requirements:
|
136
|
-
- - "
|
95
|
+
- - ">="
|
137
96
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
97
|
+
version: '12.0'
|
139
98
|
- !ruby/object:Gem::Dependency
|
140
99
|
name: simplecov
|
141
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,35 +113,31 @@ description: 'Media Types as mime types are not easily supported by frameworks s
|
|
154
113
|
as rails. '
|
155
114
|
email:
|
156
115
|
- derk-jan+github@karrenbeld.info
|
116
|
+
- info@maxmaton.nl
|
157
117
|
executables: []
|
158
118
|
extensions: []
|
159
119
|
extra_rdoc_files: []
|
160
120
|
files:
|
121
|
+
- ".github/workflows/debian.yml"
|
161
122
|
- ".github/workflows/ruby.yml"
|
162
123
|
- ".gitignore"
|
163
124
|
- ".rubocop.yml"
|
164
|
-
- ".travis.yml"
|
165
125
|
- CHANGELOG.md
|
166
126
|
- Gemfile
|
167
127
|
- Gemfile.lock
|
128
|
+
- LICENSE
|
168
129
|
- README.md
|
169
130
|
- Rakefile
|
170
131
|
- bin/console
|
171
132
|
- bin/setup
|
172
133
|
- lib/media_types.rb
|
173
|
-
- lib/media_types/.dsl.rb.swp
|
174
134
|
- lib/media_types/constructable.rb
|
175
|
-
- lib/media_types/defaults.rb
|
176
135
|
- lib/media_types/dsl.rb
|
136
|
+
- lib/media_types/dsl/errors.rb
|
137
|
+
- lib/media_types/errors.rb
|
177
138
|
- lib/media_types/formatter.rb
|
178
139
|
- lib/media_types/hash.rb
|
179
|
-
- lib/media_types/integrations.rb
|
180
|
-
- lib/media_types/integrations/actionpack.rb
|
181
|
-
- lib/media_types/integrations/http.rb
|
182
|
-
- lib/media_types/minitest/assert_media_type_format.rb
|
183
|
-
- lib/media_types/minitest/assert_media_types_registered.rb
|
184
140
|
- lib/media_types/object.rb
|
185
|
-
- lib/media_types/registrar.rb
|
186
141
|
- lib/media_types/scheme.rb
|
187
142
|
- lib/media_types/scheme/allow_nil.rb
|
188
143
|
- lib/media_types/scheme/any_of.rb
|
@@ -199,6 +154,7 @@ files:
|
|
199
154
|
- lib/media_types/scheme/rules.rb
|
200
155
|
- lib/media_types/scheme/rules_exhausted_guard.rb
|
201
156
|
- lib/media_types/scheme/validation_options.rb
|
157
|
+
- lib/media_types/testing/assertions.rb
|
202
158
|
- lib/media_types/validations.rb
|
203
159
|
- lib/media_types/version.rb
|
204
160
|
- lib/media_types/views.rb
|
@@ -206,7 +162,7 @@ files:
|
|
206
162
|
homepage: https://github.com/SleeplessByte/media-types-ruby
|
207
163
|
licenses: []
|
208
164
|
metadata: {}
|
209
|
-
post_install_message:
|
165
|
+
post_install_message:
|
210
166
|
rdoc_options: []
|
211
167
|
require_paths:
|
212
168
|
- lib
|
@@ -221,8 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
177
|
- !ruby/object:Gem::Version
|
222
178
|
version: '0'
|
223
179
|
requirements: []
|
224
|
-
rubygems_version: 3.
|
225
|
-
signing_key:
|
180
|
+
rubygems_version: 3.1.6
|
181
|
+
signing_key:
|
226
182
|
specification_version: 4
|
227
183
|
summary: Library to create media type definitions, schemes and validations
|
228
184
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
cache: bundler
|
4
|
-
rvm:
|
5
|
-
- 2.4
|
6
|
-
- 2.5
|
7
|
-
- 2.6
|
8
|
-
- rbx-3
|
9
|
-
- ruby-head
|
10
|
-
matrix:
|
11
|
-
allow_failures:
|
12
|
-
- rvm: ruby-head
|
13
|
-
- rvm: rbx-3
|
14
|
-
- rvm: 2.6
|
15
|
-
before_install:
|
16
|
-
- gem update --system
|
17
|
-
- gem --version
|
18
|
-
install:
|
19
|
-
- bundle install --with development --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
|
data/lib/media_types/.dsl.rb.swp
DELETED
Binary file
|
data/lib/media_types/defaults.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module MediaTypes
|
4
|
-
class Defaults
|
5
|
-
def initialize(media_type, &block)
|
6
|
-
self.media_type = media_type
|
7
|
-
|
8
|
-
instance_exec(&block) if block_given?
|
9
|
-
end
|
10
|
-
|
11
|
-
def method_missing(method_name, *arguments, &block)
|
12
|
-
if media_type.respond_to?(method_name)
|
13
|
-
return self.media_type = media_type.send(method_name, *arguments, &block)
|
14
|
-
end
|
15
|
-
|
16
|
-
super
|
17
|
-
end
|
18
|
-
|
19
|
-
def respond_to_missing?(method_name, include_private = false)
|
20
|
-
media_type.respond_to?(method_name) || super
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_constructable
|
24
|
-
media_type
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
attr_accessor :media_type
|
30
|
-
end
|
31
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module MediaTypes
|
4
|
-
INTEGRATION_METHODS = %i[register].freeze
|
5
|
-
|
6
|
-
module_function
|
7
|
-
|
8
|
-
def integrate(integration)
|
9
|
-
INTEGRATION_METHODS.each do |method|
|
10
|
-
next unless integration.respond_to?(method)
|
11
|
-
self.integrations = (integrations || {}).tap do |x|
|
12
|
-
x.merge!(method => (x[method] || []).concat([integration]))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# @!method register(registerable)
|
18
|
-
INTEGRATION_METHODS.each do |method|
|
19
|
-
define_singleton_method method do |*args, &block|
|
20
|
-
(integrations || {}).fetch(method) { [] }.each do |integration|
|
21
|
-
integration.send(method, *args, &block)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
class << self
|
28
|
-
private
|
29
|
-
|
30
|
-
attr_accessor :integrations
|
31
|
-
end
|
32
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'action_dispatch/http/mime_type'
|
4
|
-
|
5
|
-
module MediaTypes
|
6
|
-
module ActionPackIntegration
|
7
|
-
|
8
|
-
module_function
|
9
|
-
|
10
|
-
def register(registerable)
|
11
|
-
mime_type = registerable.to_s
|
12
|
-
symbol = registerable.to_sym
|
13
|
-
synonyms = registerable.aliases
|
14
|
-
|
15
|
-
Mime::Type.register(mime_type, symbol, synonyms)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
integrate ActionPackIntegration
|
20
|
-
end
|
21
|
-
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'http/mime_type'
|
4
|
-
require 'oj'
|
5
|
-
|
6
|
-
module MediaTypes
|
7
|
-
module HttpIntegration
|
8
|
-
|
9
|
-
module_function
|
10
|
-
|
11
|
-
def register(registerable)
|
12
|
-
mime_type = registerable.to_s
|
13
|
-
|
14
|
-
HTTP::MimeType.register_adapter mime_type, AdapterFor(registerable.media_type)
|
15
|
-
HTTP::MimeType.register_alias mime_type, registerable.to_sym
|
16
|
-
|
17
|
-
registerable.aliases.each do |alias_mime_type|
|
18
|
-
HTTP::MimeType.register_alias mime_type, alias_mime_type
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class << self
|
23
|
-
private
|
24
|
-
|
25
|
-
# noinspection RubyInstanceMethodNamingConvention
|
26
|
-
def AdapterFor(media_type) # rubocop:disable Naming/MethodName
|
27
|
-
adapter_name = media_type.split(%r{[./_+-]}).map(&:capitalize).join('').tr('^A-z0-9', '_')
|
28
|
-
|
29
|
-
adapter = MediaTypes::HttpIntegration.const_set(adapter_name, Module.new)
|
30
|
-
adapter.define_singleton_method('encode') do |obj|
|
31
|
-
media_type.validate!(obj)
|
32
|
-
Oj.dump(obj, mode: :compat)
|
33
|
-
end
|
34
|
-
|
35
|
-
adapter.define_singleton_method('decode') do |str|
|
36
|
-
Oj.load(str, mode: :strict).tap do |result|
|
37
|
-
media_type.validate!(result)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
adapter
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
integrate HttpIntegration
|
47
|
-
end
|
@@ -1,166 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'minitest/mock'
|
4
|
-
|
5
|
-
module MediaTypes
|
6
|
-
module Assertions
|
7
|
-
class << self
|
8
|
-
def block_exec_instance(instance, &block)
|
9
|
-
case block.arity
|
10
|
-
when 1, -1
|
11
|
-
instance.instance_exec(instance, &block)
|
12
|
-
else
|
13
|
-
instance.instance_exec(&block)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def assert_media_types_registered(media_type, &block)
|
19
|
-
collector = Collector.new(media_type)
|
20
|
-
Assertions.block_exec_instance(collector, &block)
|
21
|
-
assert_registered_types(media_type, collector.prepare_verify)
|
22
|
-
end
|
23
|
-
|
24
|
-
class Collector
|
25
|
-
def initialize(media_type)
|
26
|
-
self.media_type = media_type
|
27
|
-
self.registers = {}
|
28
|
-
end
|
29
|
-
|
30
|
-
def mime_type(mime_type, symbol:, synonyms: [])
|
31
|
-
registers[mime_type] = { symbol: symbol, synonyms: synonyms }
|
32
|
-
end
|
33
|
-
|
34
|
-
def formatted_mime_type(mime_type_format, &block)
|
35
|
-
collector = FormattedCollector.new(mime_type_format, {})
|
36
|
-
Assertions.block_exec_instance(collector, &block)
|
37
|
-
registers.merge!(collector.to_h)
|
38
|
-
end
|
39
|
-
|
40
|
-
def prepare_verify
|
41
|
-
expected_types_hash = registers.dup
|
42
|
-
expected_types_hash.each do |key, value|
|
43
|
-
expected_types_hash[key] = [value[:symbol], Array(value[:synonyms])]
|
44
|
-
end
|
45
|
-
|
46
|
-
expected_types_hash
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
attr_accessor :media_type, :registers
|
52
|
-
end
|
53
|
-
|
54
|
-
class FormattedCollector
|
55
|
-
def initialize(format, args = {})
|
56
|
-
self.mime_type_format = format
|
57
|
-
self.format_args = args
|
58
|
-
self.registers = {}
|
59
|
-
end
|
60
|
-
|
61
|
-
def version(version, **opts, &block)
|
62
|
-
new_format_args = format_args.merge(version: version)
|
63
|
-
register(new_format_args, **opts, &block)
|
64
|
-
end
|
65
|
-
|
66
|
-
def view(view, **opts, &block)
|
67
|
-
new_format_args = format_args.merge(view: view)
|
68
|
-
register(new_format_args, **opts, &block)
|
69
|
-
end
|
70
|
-
|
71
|
-
def create(**opts, &block)
|
72
|
-
view(CREATE_VIEW, **opts, &block)
|
73
|
-
end
|
74
|
-
|
75
|
-
def collection(**opts, &block)
|
76
|
-
view(COLLECTION_VIEW, **opts, &block)
|
77
|
-
end
|
78
|
-
|
79
|
-
def index(**opts, &block)
|
80
|
-
view(INDEX_VIEW, **opts, &block)
|
81
|
-
end
|
82
|
-
|
83
|
-
def to_h
|
84
|
-
Hash(registers)
|
85
|
-
end
|
86
|
-
|
87
|
-
private
|
88
|
-
|
89
|
-
attr_accessor :mime_type_format, :registers, :format_args
|
90
|
-
|
91
|
-
def register(new_format_args, symbol: nil, synonyms: [], &block)
|
92
|
-
if block_given?
|
93
|
-
collector = FormattedCollector.new(mime_type_format, new_format_args)
|
94
|
-
Assertions.block_exec_instance(collector, &block)
|
95
|
-
registers.merge!(collector.to_h)
|
96
|
-
else
|
97
|
-
formatted_mime_type_format = format(mime_type_format, **new_format_args)
|
98
|
-
registers[formatted_mime_type_format] = { symbol: symbol, synonyms: synonyms }
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
104
|
-
def assert_registered_types(media_type, expected_types_hash)
|
105
|
-
mock = Minitest::Mock.new
|
106
|
-
uncalled = expected_types_hash.dup
|
107
|
-
|
108
|
-
failed = []
|
109
|
-
|
110
|
-
uncalled.length.times do
|
111
|
-
mock.expect(:call, nil) do |registerable|
|
112
|
-
type = registerable.to_s
|
113
|
-
symbol = registerable.to_sym
|
114
|
-
synonyms = registerable.synonyms
|
115
|
-
|
116
|
-
options = uncalled.delete(type)
|
117
|
-
return true if options && options == [symbol, synonyms] && pass
|
118
|
-
|
119
|
-
failed <<
|
120
|
-
MockExpectationError.new(
|
121
|
-
format(
|
122
|
-
'Call failed to match expectations:' + "\n"\
|
123
|
-
'+++ actual [type: %<type>s, symbol: %<symbol>s, synonyms: %<synonyms>s]' + "\n"\
|
124
|
-
'--- expected [type: %<type>s, symbol: %<resolved_symbol>s, synonyms: %<resolved_synonyms>s]',
|
125
|
-
type: type,
|
126
|
-
symbol: symbol,
|
127
|
-
synonyms: synonyms,
|
128
|
-
resolved_symbol: options&.first,
|
129
|
-
resolved_synonyms: options&.last
|
130
|
-
)
|
131
|
-
)
|
132
|
-
end
|
133
|
-
|
134
|
-
false
|
135
|
-
end
|
136
|
-
|
137
|
-
MediaTypes.stub(:register, mock) do
|
138
|
-
if block_given?
|
139
|
-
yield media_type
|
140
|
-
else
|
141
|
-
media_type.register.flatten
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
messages = failed.map(&:message)
|
146
|
-
uncalled.each do |type, options|
|
147
|
-
messages << format(
|
148
|
-
'Call did not occur:' + "\n"\
|
149
|
-
'--- expected: [type: %<type>s, symbol: %<resolved_symbol>s, synonyms: %<resolved_synonyms>s]',
|
150
|
-
type: type,
|
151
|
-
resolved_symbol: options&.first,
|
152
|
-
resolved_synonyms: options&.last
|
153
|
-
)
|
154
|
-
end
|
155
|
-
|
156
|
-
if messages.length.positive?
|
157
|
-
flunk messages.join(",\n")
|
158
|
-
else
|
159
|
-
pass
|
160
|
-
end
|
161
|
-
|
162
|
-
assert mock
|
163
|
-
end
|
164
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
165
|
-
end
|
166
|
-
end
|