iiif-presentation 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +2 -2
  3. data/.gitignore +1 -0
  4. data/Gemfile +2 -0
  5. data/README.md +22 -1
  6. data/VERSION +1 -1
  7. data/iiif-presentation.gemspec +2 -1
  8. data/lib/iiif/presentation/canvas.rb +4 -0
  9. data/lib/iiif/presentation/service.rb +12 -0
  10. data/lib/iiif/presentation.rb +5 -4
  11. data/lib/iiif/service.rb +38 -103
  12. data/lib/iiif/v3/abstract_resource.rb +491 -0
  13. data/lib/iiif/v3/presentation/annotation.rb +74 -0
  14. data/lib/iiif/v3/presentation/annotation_collection.rb +38 -0
  15. data/lib/iiif/v3/presentation/annotation_page.rb +53 -0
  16. data/lib/iiif/v3/presentation/canvas.rb +82 -0
  17. data/lib/iiif/v3/presentation/choice.rb +51 -0
  18. data/lib/iiif/v3/presentation/collection.rb +52 -0
  19. data/lib/iiif/v3/presentation/image_resource.rb +110 -0
  20. data/lib/iiif/v3/presentation/manifest.rb +82 -0
  21. data/lib/iiif/v3/presentation/nav_place.rb +109 -0
  22. data/lib/iiif/v3/presentation/range.rb +39 -0
  23. data/lib/iiif/v3/presentation/resource.rb +30 -0
  24. data/lib/iiif/v3/presentation/sequence.rb +66 -0
  25. data/lib/iiif/v3/presentation/service.rb +51 -0
  26. data/lib/iiif/v3/presentation.rb +37 -0
  27. data/spec/fixtures/v3/manifests/complete_from_spec.json +195 -0
  28. data/spec/fixtures/v3/manifests/minimal.json +49 -0
  29. data/spec/fixtures/v3/manifests/service_only.json +14 -0
  30. data/spec/fixtures/vcr_cassettes/pul_loris_cassette.json +1 -1
  31. data/spec/fixtures/vcr_cassettes/pul_loris_cassette_v3.json +1 -0
  32. data/spec/integration/iiif/presentation/image_resource_spec.rb +0 -1
  33. data/spec/integration/iiif/service_spec.rb +17 -32
  34. data/spec/integration/iiif/v3/abstract_resource_spec.rb +202 -0
  35. data/spec/integration/iiif/v3/presentation/image_resource_spec.rb +118 -0
  36. data/spec/spec_helper.rb +6 -0
  37. data/spec/unit/iiif/presentation/canvas_spec.rb +0 -1
  38. data/spec/unit/iiif/presentation/manifest_spec.rb +1 -1
  39. data/spec/unit/iiif/v3/abstract_resource_define_methods_for_spec.rb +78 -0
  40. data/spec/unit/iiif/v3/abstract_resource_spec.rb +293 -0
  41. data/spec/unit/iiif/v3/presentation/annotation_collection_spec.rb +36 -0
  42. data/spec/unit/iiif/v3/presentation/annotation_page_spec.rb +131 -0
  43. data/spec/unit/iiif/v3/presentation/annotation_spec.rb +389 -0
  44. data/spec/unit/iiif/v3/presentation/canvas_spec.rb +337 -0
  45. data/spec/unit/iiif/v3/presentation/choice_spec.rb +120 -0
  46. data/spec/unit/iiif/v3/presentation/collection_spec.rb +55 -0
  47. data/spec/unit/iiif/v3/presentation/image_resource_spec.rb +189 -0
  48. data/spec/unit/iiif/v3/presentation/manifest_spec.rb +370 -0
  49. data/spec/unit/iiif/v3/presentation/nav_place_spec.rb +80 -0
  50. data/spec/unit/iiif/v3/presentation/range_spec.rb +54 -0
  51. data/spec/unit/iiif/v3/presentation/resource_spec.rb +174 -0
  52. data/spec/unit/iiif/v3/presentation/sequence_spec.rb +222 -0
  53. data/spec/unit/iiif/v3/presentation/service_spec.rb +220 -0
  54. data/spec/unit/iiif/v3/presentation/shared_examples/abstract_resource_only_keys.rb +41 -0
  55. data/spec/unit/iiif/v3/presentation/shared_examples/any_type_keys.rb +31 -0
  56. data/spec/unit/iiif/v3/presentation/shared_examples/array_only_keys.rb +40 -0
  57. data/spec/unit/iiif/v3/presentation/shared_examples/hash_only_keys.rb +40 -0
  58. data/spec/unit/iiif/v3/presentation/shared_examples/int_only_keys.rb +45 -0
  59. data/spec/unit/iiif/v3/presentation/shared_examples/numeric_only_keys.rb +45 -0
  60. data/spec/unit/iiif/v3/presentation/shared_examples/string_only_keys.rb +26 -0
  61. data/spec/unit/iiif/v3/presentation/shared_examples/uri_only_keys.rb +31 -0
  62. metadata +93 -5
@@ -0,0 +1,41 @@
1
+ shared_examples 'it has the appropriate methods for abstract_resource_only_keys v3' do
2
+
3
+ described_class.new.abstract_resource_only_keys.each do |entry|
4
+
5
+ describe "#{entry[:key]}=" do
6
+ it "sets #{entry[:key]}" do
7
+ @ex = entry[:type].new
8
+ subject.send("#{entry[:key]}=", @ex)
9
+ expect(subject[entry[:key]]).to eq @ex
10
+ end
11
+ if entry[:key].camelize(:lower) != entry[:key]
12
+ it "is aliased as ##{entry[:key].camelize(:lower)}=" do
13
+ @ex = entry[:type].new
14
+ subject.send("#{entry[:key].camelize(:lower)}=", @ex)
15
+ expect(subject[entry[:key]]).to eq @ex
16
+ end
17
+ end
18
+ it "raises an exception when attempting to set it to something other than an #{entry[:type]}" do
19
+ e = IIIF::V3::Presentation::IllegalValueError
20
+ expect { subject.send("#{entry[:key]}=", 'Foo') }.to raise_error e
21
+ end
22
+ end
23
+
24
+ describe "#{entry[:key]}" do
25
+ it "gets #{entry[:key]}" do
26
+ @ex = entry[:type].new
27
+ subject[entry[:key]] = @ex
28
+ expect(subject.send(entry[:key])).to eq @ex
29
+ end
30
+ if entry[:key].camelize(:lower) != entry[:key]
31
+ it "is aliased as ##{entry[:key].camelize(:lower)}" do
32
+ @ex = entry[:type].new
33
+ subject[entry[:key]] = @ex
34
+ expect(subject.send("#{entry[:key].camelize(:lower)}")).to eq @ex
35
+ end
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,31 @@
1
+ shared_examples 'it has the appropriate methods for any-type keys v3' do
2
+
3
+ described_class.new.any_type_keys.each do |prop|
4
+ describe "##{prop}=" do
5
+ it "sets self['#{prop}']" do
6
+ subject.send("#{prop}=", fixed_values[prop])
7
+ expect(subject[prop]).to eq fixed_values[prop]
8
+ end
9
+ if prop.camelize(:lower) != prop
10
+ it "is aliased as ##{prop.camelize(:lower)}=" do
11
+ subject.send("#{prop.camelize(:lower)}=", fixed_values[prop])
12
+ expect(subject[prop]).to eq fixed_values[prop]
13
+ end
14
+ end
15
+ end
16
+
17
+ describe "##{prop}" do
18
+ it "gets self[#{prop}]" do
19
+ subject.send("[]=", prop, fixed_values[prop])
20
+ expect(subject.send("#{prop}")).to eq fixed_values[prop]
21
+ end
22
+ if prop.camelize(:lower) != prop
23
+ it "is aliased as ##{prop.camelize(:lower)}" do
24
+ subject.send("[]=", prop, fixed_values[prop])
25
+ expect(subject.send("#{prop.camelize(:lower)}")).to eq fixed_values[prop]
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,40 @@
1
+ shared_examples 'it has the appropriate methods for array-only keys v3' do
2
+
3
+ described_class.new.array_only_keys.each do |prop|
4
+
5
+ describe "#{prop}=" do
6
+ it "sets #{prop}" do
7
+ ex = [{'label' => 'XYZ'}]
8
+ subject.send("#{prop}=", ex)
9
+ expect(subject[prop]).to eq ex
10
+ end
11
+ if prop.camelize(:lower) != prop
12
+ it "is aliased as ##{prop.camelize(:lower)}=" do
13
+ ex = [{'label' => 'XYZ'}]
14
+ subject.send("#{prop.camelize(:lower)}=", ex)
15
+ expect(subject[prop]).to eq ex
16
+ end
17
+ end
18
+ it 'raises an exception when attempting to set it to something other than an Array' do
19
+ expect { subject.send("#{prop}=", 'Foo') }.to raise_error IIIF::V3::Presentation::IllegalValueError
20
+ end
21
+ end
22
+
23
+ describe "#{prop}" do
24
+ it "gets #{prop}" do
25
+ ex = [{'label' => 'XYZ'}]
26
+ subject[prop] = ex
27
+ expect(subject.send(prop)).to eq ex
28
+ end
29
+ if prop.camelize(:lower) != prop
30
+ it "is aliased as ##{prop.camelize(:lower)}" do
31
+ ex = [{'label' => 'XYZ'}]
32
+ subject[prop] = ex
33
+ expect(subject.send("#{prop.camelize(:lower)}")).to eq ex
34
+ end
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,40 @@
1
+ shared_examples 'it has the appropriate methods for hash-only keys v3' do
2
+
3
+ described_class.new.hash_only_keys.each do |prop|
4
+
5
+ describe "#{prop}=" do
6
+ it "sets #{prop}" do
7
+ ex = {'label' => 'XYZ', 'fooBar' => 'bar'}
8
+ subject.send("#{prop}=", ex)
9
+ expect(subject[prop]).to eq ex
10
+ end
11
+ if prop.camelize(:lower) != prop
12
+ it "is aliased as ##{prop.camelize(:lower)}=" do
13
+ ex = {'label' => 'XYZ'}
14
+ subject.send("#{prop.camelize(:lower)}=", ex)
15
+ expect(subject[prop]).to eq ex
16
+ end
17
+ end
18
+ it 'raises an exception when attempting to set it to something other than a Hash' do
19
+ expect { subject.send("#{prop}=", ['Foo']) }.to raise_error IIIF::V3::Presentation::IllegalValueError
20
+ end
21
+ end
22
+
23
+ describe "#{prop}" do
24
+ it "gets #{prop}" do
25
+ ex = {'label' => 'XYZ', 'fooBar' => 'bar'}
26
+ subject[prop] = ex
27
+ expect(subject.send(prop)).to eq ex
28
+ end
29
+ if prop.camelize(:lower) != prop
30
+ it "is aliased as ##{prop.camelize(:lower)}" do
31
+ ex = {'fooBar' => 'bar'}
32
+ subject[prop] = ex
33
+ expect(subject.send("#{prop.camelize(:lower)}")).to eq ex
34
+ end
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,45 @@
1
+ shared_examples 'it has the appropriate methods for integer-only keys v3' do
2
+
3
+ described_class.new.int_only_keys.each do |prop|
4
+
5
+ describe "#{prop}=" do
6
+ before(:all) do
7
+ @ex = 7200
8
+ end
9
+ it "sets #{prop}" do
10
+ subject.send("#{prop}=", @ex)
11
+ expect(subject[prop]).to eq @ex
12
+ end
13
+ if prop.camelize(:lower) != prop
14
+ it "is aliased as ##{prop.camelize(:lower)}=" do
15
+ subject.send("#{prop.camelize(:lower)}=", @ex)
16
+ expect(subject[prop]).to eq @ex
17
+ end
18
+ end
19
+ it 'raises an exception when attempting to set it to something other than an Integer' do
20
+ expect { subject.send("#{prop}=", 'Foo') }.to raise_error IIIF::V3::Presentation::IllegalValueError
21
+ end
22
+ it 'raises an exception when attempting to set it to a negative number' do
23
+ expect { subject.send("#{prop}=", -1) }.to raise_error IIIF::V3::Presentation::IllegalValueError
24
+ end
25
+ end
26
+
27
+ describe "#{prop}" do
28
+ before(:all) do
29
+ @ex = 7200
30
+ end
31
+ it "gets #{prop}" do
32
+ subject[prop] = @ex
33
+ expect(subject.send(prop)).to eq @ex
34
+ end
35
+ if prop.camelize(:lower) != prop
36
+ it "is aliased as ##{prop.camelize(:lower)}" do
37
+ subject[prop] = @ex
38
+ expect(subject.send("#{prop.camelize(:lower)}")).to eq @ex
39
+ end
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,45 @@
1
+ shared_examples 'it has the appropriate methods for numeric-only keys v3' do
2
+
3
+ described_class.new.numeric_only_keys.each do |prop|
4
+
5
+ describe "#{prop}=" do
6
+ before(:all) do
7
+ @ex = 7200.0
8
+ end
9
+ it "sets #{prop}" do
10
+ subject.send("#{prop}=", @ex)
11
+ expect(subject[prop]).to eq @ex
12
+ end
13
+ if prop.camelize(:lower) != prop
14
+ it "is aliased as ##{prop.camelize(:lower)}=" do
15
+ subject.send("#{prop.camelize(:lower)}=", @ex)
16
+ expect(subject[prop]).to eq @ex
17
+ end
18
+ end
19
+ it 'raises an exception when attempting to set it to something other than an Integer' do
20
+ expect { subject.send("#{prop}=", 'Foo') }.to raise_error IIIF::V3::Presentation::IllegalValueError
21
+ end
22
+ it 'raises an exception when attempting to set it to a negative number' do
23
+ expect { subject.send("#{prop}=", -1.0) }.to raise_error IIIF::V3::Presentation::IllegalValueError
24
+ end
25
+ end
26
+
27
+ describe "#{prop}" do
28
+ before(:all) do
29
+ @ex = 7200.0
30
+ end
31
+ it "gets #{prop}" do
32
+ subject[prop] = @ex
33
+ expect(subject.send(prop)).to eq @ex
34
+ end
35
+ if prop.camelize(:lower) != prop
36
+ it "is aliased as ##{prop.camelize(:lower)}" do
37
+ subject[prop] = @ex
38
+ expect(subject.send("#{prop.camelize(:lower)}")).to eq @ex
39
+ end
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,26 @@
1
+ shared_examples 'it has the appropriate methods for string-only keys v3' do
2
+
3
+ described_class.new.string_only_keys.each do |prop|
4
+
5
+ describe "#{prop}=" do
6
+ it "sets #{prop}" do
7
+ ex = 'foo'
8
+ subject.send("#{prop}=", ex)
9
+ expect(subject[prop]).to eq ex
10
+ end
11
+ it 'raises an exception when attempting to set it to something other than a String' do
12
+ expect { subject.send("#{prop}=", ['Foo']) }.to raise_error IIIF::V3::Presentation::IllegalValueError
13
+ end
14
+ end
15
+
16
+ describe "#{prop}" do
17
+ it "gets #{prop}" do
18
+ ex = 'bar'
19
+ subject[prop] = ex
20
+ expect(subject.send(prop)).to eq ex
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,31 @@
1
+ shared_examples 'it has the appropriate methods for uri-only keys v3' do
2
+
3
+ described_class.new.uri_only_keys.each do |prop|
4
+
5
+ describe "#{prop}=" do
6
+ it "sets #{prop}" do
7
+ ex = 'http://example.org/foo'
8
+ subject.send("#{prop}=", ex)
9
+ expect(subject[prop]).to eq ex
10
+ end
11
+ it 'raises an exception when attempting to set it to something other than a String' do
12
+ expect { subject.send("#{prop}=", ['Foo']) }.to raise_error IIIF::V3::Presentation::IllegalValueError
13
+ expect { subject.send("#{prop}=", nil) }.to raise_error IIIF::V3::Presentation::IllegalValueError
14
+ end
15
+ it 'raises an exception when attempting to set it to something other than a parseable URI' do
16
+ expect { subject.send("#{prop}=", 'Not a URI') }.to raise_error IIIF::V3::Presentation::IllegalValueError
17
+ expect { subject.send("#{prop}=", '') }.to raise_error IIIF::V3::Presentation::IllegalValueError
18
+ end
19
+ end
20
+
21
+ describe "#{prop}" do
22
+ it "gets #{prop}" do
23
+ ex = 'bar'
24
+ subject[prop] = ex
25
+ expect(subject.send(prop)).to eq ex
26
+ end
27
+ end
28
+
29
+ end
30
+
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iiif-presentation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Stroop
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-19 00:00:00.000000000 Z
11
+ date: 2023-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -138,18 +138,32 @@ dependencies:
138
138
  version: 3.2.18
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: faraday
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.7'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.7'
153
+ - !ruby/object:Gem::Dependency
154
+ name: geo_coord
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: '0.9'
159
+ version: '0'
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: '0.9'
166
+ version: '0'
153
167
  description: API for working with IIIF Presentation manifests.
154
168
  email:
155
169
  - jpstroop@gmail.com
@@ -180,13 +194,35 @@ files:
180
194
  - lib/iiif/presentation/range.rb
181
195
  - lib/iiif/presentation/resource.rb
182
196
  - lib/iiif/presentation/sequence.rb
197
+ - lib/iiif/presentation/service.rb
183
198
  - lib/iiif/service.rb
199
+ - lib/iiif/v3/abstract_resource.rb
200
+ - lib/iiif/v3/presentation.rb
201
+ - lib/iiif/v3/presentation/annotation.rb
202
+ - lib/iiif/v3/presentation/annotation_collection.rb
203
+ - lib/iiif/v3/presentation/annotation_page.rb
204
+ - lib/iiif/v3/presentation/canvas.rb
205
+ - lib/iiif/v3/presentation/choice.rb
206
+ - lib/iiif/v3/presentation/collection.rb
207
+ - lib/iiif/v3/presentation/image_resource.rb
208
+ - lib/iiif/v3/presentation/manifest.rb
209
+ - lib/iiif/v3/presentation/nav_place.rb
210
+ - lib/iiif/v3/presentation/range.rb
211
+ - lib/iiif/v3/presentation/resource.rb
212
+ - lib/iiif/v3/presentation/sequence.rb
213
+ - lib/iiif/v3/presentation/service.rb
184
214
  - spec/fixtures/manifests/complete_from_spec.json
185
215
  - spec/fixtures/manifests/minimal.json
186
216
  - spec/fixtures/manifests/service_only.json
217
+ - spec/fixtures/v3/manifests/complete_from_spec.json
218
+ - spec/fixtures/v3/manifests/minimal.json
219
+ - spec/fixtures/v3/manifests/service_only.json
187
220
  - spec/fixtures/vcr_cassettes/pul_loris_cassette.json
221
+ - spec/fixtures/vcr_cassettes/pul_loris_cassette_v3.json
188
222
  - spec/integration/iiif/presentation/image_resource_spec.rb
189
223
  - spec/integration/iiif/service_spec.rb
224
+ - spec/integration/iiif/v3/abstract_resource_spec.rb
225
+ - spec/integration/iiif/v3/presentation/image_resource_spec.rb
190
226
  - spec/spec_helper.rb
191
227
  - spec/unit/iiif/hash_behaviours_spec.rb
192
228
  - spec/unit/iiif/ordered_hash_spec.rb
@@ -207,6 +243,29 @@ files:
207
243
  - spec/unit/iiif/presentation/shared_examples/int_only_keys.rb
208
244
  - spec/unit/iiif/presentation/shared_examples/string_only_keys.rb
209
245
  - spec/unit/iiif/service_spec.rb
246
+ - spec/unit/iiif/v3/abstract_resource_define_methods_for_spec.rb
247
+ - spec/unit/iiif/v3/abstract_resource_spec.rb
248
+ - spec/unit/iiif/v3/presentation/annotation_collection_spec.rb
249
+ - spec/unit/iiif/v3/presentation/annotation_page_spec.rb
250
+ - spec/unit/iiif/v3/presentation/annotation_spec.rb
251
+ - spec/unit/iiif/v3/presentation/canvas_spec.rb
252
+ - spec/unit/iiif/v3/presentation/choice_spec.rb
253
+ - spec/unit/iiif/v3/presentation/collection_spec.rb
254
+ - spec/unit/iiif/v3/presentation/image_resource_spec.rb
255
+ - spec/unit/iiif/v3/presentation/manifest_spec.rb
256
+ - spec/unit/iiif/v3/presentation/nav_place_spec.rb
257
+ - spec/unit/iiif/v3/presentation/range_spec.rb
258
+ - spec/unit/iiif/v3/presentation/resource_spec.rb
259
+ - spec/unit/iiif/v3/presentation/sequence_spec.rb
260
+ - spec/unit/iiif/v3/presentation/service_spec.rb
261
+ - spec/unit/iiif/v3/presentation/shared_examples/abstract_resource_only_keys.rb
262
+ - spec/unit/iiif/v3/presentation/shared_examples/any_type_keys.rb
263
+ - spec/unit/iiif/v3/presentation/shared_examples/array_only_keys.rb
264
+ - spec/unit/iiif/v3/presentation/shared_examples/hash_only_keys.rb
265
+ - spec/unit/iiif/v3/presentation/shared_examples/int_only_keys.rb
266
+ - spec/unit/iiif/v3/presentation/shared_examples/numeric_only_keys.rb
267
+ - spec/unit/iiif/v3/presentation/shared_examples/string_only_keys.rb
268
+ - spec/unit/iiif/v3/presentation/shared_examples/uri_only_keys.rb
210
269
  homepage: https://github.com/iiif/osullivan
211
270
  licenses:
212
271
  - Simplified BSD
@@ -226,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
285
  - !ruby/object:Gem::Version
227
286
  version: '0'
228
287
  requirements: []
229
- rubygems_version: 3.3.26
288
+ rubygems_version: 3.4.21
230
289
  signing_key:
231
290
  specification_version: 4
232
291
  summary: API for working with IIIF Presentation manifests.
@@ -234,9 +293,15 @@ test_files:
234
293
  - spec/fixtures/manifests/complete_from_spec.json
235
294
  - spec/fixtures/manifests/minimal.json
236
295
  - spec/fixtures/manifests/service_only.json
296
+ - spec/fixtures/v3/manifests/complete_from_spec.json
297
+ - spec/fixtures/v3/manifests/minimal.json
298
+ - spec/fixtures/v3/manifests/service_only.json
237
299
  - spec/fixtures/vcr_cassettes/pul_loris_cassette.json
300
+ - spec/fixtures/vcr_cassettes/pul_loris_cassette_v3.json
238
301
  - spec/integration/iiif/presentation/image_resource_spec.rb
239
302
  - spec/integration/iiif/service_spec.rb
303
+ - spec/integration/iiif/v3/abstract_resource_spec.rb
304
+ - spec/integration/iiif/v3/presentation/image_resource_spec.rb
240
305
  - spec/spec_helper.rb
241
306
  - spec/unit/iiif/hash_behaviours_spec.rb
242
307
  - spec/unit/iiif/ordered_hash_spec.rb
@@ -257,3 +322,26 @@ test_files:
257
322
  - spec/unit/iiif/presentation/shared_examples/int_only_keys.rb
258
323
  - spec/unit/iiif/presentation/shared_examples/string_only_keys.rb
259
324
  - spec/unit/iiif/service_spec.rb
325
+ - spec/unit/iiif/v3/abstract_resource_define_methods_for_spec.rb
326
+ - spec/unit/iiif/v3/abstract_resource_spec.rb
327
+ - spec/unit/iiif/v3/presentation/annotation_collection_spec.rb
328
+ - spec/unit/iiif/v3/presentation/annotation_page_spec.rb
329
+ - spec/unit/iiif/v3/presentation/annotation_spec.rb
330
+ - spec/unit/iiif/v3/presentation/canvas_spec.rb
331
+ - spec/unit/iiif/v3/presentation/choice_spec.rb
332
+ - spec/unit/iiif/v3/presentation/collection_spec.rb
333
+ - spec/unit/iiif/v3/presentation/image_resource_spec.rb
334
+ - spec/unit/iiif/v3/presentation/manifest_spec.rb
335
+ - spec/unit/iiif/v3/presentation/nav_place_spec.rb
336
+ - spec/unit/iiif/v3/presentation/range_spec.rb
337
+ - spec/unit/iiif/v3/presentation/resource_spec.rb
338
+ - spec/unit/iiif/v3/presentation/sequence_spec.rb
339
+ - spec/unit/iiif/v3/presentation/service_spec.rb
340
+ - spec/unit/iiif/v3/presentation/shared_examples/abstract_resource_only_keys.rb
341
+ - spec/unit/iiif/v3/presentation/shared_examples/any_type_keys.rb
342
+ - spec/unit/iiif/v3/presentation/shared_examples/array_only_keys.rb
343
+ - spec/unit/iiif/v3/presentation/shared_examples/hash_only_keys.rb
344
+ - spec/unit/iiif/v3/presentation/shared_examples/int_only_keys.rb
345
+ - spec/unit/iiif/v3/presentation/shared_examples/numeric_only_keys.rb
346
+ - spec/unit/iiif/v3/presentation/shared_examples/string_only_keys.rb
347
+ - spec/unit/iiif/v3/presentation/shared_examples/uri_only_keys.rb