media_types 0.6.2 → 2.1.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/.github/workflows/debian.yml +42 -0
- data/.github/workflows/ruby.yml +22 -0
- data/.gitignore +10 -10
- data/CHANGELOG.md +76 -41
- data/Gemfile +6 -6
- data/Gemfile.lock +17 -83
- data/LICENSE +21 -0
- data/README.md +364 -91
- data/Rakefile +12 -12
- data/lib/media_types.rb +58 -2
- data/lib/media_types/constructable.rb +36 -10
- data/lib/media_types/dsl.rb +110 -29
- data/lib/media_types/dsl/errors.rb +18 -0
- data/lib/media_types/errors.rb +19 -0
- data/lib/media_types/scheme.rb +153 -2
- 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 +15 -5
- data/lib/media_types/version.rb +1 -1
- data/media_types.gemspec +4 -7
- metadata +20 -62
- data/.travis.yml +0 -19
- 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:
|
4
|
+
version: 2.1.0
|
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-12 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: '12.
|
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: '12.
|
97
|
+
version: '12.0'
|
139
98
|
- !ruby/object:Gem::Dependency
|
140
99
|
name: simplecov
|
141
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,33 +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"
|
122
|
+
- ".github/workflows/ruby.yml"
|
161
123
|
- ".gitignore"
|
162
124
|
- ".rubocop.yml"
|
163
|
-
- ".travis.yml"
|
164
125
|
- CHANGELOG.md
|
165
126
|
- Gemfile
|
166
127
|
- Gemfile.lock
|
128
|
+
- LICENSE
|
167
129
|
- README.md
|
168
130
|
- Rakefile
|
169
131
|
- bin/console
|
170
132
|
- bin/setup
|
171
133
|
- lib/media_types.rb
|
172
134
|
- lib/media_types/constructable.rb
|
173
|
-
- lib/media_types/defaults.rb
|
174
135
|
- lib/media_types/dsl.rb
|
136
|
+
- lib/media_types/dsl/errors.rb
|
137
|
+
- lib/media_types/errors.rb
|
175
138
|
- lib/media_types/formatter.rb
|
176
139
|
- lib/media_types/hash.rb
|
177
|
-
- lib/media_types/integrations.rb
|
178
|
-
- lib/media_types/integrations/actionpack.rb
|
179
|
-
- lib/media_types/integrations/http.rb
|
180
|
-
- lib/media_types/minitest/assert_media_type_format.rb
|
181
|
-
- lib/media_types/minitest/assert_media_types_registered.rb
|
182
140
|
- lib/media_types/object.rb
|
183
|
-
- lib/media_types/registrar.rb
|
184
141
|
- lib/media_types/scheme.rb
|
185
142
|
- lib/media_types/scheme/allow_nil.rb
|
186
143
|
- lib/media_types/scheme/any_of.rb
|
@@ -197,6 +154,7 @@ files:
|
|
197
154
|
- lib/media_types/scheme/rules.rb
|
198
155
|
- lib/media_types/scheme/rules_exhausted_guard.rb
|
199
156
|
- lib/media_types/scheme/validation_options.rb
|
157
|
+
- lib/media_types/testing/assertions.rb
|
200
158
|
- lib/media_types/validations.rb
|
201
159
|
- lib/media_types/version.rb
|
202
160
|
- lib/media_types/views.rb
|
@@ -204,7 +162,7 @@ files:
|
|
204
162
|
homepage: https://github.com/SleeplessByte/media-types-ruby
|
205
163
|
licenses: []
|
206
164
|
metadata: {}
|
207
|
-
post_install_message:
|
165
|
+
post_install_message:
|
208
166
|
rdoc_options: []
|
209
167
|
require_paths:
|
210
168
|
- lib
|
@@ -219,8 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
177
|
- !ruby/object:Gem::Version
|
220
178
|
version: '0'
|
221
179
|
requirements: []
|
222
|
-
rubygems_version: 3.
|
223
|
-
signing_key:
|
180
|
+
rubygems_version: 3.1.6
|
181
|
+
signing_key:
|
224
182
|
specification_version: 4
|
225
183
|
summary: Library to create media type definitions, schemes and validations
|
226
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/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
|