iiif-presentation 1.1.0 → 1.3.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.
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