Skip to content

Commit 40c7980

Browse files
aploshaydlpierce
authored andcommitted
[ESSI-2062] unify #versioned_lookup_id, #basic_lookup_id split
1 parent 6eae74e commit 40c7980

File tree

3 files changed

+23
-43
lines changed

3 files changed

+23
-43
lines changed

Diff for: app/presenters/hyrax/displays_image.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def display_image
2424

2525
private
2626
def iiif_path_service
27-
@iiif_path_service ||= IIIFFileSetPathService.new(solr_document, versioned_lookup: true)
27+
@iiif_path_service ||= IIIFFileSetPathService.new(solr_document)
2828
end
2929

3030
def iiif_endpoint

Diff for: app/services/iiif_file_set_path_service.rb

+14-25
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
class IIIFFileSetPathService
2-
attr_reader :file_set, :versioned_lookup
2+
attr_reader :file_set
33

44
# @param [ActiveFedora::SolrHit, FileSet, Hash, SolrDocument, Hyrax::FileSetPresenter] file_set
5-
# @param [TrueClass, FalseClass, NilClass] versioned_lookup: whether to use versioned file lookup if original_file_id fails
6-
def initialize(file_set, versioned_lookup: false)
7-
@versioned_lookup = versioned_lookup
5+
def initialize(file_set)
86
file_set = SolrDocument.new(file_set) if file_set.class.in? [ActiveFedora::SolrHit, Hash]
97
if [:id, :content_location, :original_file_id].map { |m| file_set.respond_to?(m) }.all?
108
@file_set = file_set
@@ -14,7 +12,7 @@ def initialize(file_set, versioned_lookup: false)
1412
end
1513

1614
def lookup_id
17-
@lookup_id ||= (@versioned_lookup ? versioned_lookup_id : basic_lookup_id)
15+
@lookup_id ||= versioned_lookup_id
1816
end
1917

2018
# @return [String] a URL that resolves to an image provided by a IIIF image server
@@ -30,27 +28,18 @@ def iiif_info_url(base_url)
3028
end
3129

3230
private
33-
# imported logic from IIIFThumbnailPathService, etc
34-
def basic_lookup_id
35-
@basic_lookup_id ||= (file_set.content_location || file_set.original_file_id)
36-
end
37-
38-
# imported from Hyrax::DisplaysImage
3931
def versioned_lookup_id
40-
@versioned_lookup_id ||= begin
41-
result = basic_lookup_id
42-
if result.blank?
43-
Rails.logger.warn "original_file_id for #{file_set.id} not found, falling back to Fedora."
44-
# result = Hyrax::VersioningService.versioned_file_id(original_file)
45-
result = versioned_file_id(original_file) if original_file
46-
47-
end
48-
if result.blank?
49-
Rails.logger.warn "original_file for #{file_set.id} not found, versioned_lookup_id failed."
50-
nil
51-
else
52-
result
53-
end
32+
result = file_set.content_location || file_set.original_file_id
33+
if result.blank?
34+
Rails.logger.warn "original_file_id for #{file_set.id} not found, falling back to Fedora."
35+
# result = Hyrax::VersioningService.versioned_file_id(original_file)
36+
result = versioned_file_id(original_file) if original_file
37+
end
38+
if result.blank?
39+
Rails.logger.warn "original_file for #{file_set.id} not found, versioned_lookup_id failed."
40+
nil
41+
else
42+
result
5443
end
5544
end
5645

Diff for: spec/services/iiif_file_set_path_service_spec.rb

+8-17
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
let(:file_set_presenter) { Hyrax::FileSetPresenter.new(source, Ability.new(FactoryBot.build(:user))) }
1515
let(:versioned_lookup) { false } # default, override when desired
1616
# must explicitly define :resource
17-
let(:service) { described_class.new(resource, versioned_lookup: versioned_lookup) }
17+
let(:service) { described_class.new(resource) }
1818

1919
# requires defining lookup_id, url
2020
shared_examples "url examples" do
@@ -41,23 +41,14 @@
4141
end
4242
context "with versioned_file_id lookup" do
4343
let(:file_set) { empty_file_set }
44-
let(:versioned_lookup) { true }
45-
context "that fails" do
46-
it "returns nil" do
47-
expect(lookup_id).to be_nil
48-
expect(url).to be_nil
49-
end
44+
before do
45+
allow(service).to receive(:original_file).and_return(local_file_set.original_file)
5046
end
51-
context "that succeeds" do
52-
before do
53-
allow(service).to receive(:original_file).and_return(local_file_set.original_file)
54-
end
55-
it "returns a url" do
56-
expect(lookup_id).not_to match /^s3/
57-
expect(url).to match /^http/
58-
# below is proxy check that #versioned_file_id was called
59-
expect(service.instance_variable_get(:@versioned_file_id)).not_to be_nil
60-
end
47+
it "returns a url" do
48+
expect(lookup_id).not_to match /^s3/
49+
expect(url).to match /^http/
50+
# below is proxy check that #versioned_file_id was called
51+
expect(service.instance_variable_get(:@versioned_file_id)).not_to be_nil
6152
end
6253
end
6354
end

0 commit comments

Comments
 (0)