hyrax-iiif_av 0.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.
Files changed (33) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +33 -0
  5. data/.travis.yml +23 -0
  6. data/Gemfile +41 -0
  7. data/LICENSE +201 -0
  8. data/README.md +43 -0
  9. data/Rakefile +47 -0
  10. data/app/controllers/concerns/hyrax/iiif_av/controller_behavior.rb +63 -0
  11. data/app/helpers/hyrax/iiif_av/iiif_av_helper.rb +40 -0
  12. data/app/presenters/concerns/hyrax/iiif_av/displays_content.rb +123 -0
  13. data/app/presenters/concerns/hyrax/iiif_av/displays_iiif_av.rb +87 -0
  14. data/app/presenters/hyrax/iiif_av/iiif_file_set_presenter.rb +14 -0
  15. data/app/views/hyrax/base/_representative_media.html.erb +27 -0
  16. data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +4 -0
  17. data/bin/rails +15 -0
  18. data/hyrax-iiif_av.gemspec +33 -0
  19. data/lib/generators/hyrax/iiif_av/add_to_work_type_generator.rb +40 -0
  20. data/lib/generators/hyrax/iiif_av/install_avalon_player_generator.rb +40 -0
  21. data/lib/generators/hyrax/iiif_av/install_generator.rb +12 -0
  22. data/lib/generators/hyrax/iiif_av/templates/AvalonIiifPlayer.js +28 -0
  23. data/lib/generators/hyrax/iiif_av/templates/_avalon.html.erb +23 -0
  24. data/lib/hyrax/iiif_av.rb +8 -0
  25. data/lib/hyrax/iiif_av/engine.rb +12 -0
  26. data/lib/hyrax/iiif_av/manifest_range.rb +13 -0
  27. data/lib/hyrax/iiif_av/spec/shared_specs.rb +4 -0
  28. data/lib/hyrax/iiif_av/spec/shared_specs/controller_behavior.rb +208 -0
  29. data/lib/hyrax/iiif_av/spec/shared_specs/displays_content.rb +166 -0
  30. data/lib/hyrax/iiif_av/spec/shared_specs/displays_iiif_av.rb +129 -0
  31. data/lib/hyrax/iiif_av/version.rb +6 -0
  32. data/lib/tasks/hyrax/iiif_av_tasks.rake +5 -0
  33. metadata +221 -0
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2011-2018, The Trustees of Indiana University and Northwestern
4
+ # University. Additional copyright may be held by others, as reflected in
5
+ # the commit history.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ # --- END LICENSE_HEADER BLOCK ---
19
+
20
+ RSpec.shared_examples "IiifAv::DisplaysIiifAv" do
21
+ let(:solr_document) { SolrDocument.new }
22
+ let(:request) { double }
23
+ let(:ability) { nil }
24
+ let(:presenter) { described_class.new(solr_document, ability, request) }
25
+
26
+ describe '#iiif_viewer?' do
27
+ subject { presenter.iiif_viewer? }
28
+
29
+ let(:id_present) { true }
30
+ let(:representative_presenter) { instance_double('Hyrax::FileSetPresenter', present?: true) }
31
+ let(:image_boolean) { false }
32
+ let(:audio_boolean) { false }
33
+ let(:video_boolean) { false }
34
+ let(:iiif_image_server) { false }
35
+
36
+ before do
37
+ allow(presenter).to receive(:representative_id).and_return(id_present)
38
+ allow(presenter).to receive(:representative_presenter).and_return(representative_presenter)
39
+ allow(representative_presenter).to receive(:image?).and_return(image_boolean)
40
+ allow(representative_presenter).to receive(:audio?).and_return(audio_boolean)
41
+ allow(representative_presenter).to receive(:video?).and_return(video_boolean)
42
+ allow(Hyrax.config).to receive(:iiif_image_server?).and_return(iiif_image_server)
43
+ end
44
+
45
+ context 'with no representative_id' do
46
+ let(:id_present) { false }
47
+
48
+ it { is_expected.to be false }
49
+ end
50
+
51
+ context 'with no representative_presenter' do
52
+ let(:representative_presenter) { instance_double('Hyrax::FileSetPresenter', present?: false) }
53
+
54
+ it { is_expected.to be false }
55
+ end
56
+
57
+ context 'with non-image representative_presenter' do
58
+ let(:image_boolean) { true }
59
+
60
+ it { is_expected.to be false }
61
+ end
62
+
63
+ context 'with IIIF image server turned off' do
64
+ let(:image_boolean) { true }
65
+ let(:iiif_image_server) { false }
66
+
67
+ it { is_expected.to be false }
68
+ end
69
+
70
+ context 'with representative image and IIIF turned on' do
71
+ let(:image_boolean) { true }
72
+ let(:iiif_image_server) { true }
73
+
74
+ it { is_expected.to be true }
75
+ end
76
+
77
+ context 'with representative audio' do
78
+ let(:audio_boolean) { true }
79
+
80
+ it { is_expected.to be true }
81
+ end
82
+
83
+ context 'with representative video' do
84
+ let(:video_boolean) { true }
85
+
86
+ it { is_expected.to be true }
87
+ end
88
+ end
89
+
90
+ describe '#iiif_viewer' do
91
+ subject { presenter.iiif_viewer }
92
+
93
+ let(:representative_presenter) { instance_double('Hyrax::FileSetPresenter', present?: true) }
94
+ let(:image_boolean) { false }
95
+ let(:audio_boolean) { false }
96
+ let(:video_boolean) { false }
97
+
98
+ before do
99
+ allow(presenter).to receive(:representative_presenter).and_return(representative_presenter)
100
+ allow(representative_presenter).to receive(:image?).and_return(image_boolean)
101
+ allow(representative_presenter).to receive(:audio?).and_return(audio_boolean)
102
+ allow(representative_presenter).to receive(:video?).and_return(video_boolean)
103
+ end
104
+
105
+ context 'with representative image' do
106
+ let(:image_boolean) { true }
107
+
108
+ it { is_expected.to be :universal_viewer }
109
+ end
110
+
111
+ context 'with representative audio' do
112
+ let(:audio_boolean) { true }
113
+
114
+ it { is_expected.to be :avalon }
115
+ end
116
+
117
+ context 'with representative video' do
118
+ let(:video_boolean) { true }
119
+
120
+ it { is_expected.to be :avalon }
121
+ end
122
+
123
+ context 'with no representative_presenter' do
124
+ let(:representative_presenter) { instance_double('Hyrax::FileSetPresenter', present?: false) }
125
+
126
+ it { is_expected.to be nil }
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ module Hyrax
3
+ module IiifAv
4
+ VERSION = '0.1.0'
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # desc "Explaining what the task does"
3
+ # task :hyrax_iiif_av do
4
+ # # Task goes here
5
+ # end
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hyrax-iiif_av
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Colvard
8
+ - Brian Keese
9
+ - Ying Feng
10
+ - Phuong Dinh
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2018-10-02 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rails
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.1'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: blacklight
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: hyrax
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '2.1'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '2.1'
58
+ - !ruby/object:Gem::Dependency
59
+ name: iiif_manifest
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '0.5'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '0.5'
72
+ - !ruby/object:Gem::Dependency
73
+ name: bixby
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ - !ruby/object:Gem::Dependency
87
+ name: coffee-rails
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ - !ruby/object:Gem::Dependency
101
+ name: engine_cart
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '2.0'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '2.0'
114
+ - !ruby/object:Gem::Dependency
115
+ name: factory_bot_rails
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: rails-controller-testing
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec-rails
144
+ requirement: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: '3.8'
149
+ type: :development
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '3.8'
156
+ description: Hyrax plugin for IIIF Presentation 3.0 audiovisual support
157
+ email:
158
+ - cjcolvar@indiana.edu
159
+ - bkeese@indiana.edu
160
+ - yingfeng@iu.edu
161
+ - phuongdh@gmail.com
162
+ executables: []
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - ".gitignore"
167
+ - ".rspec"
168
+ - ".rubocop.yml"
169
+ - ".travis.yml"
170
+ - Gemfile
171
+ - LICENSE
172
+ - README.md
173
+ - Rakefile
174
+ - app/controllers/concerns/hyrax/iiif_av/controller_behavior.rb
175
+ - app/helpers/hyrax/iiif_av/iiif_av_helper.rb
176
+ - app/presenters/concerns/hyrax/iiif_av/displays_content.rb
177
+ - app/presenters/concerns/hyrax/iiif_av/displays_iiif_av.rb
178
+ - app/presenters/hyrax/iiif_av/iiif_file_set_presenter.rb
179
+ - app/views/hyrax/base/_representative_media.html.erb
180
+ - app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb
181
+ - bin/rails
182
+ - hyrax-iiif_av.gemspec
183
+ - lib/generators/hyrax/iiif_av/add_to_work_type_generator.rb
184
+ - lib/generators/hyrax/iiif_av/install_avalon_player_generator.rb
185
+ - lib/generators/hyrax/iiif_av/install_generator.rb
186
+ - lib/generators/hyrax/iiif_av/templates/AvalonIiifPlayer.js
187
+ - lib/generators/hyrax/iiif_av/templates/_avalon.html.erb
188
+ - lib/hyrax/iiif_av.rb
189
+ - lib/hyrax/iiif_av/engine.rb
190
+ - lib/hyrax/iiif_av/manifest_range.rb
191
+ - lib/hyrax/iiif_av/spec/shared_specs.rb
192
+ - lib/hyrax/iiif_av/spec/shared_specs/controller_behavior.rb
193
+ - lib/hyrax/iiif_av/spec/shared_specs/displays_content.rb
194
+ - lib/hyrax/iiif_av/spec/shared_specs/displays_iiif_av.rb
195
+ - lib/hyrax/iiif_av/version.rb
196
+ - lib/tasks/hyrax/iiif_av_tasks.rake
197
+ homepage:
198
+ licenses:
199
+ - Apache-2.0
200
+ metadata: {}
201
+ post_install_message:
202
+ rdoc_options: []
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ requirements: []
216
+ rubyforge_project:
217
+ rubygems_version: 2.6.14
218
+ signing_key:
219
+ specification_version: 4
220
+ summary: Hyrax plugin for IIIF Presentation 3.0 audiovisual support
221
+ test_files: []