mime-types 3.3.1 → 3.4.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.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'mime/types'
4
- require 'minitest_helper'
3
+ require "mime/types"
4
+ require "minitest_helper"
5
5
 
6
6
  describe MIME::Type do
7
7
  def mime_type(content_type)
@@ -9,299 +9,299 @@ describe MIME::Type do
9
9
  end
10
10
 
11
11
  let(:x_appl_x_zip) {
12
- mime_type('x-appl/x-zip') { |t| t.extensions = %w(zip zp) }
12
+ mime_type("x-appl/x-zip") { |t| t.extensions = %w[zip zp] }
13
13
  }
14
- let(:text_plain) { mime_type('text/plain') }
15
- let(:text_html) { mime_type('text/html') }
16
- let(:image_jpeg) { mime_type('image/jpeg') }
14
+ let(:text_plain) { mime_type("text/plain") }
15
+ let(:text_html) { mime_type("text/html") }
16
+ let(:image_jpeg) { mime_type("image/jpeg") }
17
17
  let(:application_javascript) {
18
- mime_type('application/javascript') do |js|
19
- js.friendly('en' => 'JavaScript')
18
+ mime_type("application/javascript") do |js|
19
+ js.friendly("en" => "JavaScript")
20
20
  js.xrefs = {
21
- 'rfc' => %w(rfc4239 rfc4239),
22
- 'template' => %w(application/javascript)
21
+ "rfc" => %w[rfc4239 rfc4239],
22
+ "template" => %w[application/javascript]
23
23
  }
24
- js.encoding = '8bit'
25
- js.extensions = %w(js sj)
24
+ js.encoding = "8bit"
25
+ js.extensions = %w[js sj]
26
26
  js.registered = true
27
27
  end
28
28
  }
29
29
  let(:text_x_yaml) {
30
- mime_type('text/x-yaml') do |yaml|
31
- yaml.extensions = %w(yaml yml)
32
- yaml.encoding = '8bit'
33
- yaml.friendly('en' => 'YAML Structured Document')
30
+ mime_type("text/x-yaml") do |yaml|
31
+ yaml.extensions = %w[yaml yml]
32
+ yaml.encoding = "8bit"
33
+ yaml.friendly("en" => "YAML Structured Document")
34
34
  end
35
35
  }
36
36
  let(:text_x_yaml_with_docs) {
37
37
  text_x_yaml.dup.tap do |yaml|
38
- yaml.docs = 'Test YAML'
38
+ yaml.docs = "Test YAML"
39
39
  end
40
40
  }
41
41
 
42
- describe '.simplified' do
43
- it 'leaves normal types alone' do
44
- assert_equal 'text/plain', MIME::Type.simplified('text/plain')
42
+ describe ".simplified" do
43
+ it "leaves normal types alone" do
44
+ assert_equal "text/plain", MIME::Type.simplified("text/plain")
45
45
  end
46
46
 
47
- it 'does not remove x- prefixes by default' do
48
- assert_equal 'application/x-msword',
49
- MIME::Type.simplified('application/x-msword')
50
- assert_equal 'x-xyz/abc', MIME::Type.simplified('x-xyz/abc')
47
+ it "does not remove x- prefixes by default" do
48
+ assert_equal "application/x-msword",
49
+ MIME::Type.simplified("application/x-msword")
50
+ assert_equal "x-xyz/abc", MIME::Type.simplified("x-xyz/abc")
51
51
  end
52
52
 
53
- it 'removes x- prefixes when requested' do
54
- assert_equal 'application/msword',
55
- MIME::Type.simplified('application/x-msword', remove_x_prefix: true)
56
- assert_equal 'xyz/abc',
57
- MIME::Type.simplified('x-xyz/abc', remove_x_prefix: true)
53
+ it "removes x- prefixes when requested" do
54
+ assert_equal "application/msword",
55
+ MIME::Type.simplified("application/x-msword", remove_x_prefix: true)
56
+ assert_equal "xyz/abc",
57
+ MIME::Type.simplified("x-xyz/abc", remove_x_prefix: true)
58
58
  end
59
59
 
60
- it 'lowercases mixed-case types' do
61
- assert_equal 'text/vcard', MIME::Type.simplified('text/vCard')
60
+ it "lowercases mixed-case types" do
61
+ assert_equal "text/vcard", MIME::Type.simplified("text/vCard")
62
62
  end
63
63
 
64
- it 'returns nil when the value provided is not a valid content type' do
65
- assert_nil MIME::Type.simplified('text')
64
+ it "returns nil when the value provided is not a valid content type" do
65
+ assert_nil MIME::Type.simplified("text")
66
66
  end
67
67
  end
68
68
 
69
- describe '.i18n_key' do
70
- it 'converts text/plain to text.plain' do
71
- assert_equal 'text.plain', MIME::Type.i18n_key('text/plain')
69
+ describe ".i18n_key" do
70
+ it "converts text/plain to text.plain" do
71
+ assert_equal "text.plain", MIME::Type.i18n_key("text/plain")
72
72
  end
73
73
 
74
- it 'does not remove x-prefixes' do
75
- assert_equal 'application.x-msword',
76
- MIME::Type.i18n_key('application/x-msword')
74
+ it "does not remove x-prefixes" do
75
+ assert_equal "application.x-msword",
76
+ MIME::Type.i18n_key("application/x-msword")
77
77
  end
78
78
 
79
- it 'converts text/vCard to text.vcard' do
80
- assert_equal 'text.vcard', MIME::Type.i18n_key('text/vCard')
79
+ it "converts text/vCard to text.vcard" do
80
+ assert_equal "text.vcard", MIME::Type.i18n_key("text/vCard")
81
81
  end
82
82
 
83
- it 'returns nil when the value provided is not a valid content type' do
84
- assert_nil MIME::Type.i18n_key('text')
83
+ it "returns nil when the value provided is not a valid content type" do
84
+ assert_nil MIME::Type.i18n_key("text")
85
85
  end
86
86
  end
87
87
 
88
- describe '.new' do
89
- it 'fails if an invalid content type is provided' do
88
+ describe ".new" do
89
+ it "fails if an invalid content type is provided" do
90
90
  exception = assert_raises MIME::Type::InvalidContentType do
91
- MIME::Type.new('apps')
91
+ MIME::Type.new("apps")
92
92
  end
93
93
  assert_equal 'Invalid Content-Type "apps"', exception.to_s
94
94
  end
95
95
 
96
- it 'creates a valid content type just from a string' do
97
- type = MIME::Type.new('text/x-yaml')
96
+ it "creates a valid content type just from a string" do
97
+ type = MIME::Type.new("text/x-yaml")
98
98
 
99
99
  assert_instance_of MIME::Type, type
100
- assert_equal 'text/x-yaml', type.content_type
100
+ assert_equal "text/x-yaml", type.content_type
101
101
  end
102
102
 
103
- it 'yields the content type in a block' do
104
- MIME::Type.new('text/x-yaml') do |type|
103
+ it "yields the content type in a block" do
104
+ MIME::Type.new("text/x-yaml") do |type|
105
105
  assert_instance_of MIME::Type, type
106
- assert_equal 'text/x-yaml', type.content_type
106
+ assert_equal "text/x-yaml", type.content_type
107
107
  end
108
108
  end
109
109
 
110
- it 'creates a valid content type from a hash' do
110
+ it "creates a valid content type from a hash" do
111
111
  type = MIME::Type.new(
112
- 'content-type' => 'text/x-yaml',
113
- 'obsolete' => true
112
+ "content-type" => "text/x-yaml",
113
+ "obsolete" => true
114
114
  )
115
115
  assert_instance_of MIME::Type, type
116
- assert_equal 'text/x-yaml', type.content_type
116
+ assert_equal "text/x-yaml", type.content_type
117
117
  assert type.obsolete?
118
118
  end
119
119
 
120
- it 'creates a valid content type from an array' do
121
- type = MIME::Type.new(%w(text/x-yaml yaml yml yz))
120
+ it "creates a valid content type from an array" do
121
+ type = MIME::Type.new(%w[text/x-yaml yaml yml yz])
122
122
  assert_instance_of MIME::Type, type
123
- assert_equal 'text/x-yaml', type.content_type
124
- assert_equal %w(yaml yml yz), type.extensions
123
+ assert_equal "text/x-yaml", type.content_type
124
+ assert_equal %w[yaml yml yz], type.extensions
125
125
  end
126
126
  end
127
127
 
128
- describe '#like?' do
129
- it 'compares two MIME::Types on #simplified values without x- prefixes' do
128
+ describe "#like?" do
129
+ it "compares two MIME::Types on #simplified values without x- prefixes" do
130
130
  assert text_plain.like?(text_plain)
131
131
  refute text_plain.like?(text_html)
132
132
  end
133
133
 
134
- it 'compares MIME::Type against string without x- prefixes' do
134
+ it "compares MIME::Type against string without x- prefixes" do
135
135
  assert text_plain.like?(text_plain.to_s)
136
136
  refute text_plain.like?(text_html.to_s)
137
137
  end
138
138
  end
139
139
 
140
- describe '#<=>' do
141
- it 'correctly compares identical types' do
140
+ describe "#<=>" do
141
+ it "correctly compares identical types" do
142
142
  assert_equal text_plain, text_plain
143
143
  end
144
144
 
145
- it 'correctly compares equivalent types' do
146
- right = mime_type('text/Plain')
145
+ it "correctly compares equivalent types" do
146
+ right = mime_type("text/Plain")
147
147
  refute_same text_plain, right
148
148
  assert_equal text_plain, right
149
149
  end
150
150
 
151
- it 'correctly compares types that sort earlier' do
151
+ it "correctly compares types that sort earlier" do
152
152
  refute_equal text_html, text_plain
153
153
  assert_operator text_html, :<, text_plain
154
154
  end
155
155
 
156
- it 'correctly compares types that sort later' do
156
+ it "correctly compares types that sort later" do
157
157
  refute_equal text_plain, text_html
158
158
  assert_operator text_plain, :>, text_html
159
159
  end
160
160
 
161
- it 'correctly compares types against equivalent strings' do
162
- assert_equal text_plain, 'text/plain'
161
+ it "correctly compares types against equivalent strings" do
162
+ assert_equal text_plain, "text/plain"
163
163
  end
164
164
 
165
- it 'correctly compares types against strings that sort earlier' do
166
- refute_equal text_html, 'text/plain'
167
- assert_operator text_html, :<, 'text/plain'
165
+ it "correctly compares types against strings that sort earlier" do
166
+ refute_equal text_html, "text/plain"
167
+ assert_operator text_html, :<, "text/plain"
168
168
  end
169
169
 
170
- it 'correctly compares types against strings that sort later' do
171
- refute_equal text_plain, 'text/html'
172
- assert_operator text_plain, :>, 'text/html'
170
+ it "correctly compares types against strings that sort later" do
171
+ refute_equal text_plain, "text/html"
172
+ assert_operator text_plain, :>, "text/html"
173
173
  end
174
174
 
175
- it 'correctly compares against nil' do
175
+ it "correctly compares against nil" do
176
176
  refute_equal text_html, nil
177
177
  assert_operator text_plain, :<, nil
178
178
  end
179
179
  end
180
180
 
181
- describe '#ascii?' do
182
- it 'defaults to true for text/* types' do
181
+ describe "#ascii?" do
182
+ it "defaults to true for text/* types" do
183
183
  assert text_plain.ascii?
184
184
  end
185
185
 
186
- it 'defaults to false for non-text/* types' do
186
+ it "defaults to false for non-text/* types" do
187
187
  refute image_jpeg.ascii?
188
188
  end
189
189
  end
190
190
 
191
- describe '#binary?' do
192
- it 'defaults to false for text/* types' do
191
+ describe "#binary?" do
192
+ it "defaults to false for text/* types" do
193
193
  refute text_plain.binary?
194
194
  end
195
195
 
196
- it 'defaults to true for non-text/* types' do
196
+ it "defaults to true for non-text/* types" do
197
197
  assert image_jpeg.binary?
198
198
  end
199
199
  end
200
200
 
201
- describe '#complete?' do
202
- it 'is true when there are extensions' do
201
+ describe "#complete?" do
202
+ it "is true when there are extensions" do
203
203
  assert text_x_yaml.complete?
204
204
  end
205
205
 
206
- it 'is false when there are no extensions' do
207
- refute mime_type('text/plain').complete?
206
+ it "is false when there are no extensions" do
207
+ refute mime_type("text/plain").complete?
208
208
  end
209
209
  end
210
210
 
211
- describe '#content_type' do
212
- it 'preserves the original case' do
213
- assert_equal 'text/plain', text_plain.content_type
214
- assert_equal 'text/vCard', mime_type('text/vCard').content_type
211
+ describe "#content_type" do
212
+ it "preserves the original case" do
213
+ assert_equal "text/plain", text_plain.content_type
214
+ assert_equal "text/vCard", mime_type("text/vCard").content_type
215
215
  end
216
216
 
217
- it 'does not remove x- prefixes' do
218
- assert_equal 'x-appl/x-zip', x_appl_x_zip.content_type
217
+ it "does not remove x- prefixes" do
218
+ assert_equal "x-appl/x-zip", x_appl_x_zip.content_type
219
219
  end
220
220
  end
221
221
 
222
- describe '#default_encoding' do
223
- it 'is quoted-printable for text/* types' do
224
- assert_equal 'quoted-printable', text_plain.default_encoding
222
+ describe "#default_encoding" do
223
+ it "is quoted-printable for text/* types" do
224
+ assert_equal "quoted-printable", text_plain.default_encoding
225
225
  end
226
226
 
227
- it 'is base64 for non-text/* types' do
228
- assert_equal 'base64', image_jpeg.default_encoding
227
+ it "is base64 for non-text/* types" do
228
+ assert_equal "base64", image_jpeg.default_encoding
229
229
  end
230
230
  end
231
231
 
232
- describe '#encoding, #encoding=' do
233
- it 'returns #default_encoding if not set explicitly' do
234
- assert_equal 'quoted-printable', text_plain.encoding
235
- assert_equal 'base64', image_jpeg.encoding
232
+ describe "#encoding, #encoding=" do
233
+ it "returns #default_encoding if not set explicitly" do
234
+ assert_equal "quoted-printable", text_plain.encoding
235
+ assert_equal "base64", image_jpeg.encoding
236
236
  end
237
237
 
238
- it 'returns the set value when set' do
239
- text_plain.encoding = '8bit'
240
- assert_equal '8bit', text_plain.encoding
238
+ it "returns the set value when set" do
239
+ text_plain.encoding = "8bit"
240
+ assert_equal "8bit", text_plain.encoding
241
241
  end
242
242
 
243
- it 'resets to the default encoding when set to nil or :default' do
244
- text_plain.encoding = '8bit'
243
+ it "resets to the default encoding when set to nil or :default" do
244
+ text_plain.encoding = "8bit"
245
245
  text_plain.encoding = nil
246
246
  assert_equal text_plain.default_encoding, text_plain.encoding
247
247
  text_plain.encoding = :default
248
248
  assert_equal text_plain.default_encoding, text_plain.encoding
249
249
  end
250
250
 
251
- it 'raises a MIME::Type::InvalidEncoding for an invalid encoding' do
251
+ it "raises a MIME::Type::InvalidEncoding for an invalid encoding" do
252
252
  exception = assert_raises MIME::Type::InvalidEncoding do
253
- text_plain.encoding = 'binary'
253
+ text_plain.encoding = "binary"
254
254
  end
255
255
  assert_equal 'Invalid Encoding "binary"', exception.to_s
256
256
  end
257
257
  end
258
258
 
259
- describe '#eql?' do
260
- it 'is not true for a non-MIME::Type' do
261
- refute text_plain.eql?('text/plain')
259
+ describe "#eql?" do
260
+ it "is not true for a non-MIME::Type" do
261
+ refute text_plain.eql?("text/plain")
262
262
  end
263
263
 
264
- it 'is not true for a different MIME::Type' do
264
+ it "is not true for a different MIME::Type" do
265
265
  refute text_plain.eql?(image_jpeg)
266
266
  end
267
267
 
268
- it 'is true for an equivalent MIME::Type' do
269
- assert text_plain, mime_type('text/Plain')
268
+ it "is true for an equivalent MIME::Type" do
269
+ assert text_plain, mime_type("text/Plain")
270
270
  end
271
271
  end
272
272
 
273
- describe '#extensions, #extensions=' do
274
- it 'returns an array of extensions' do
275
- assert_equal %w(yaml yml), text_x_yaml.extensions
276
- assert_equal %w(zip zp), x_appl_x_zip.extensions
273
+ describe "#extensions, #extensions=" do
274
+ it "returns an array of extensions" do
275
+ assert_equal %w[yaml yml], text_x_yaml.extensions
276
+ assert_equal %w[zip zp], x_appl_x_zip.extensions
277
277
  end
278
278
 
279
- it 'sets a single extension when provided a single value' do
280
- text_x_yaml.extensions = 'yaml'
281
- assert_equal %w(yaml), text_x_yaml.extensions
279
+ it "sets a single extension when provided a single value" do
280
+ text_x_yaml.extensions = "yaml"
281
+ assert_equal %w[yaml], text_x_yaml.extensions
282
282
  end
283
283
 
284
- it 'deduplicates extensions' do
285
- text_x_yaml.extensions = %w(yaml yaml)
286
- assert_equal %w(yaml), text_x_yaml.extensions
284
+ it "deduplicates extensions" do
285
+ text_x_yaml.extensions = %w[yaml yaml]
286
+ assert_equal %w[yaml], text_x_yaml.extensions
287
287
  end
288
288
  end
289
289
 
290
- describe '#add_extensions' do
291
- it 'does not modify extensions when provided nil' do
290
+ describe "#add_extensions" do
291
+ it "does not modify extensions when provided nil" do
292
292
  text_x_yaml.add_extensions(nil)
293
- assert_equal %w(yaml yml), text_x_yaml.extensions
293
+ assert_equal %w[yaml yml], text_x_yaml.extensions
294
294
  end
295
295
 
296
- it 'remains deduplicated with duplicate values' do
297
- text_x_yaml.add_extensions('yaml')
298
- assert_equal %w(yaml yml), text_x_yaml.extensions
299
- text_x_yaml.add_extensions(%w(yaml yz))
300
- assert_equal %w(yaml yml yz), text_x_yaml.extensions
296
+ it "remains deduplicated with duplicate values" do
297
+ text_x_yaml.add_extensions("yaml")
298
+ assert_equal %w[yaml yml], text_x_yaml.extensions
299
+ text_x_yaml.add_extensions(%w[yaml yz])
300
+ assert_equal %w[yaml yml yz], text_x_yaml.extensions
301
301
  end
302
302
  end
303
303
 
304
- describe '#priority_compare' do
304
+ describe "#priority_compare" do
305
305
  def assert_priority_less(left, right)
306
306
  assert_equal(-1, left.priority_compare(right))
307
307
  end
@@ -320,17 +320,17 @@ describe MIME::Type do
320
320
  assert_priority_more right, left
321
321
  end
322
322
 
323
- let(:text_1) { mime_type('text/1') }
324
- let(:text_1p) { mime_type('text/1') }
325
- let(:text_2) { mime_type('text/2') }
323
+ let(:text_1) { mime_type("text/1") }
324
+ let(:text_1p) { mime_type("text/1") }
325
+ let(:text_2) { mime_type("text/2") }
326
326
 
327
- it 'sorts (1) based on the simplified type' do
327
+ it "sorts (1) based on the simplified type" do
328
328
  assert_priority text_1, text_1p, text_2
329
329
  end
330
330
 
331
- it 'sorts (2) based on extensions' do
332
- text_1.extensions = ['foo', 'bar']
333
- text_2.extensions = ['foo']
331
+ it "sorts (2) based on extensions" do
332
+ text_1.extensions = ["foo", "bar"]
333
+ text_2.extensions = ["foo"]
334
334
 
335
335
  assert_priority_same text_1, text_2
336
336
 
@@ -339,272 +339,283 @@ describe MIME::Type do
339
339
  assert_priority_more text_1, text_2
340
340
  end
341
341
 
342
- it 'sorts (3) based on the registration state' do
342
+ it "sorts (3) based on the registration state" do
343
343
  text_1.registered = text_1p.registered = true
344
344
  text_1b = mime_type(text_1) { |t| t.registered = false }
345
345
 
346
346
  assert_priority text_1, text_1p, text_1b
347
347
  end
348
348
 
349
- it 'sorts (4) based on the completeness' do
350
- text_1.extensions = text_1p.extensions = '1'
349
+ it "sorts (4) based on the completeness" do
350
+ text_1.extensions = text_1p.extensions = "1"
351
351
  text_1b = mime_type(text_1) { |t| t.extensions = nil }
352
352
 
353
353
  assert_priority text_1, text_1p, text_1b
354
354
  end
355
355
 
356
- it 'sorts (5) based on obsolete status' do
356
+ it "sorts (5) based on obsolete status" do
357
357
  text_1.obsolete = text_1p.obsolete = false
358
358
  text_1b = mime_type(text_1) { |t| t.obsolete = true }
359
359
 
360
360
  assert_priority text_1, text_1p, text_1b
361
361
  end
362
362
 
363
- it 'sorts (5) based on the use-instead value' do
363
+ it "sorts (5) based on the use-instead value" do
364
364
  text_1.obsolete = text_1p.obsolete = true
365
- text_1.use_instead = text_1p.use_instead = 'abc/xyz'
365
+ text_1.use_instead = text_1p.use_instead = "abc/xyz"
366
366
  text_1b = mime_type(text_1) { |t| t.use_instead = nil }
367
367
 
368
368
  assert_priority text_1, text_1p, text_1b
369
369
 
370
- text_1b.use_instead = 'abc/zzz'
370
+ text_1b.use_instead = "abc/zzz"
371
371
 
372
372
  assert_priority text_1, text_1p, text_1b
373
373
  end
374
374
  end
375
375
 
376
- describe '#raw_media_type' do
377
- it 'extracts the media type as case-preserved' do
378
- assert_equal 'Text', mime_type('Text/plain').raw_media_type
376
+ describe "#raw_media_type" do
377
+ it "extracts the media type as case-preserved" do
378
+ assert_equal "Text", mime_type("Text/plain").raw_media_type
379
379
  end
380
380
 
381
- it 'does not remove x- prefixes' do
382
- assert_equal('x-appl', x_appl_x_zip.raw_media_type)
381
+ it "does not remove x- prefixes" do
382
+ assert_equal("x-appl", x_appl_x_zip.raw_media_type)
383
383
  end
384
384
  end
385
385
 
386
- describe '#media_type' do
387
- it 'extracts the media type as lowercase' do
388
- assert_equal 'text', text_plain.media_type
386
+ describe "#media_type" do
387
+ it "extracts the media type as lowercase" do
388
+ assert_equal "text", text_plain.media_type
389
389
  end
390
390
 
391
- it 'does not remove x- prefixes' do
392
- assert_equal('x-appl', x_appl_x_zip.media_type)
391
+ it "does not remove x- prefixes" do
392
+ assert_equal("x-appl", x_appl_x_zip.media_type)
393
393
  end
394
394
  end
395
395
 
396
- describe '#raw_media_type' do
397
- it 'extracts the media type as case-preserved' do
398
- assert_equal 'Text', mime_type('Text/plain').raw_media_type
396
+ describe "#raw_media_type" do
397
+ it "extracts the media type as case-preserved" do
398
+ assert_equal "Text", mime_type("Text/plain").raw_media_type
399
399
  end
400
400
 
401
- it 'does not remove x- prefixes' do
402
- assert_equal('x-appl', x_appl_x_zip.raw_media_type)
401
+ it "does not remove x- prefixes" do
402
+ assert_equal("x-appl", x_appl_x_zip.raw_media_type)
403
403
  end
404
404
  end
405
405
 
406
- describe '#sub_type' do
407
- it 'extracts the sub type as lowercase' do
408
- assert_equal 'plain', text_plain.sub_type
406
+ describe "#sub_type" do
407
+ it "extracts the sub type as lowercase" do
408
+ assert_equal "plain", text_plain.sub_type
409
409
  end
410
410
 
411
- it 'does not remove x- prefixes' do
412
- assert_equal('x-zip', x_appl_x_zip.sub_type)
411
+ it "does not remove x- prefixes" do
412
+ assert_equal("x-zip", x_appl_x_zip.sub_type)
413
413
  end
414
414
  end
415
415
 
416
- describe '#raw_sub_type' do
417
- it 'extracts the sub type as case-preserved' do
418
- assert_equal 'Plain', mime_type('text/Plain').raw_sub_type
416
+ describe "#raw_sub_type" do
417
+ it "extracts the sub type as case-preserved" do
418
+ assert_equal "Plain", mime_type("text/Plain").raw_sub_type
419
419
  end
420
420
 
421
- it 'does not remove x- prefixes' do
422
- assert_equal('x-zip', x_appl_x_zip.raw_sub_type)
421
+ it "does not remove x- prefixes" do
422
+ assert_equal("x-zip", x_appl_x_zip.raw_sub_type)
423
423
  end
424
424
  end
425
425
 
426
- describe '#to_h' do
427
- let(:t) { mime_type('a/b') }
426
+ describe "#to_h" do
427
+ let(:t) { mime_type("a/b") }
428
428
 
429
- it 'has the required keys (content-type, registered, encoding)' do
430
- assert_has_keys t.to_h, %w(content-type registered encoding)
429
+ it "has the required keys (content-type, registered, encoding)" do
430
+ assert_has_keys t.to_h, %w[content-type registered encoding]
431
431
  end
432
432
 
433
- it 'has the docs key if there are documents' do
434
- assert_has_keys mime_type(t) { |v| v.docs = 'a' }.to_h, %w(docs)
433
+ it "has the docs key if there are documents" do
434
+ assert_has_keys mime_type(t) { |v| v.docs = "a" }.to_h, %w[docs]
435
435
  end
436
436
 
437
- it 'has the extensions key if set' do
438
- assert_has_keys mime_type(t) { |v| v.extensions = 'a' }.to_h,
439
- 'extensions'
437
+ it "has the extensions key if set" do
438
+ assert_has_keys mime_type(t) { |v| v.extensions = "a" }.to_h,
439
+ "extensions"
440
440
  end
441
441
 
442
- it 'has the preferred-extension key if set' do
443
- assert_has_keys mime_type(t) { |v| v.preferred_extension = 'a' }.to_h,
444
- 'preferred-extension'
442
+ it "has the preferred-extension key if set" do
443
+ assert_has_keys mime_type(t) { |v| v.preferred_extension = "a" }.to_h,
444
+ "preferred-extension"
445
445
  end
446
446
 
447
- it 'has the obsolete key if set' do
448
- assert_has_keys mime_type(t) { |v| v.obsolete = true }.to_h, 'obsolete'
447
+ it "has the obsolete key if set" do
448
+ assert_has_keys mime_type(t) { |v| v.obsolete = true }.to_h, "obsolete"
449
449
  end
450
450
 
451
- it 'has the obsolete and use-instead keys if set' do
451
+ it "has the obsolete and use-instead keys if set" do
452
452
  assert_has_keys mime_type(t) { |v|
453
453
  v.obsolete = true
454
- v.use_instead = 'c/d'
455
- }.to_h, %w(obsolete use-instead)
454
+ v.use_instead = "c/d"
455
+ }.to_h, %w[obsolete use-instead]
456
456
  end
457
457
 
458
- it 'has the signature key if set' do
459
- assert_has_keys mime_type(t) { |v| v.signature = true }.to_h, 'signature'
458
+ it "has the signature key if set" do
459
+ assert_has_keys mime_type(t) { |v| v.signature = true }.to_h, "signature"
460
460
  end
461
461
  end
462
462
 
463
- describe '#to_json' do
464
- let(:expected) {
463
+ describe "#to_json" do
464
+ let(:expected_1) {
465
465
  '{"content-type":"a/b","encoding":"base64","registered":false}'
466
466
  }
467
+ let(:expected_2) {
468
+ '{"content-type":"a/b","encoding":"base64","registered":true,"provisional":true}'
469
+ }
467
470
 
468
- it 'converts to JSON when requested' do
469
- assert_equal expected, mime_type('a/b').to_json
471
+ it "converts to JSON when requested" do
472
+ assert_equal expected_1, mime_type("a/b").to_json
473
+ end
474
+
475
+ it "converts to JSON with provisional when requested" do
476
+ type = mime_type("a/b") do |t|
477
+ t.registered = true
478
+ t.provisional = true
479
+ end
480
+ assert_equal expected_2, type.to_json
470
481
  end
471
482
  end
472
483
 
473
- describe '#to_s, #to_str' do
474
- it 'represents itself as a string of the canonical content_type' do
475
- assert_equal 'text/plain', text_plain.to_s
484
+ describe "#to_s, #to_str" do
485
+ it "represents itself as a string of the canonical content_type" do
486
+ assert_equal "text/plain", text_plain.to_s
476
487
  end
477
488
 
478
- it 'acts like a string of the canonical content_type for comparison' do
479
- assert_equal text_plain, 'text/plain'
489
+ it "acts like a string of the canonical content_type for comparison" do
490
+ assert_equal text_plain, "text/plain"
480
491
  end
481
492
 
482
- it 'acts like a string for other purposes' do
483
- assert_equal 'stringy', 'text/plain'.sub(text_plain, 'stringy')
493
+ it "acts like a string for other purposes" do
494
+ assert_equal "stringy", "text/plain".sub(text_plain, "stringy")
484
495
  end
485
496
  end
486
497
 
487
- describe '#xrefs, #xrefs=' do
498
+ describe "#xrefs, #xrefs=" do
488
499
  let(:expected) {
489
- MIME::Types::Container.new('rfc' => Set['rfc1234', 'rfc5678'])
500
+ MIME::Types::Container.new("rfc" => Set["rfc1234", "rfc5678"])
490
501
  }
491
502
 
492
- it 'returns the expected results' do
503
+ it "returns the expected results" do
493
504
  application_javascript.xrefs = {
494
- 'rfc' => %w(rfc5678 rfc1234 rfc1234)
505
+ "rfc" => %w[rfc5678 rfc1234 rfc1234]
495
506
  }
496
507
 
497
508
  assert_equal expected, application_javascript.xrefs
498
509
  end
499
510
  end
500
511
 
501
- describe '#xref_urls' do
512
+ describe "#xref_urls" do
502
513
  let(:expected) {
503
514
  [
504
- 'http://www.iana.org/go/draft1',
505
- 'http://www.iana.org/assignments/media-types/a/b',
506
- 'http://www.iana.org/assignments/media-types/media-types.xhtml#p-1',
507
- 'http://www.iana.org/go/rfc-1',
508
- 'http://www.rfc-editor.org/errata_search.php?eid=err-1',
509
- 'http://example.org',
510
- 'text'
515
+ "http://www.iana.org/go/draft1",
516
+ "http://www.iana.org/assignments/media-types/a/b",
517
+ "http://www.iana.org/assignments/media-types/media-types.xhtml#p-1",
518
+ "http://www.iana.org/go/rfc-1",
519
+ "http://www.rfc-editor.org/errata_search.php?eid=err-1",
520
+ "http://example.org",
521
+ "text"
511
522
  ]
512
523
  }
513
524
 
514
525
  let(:type) {
515
- mime_type('a/b').tap do |t|
526
+ mime_type("a/b").tap do |t|
516
527
  t.xrefs = {
517
- 'draft' => ['RFC1'],
518
- 'template' => ['a/b'],
519
- 'person' => ['p-1'],
520
- 'rfc' => ['rfc-1'],
521
- 'rfc-errata' => ['err-1'],
522
- 'uri' => ['http://example.org'],
523
- 'text' => ['text']
528
+ "draft" => ["RFC1"],
529
+ "template" => ["a/b"],
530
+ "person" => ["p-1"],
531
+ "rfc" => ["rfc-1"],
532
+ "rfc-errata" => ["err-1"],
533
+ "uri" => ["http://example.org"],
534
+ "text" => ["text"]
524
535
  }
525
536
  end
526
537
  }
527
538
 
528
- it 'translates according to given rules' do
539
+ it "translates according to given rules" do
529
540
  assert_equal expected, type.xref_urls
530
541
  end
531
542
  end
532
543
 
533
- describe '#use_instead' do
534
- it 'is nil unless the type is obsolete' do
544
+ describe "#use_instead" do
545
+ it "is nil unless the type is obsolete" do
535
546
  assert_nil text_plain.use_instead
536
547
  end
537
548
 
538
- it 'is nil if not set and the type is obsolete' do
549
+ it "is nil if not set and the type is obsolete" do
539
550
  text_plain.obsolete = true
540
551
  assert_nil text_plain.use_instead
541
552
  end
542
553
 
543
- it 'is a different type if set and the type is obsolete' do
554
+ it "is a different type if set and the type is obsolete" do
544
555
  text_plain.obsolete = true
545
- text_plain.use_instead = 'text/html'
546
- assert_equal 'text/html', text_plain.use_instead
556
+ text_plain.use_instead = "text/html"
557
+ assert_equal "text/html", text_plain.use_instead
547
558
  end
548
559
  end
549
560
 
550
- describe '#preferred_extension, #preferred_extension=' do
551
- it 'is nil when not set and there are no extensions' do
561
+ describe "#preferred_extension, #preferred_extension=" do
562
+ it "is nil when not set and there are no extensions" do
552
563
  assert_nil text_plain.preferred_extension
553
564
  end
554
565
 
555
- it 'is the first extension when not set but there are extensions' do
556
- assert_equal 'yaml', text_x_yaml.preferred_extension
566
+ it "is the first extension when not set but there are extensions" do
567
+ assert_equal "yaml", text_x_yaml.preferred_extension
557
568
  end
558
569
 
559
- it 'is the extension provided when set' do
560
- text_x_yaml.preferred_extension = 'yml'
561
- assert_equal 'yml', text_x_yaml.preferred_extension
570
+ it "is the extension provided when set" do
571
+ text_x_yaml.preferred_extension = "yml"
572
+ assert_equal "yml", text_x_yaml.preferred_extension
562
573
  end
563
574
 
564
- it 'is adds the preferred extension if it does not exist' do
565
- text_x_yaml.preferred_extension = 'yz'
566
- assert_equal 'yz', text_x_yaml.preferred_extension
567
- assert_includes text_x_yaml.extensions, 'yz'
575
+ it "is adds the preferred extension if it does not exist" do
576
+ text_x_yaml.preferred_extension = "yz"
577
+ assert_equal "yz", text_x_yaml.preferred_extension
578
+ assert_includes text_x_yaml.extensions, "yz"
568
579
  end
569
580
  end
570
581
 
571
- describe '#friendly' do
572
- it 'returns English by default' do
573
- assert_equal 'YAML Structured Document', text_x_yaml.friendly
582
+ describe "#friendly" do
583
+ it "returns English by default" do
584
+ assert_equal "YAML Structured Document", text_x_yaml.friendly
574
585
  end
575
586
 
576
- it 'returns English when requested' do
577
- assert_equal 'YAML Structured Document', text_x_yaml.friendly('en')
578
- assert_equal 'YAML Structured Document', text_x_yaml.friendly(:en)
587
+ it "returns English when requested" do
588
+ assert_equal "YAML Structured Document", text_x_yaml.friendly("en")
589
+ assert_equal "YAML Structured Document", text_x_yaml.friendly(:en)
579
590
  end
580
591
 
581
- it 'returns nothing for an unknown language' do
582
- assert_nil text_x_yaml.friendly('zz')
592
+ it "returns nothing for an unknown language" do
593
+ assert_nil text_x_yaml.friendly("zz")
583
594
  end
584
595
 
585
- it 'merges new values from an array parameter' do
586
- expected = { 'en' => 'Text files' }
587
- assert_equal expected, text_plain.friendly(['en', 'Text files'])
588
- expected.update('fr' => 'des fichiers texte')
596
+ it "merges new values from an array parameter" do
597
+ expected = {"en" => "Text files"}
598
+ assert_equal expected, text_plain.friendly(["en", "Text files"])
599
+ expected.update("fr" => "des fichiers texte")
589
600
  assert_equal expected,
590
- text_plain.friendly(['fr', 'des fichiers texte'])
601
+ text_plain.friendly(["fr", "des fichiers texte"])
591
602
  end
592
603
 
593
- it 'merges new values from a hash parameter' do
594
- expected = { 'en' => 'Text files' }
604
+ it "merges new values from a hash parameter" do
605
+ expected = {"en" => "Text files"}
595
606
  assert_equal expected, text_plain.friendly(expected)
596
- french = { 'fr' => 'des fichiers texte' }
607
+ french = {"fr" => "des fichiers texte"}
597
608
  expected.update(french)
598
609
  assert_equal expected, text_plain.friendly(french)
599
610
  end
600
611
 
601
- it 'raises an ArgumentError if an unknown value is provided' do
612
+ it "raises an ArgumentError if an unknown value is provided" do
602
613
  exception = assert_raises ArgumentError do
603
614
  text_plain.friendly(1)
604
615
  end
605
616
 
606
- assert_equal 'Expected a language or translation set, not 1',
607
- exception.message
617
+ assert_equal "Expected a language or translation set, not 1",
618
+ exception.message
608
619
  end
609
620
  end
610
621
  end