Skip to content

Commit

Permalink
Completes work on thumbnails
Browse files Browse the repository at this point in the history
  • Loading branch information
jasoncorum committed Nov 21, 2018
1 parent 7c1fe12 commit 9042273
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 8 deletions.
29 changes: 27 additions & 2 deletions app/services/wgbh/asset_thumbnail_path_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,47 @@ module WGBH
class AssetThumbnailPathService < Hyrax::WorkThumbnailPathService
class << self
S3_THUMBNAIL_BASE = 'http://americanarchive.org.s3.amazonaws.com/thumbnail'.freeze
class_attribute :object_type, :sonyci_id, :id, :aapb_digital_instantiation
class_attribute :object_type, :sonyci_id, :id, :aapb_digital_instantiation, :digital_instantiations

def call(object)
self.object_type = object.class.name.underscore
self.sonyci_id = object.admin_data.sonyci_id || []
self.id = object.id
self.aapb_digital_instantiation = object.digital_instantiations.find { |inst| inst.holding_organization.include?( "American Archive of Public Broadcasting") } || nil
self.digital_instantiations = object.digital_instantiations
self.aapb_digital_instantiation = object.digital_instantiations.find { |inst| inst.holding_organization&.include?( "American Archive of Public Broadcasting") } || nil
super
end

# This could be cleaned up.
def default_image
if !sonyci_id.empty? && !aapb_digital_instantiation.nil?
if aapb_digital_instantiation.media_type.first == "Moving Image"
ActionController::Base.helpers.image_path("#{S3_THUMBNAIL_BASE}/#{id}.jpg")
elsif aapb_digital_instantiation.media_type.first == "Sound"
ActionController::Base.helpers.image_path("/thumbs/AUDIO.png")
else
ActionController::Base.helpers.image_path "#{self.object_type}.png"
end
elsif sonyci_id.empty? && !aapb_digital_instantiation.nil?
if aapb_digital_instantiation.media_type.first == "Moving Image"
ActionController::Base.helpers.image_path("/thumbs/VIDEO_NOT_DIG.png")
elsif aapb_digital_instantiation.media_type.first == "Sound"
ActionController::Base.helpers.image_path("/thumbs/AUDIO_NOT_DIG.png")
else
ActionController::Base.helpers.image_path "#{self.object_type}.png"
end
elsif sonyci_id.empty? && aapb_digital_instantiation.nil?
if !digital_instantiations.empty?
if digital_instantiations.first.media_type.first == "Moving Image"
ActionController::Base.helpers.image_path("/thumbs/VIDEO_NOT_DIG.png")
elsif digital_instantiations.first.media_type.first == "Sound"
ActionController::Base.helpers.image_path("/thumbs/AUDIO_NOT_DIG.png")
else
ActionController::Base.helpers.image_path "#{self.object_type}.png"
end
else
ActionController::Base.helpers.image_path "#{self.object_type}.png"
end
else
ActionController::Base.helpers.image_path "#{self.object_type}.png"
end
Expand Down
Binary file added public/thumbs/.DS_Store
Binary file not shown.
Binary file added public/thumbs/AUDIO.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/thumbs/AUDIO_NOT_DIG.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/thumbs/VIDEO_NOT_DIG.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions spec/factories/admin_data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,8 @@
transcript_status "Indexing Only Transcript"
sonyci_id ["Sony-1","Sony-2"]
licensing_info "Licensing Info"
trait :no_sony_ci_id do
sonyci_id []
end
end
end
14 changes: 14 additions & 0 deletions spec/factories/digital_instantiation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,19 @@
digital_format "Test digital_format"
media_type "Test media_type"
digital_instantiation_pbcore_xml { Rack::Test::UploadedFile.new(Rails.root.join('spec/fixtures/sample_instantiation_valid.xml'), 'text/xml') }
trait :aapb_moving_image do
holding_organization "American Archive of Public Broadcasting"
media_type "Moving Image"
end
trait :aapb_sound do
holding_organization "American Archive of Public Broadcasting"
media_type "Sound"
end
trait :moving_image do
media_type "Moving Image"
end
trait :sound do
media_type "Sound"
end
end
end
87 changes: 81 additions & 6 deletions spec/indexers/hyrax/asset_indexer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,26 @@
RSpec.describe AssetIndexer do
subject(:solr_document) { service.generate_solr_document }
let(:service) { described_class.new(work) }

let(:admin_data) { create(:admin_data) }
let(:work) { build(:asset, with_admin_data:admin_data.gid, date:["2010"], broadcast_date:['2011-05'], copyright_date:['2011-05'], created_date:['2011-05-11']) }
let(:admin_data_no_sony_ci_id) { create(:admin_data, :no_sony_ci_id)}

let(:work) { build(:asset, with_admin_data:admin_data.gid, date:["2010"], broadcast_date:['2011-05'], copyright_date:['2011-05'], created_date:['2011-05-11'], ) }
let(:work_no_sony_ci_id) { build(:asset_no_sonyci_id, with_admin_data:admin_data_no_sony_ci_id.gid, date:["2010"], broadcast_date:['2011-05'], copyright_date:['2011-05'], created_date:['2011-05-11'], ) }

let(:asset) { create(:asset) }
let(:asset_no_sonyci_id) { create(:asset, with_admin_data:admin_data_no_sony_ci_id.gid) }

let(:asset_solr_doc) { described_class.new(asset) }
let(:asset_solr_doc_no_sony_ci_id) { described_class.new(asset_no_sonyci_id) }

let(:digital_instantiation_work) { create(:digital_instantiation) }
let(:aapb_moving_image_digital_instantiation_work) { create(:digital_instantiation, :aapb_moving_image) }
let(:aapb_sound_digital_instantiation_work) { create(:digital_instantiation, :aapb_sound) }
let(:moving_image_digital_instantiation_work) { create(:digital_instantiation, :moving_image) }
let(:sound_digital_instantiation_work) { create(:digital_instantiation, :sound) }


let(:physical_instantiation_work) { create(:physical_instantiation) }

context "indexes admin data" do
Expand All @@ -24,11 +39,71 @@
end

context "thumbnail" do
it "has work_type.png as default thumbnail when work.thumbnail_id is null" do
expect(work.thumbnail_id).to be_nil
work_type = solr_document.fetch('has_model_ssim').first.downcase
default_image = ActionController::Base.helpers.image_path(work_type+'.png')
expect(solr_document.fetch('thumbnail_path_ss')).to eq default_image
context "an asset that has digital_instations with AAPB defined as the organization" do
context "and 'Moving Image' defined as the media_type" do
it "has a S3 thumbnail if it has a sony_ci_id" do
asset.ordered_members << aapb_moving_image_digital_instantiation_work
asset.save
solr_doc = asset_solr_doc.generate_solr_document
default_image = ActionController::Base.helpers.image_path("http://americanarchive.org.s3.amazonaws.com/thumbnail/#{solr_doc[:id]}.jpg")
expect(solr_doc.fetch('thumbnail_path_ss')).to eq default_image
end
it "has the VIDEO_NOT_DIG.png as the thumbnail if it does not have a sony_ci_id" do
asset_no_sonyci_id.ordered_members << aapb_moving_image_digital_instantiation_work
asset_no_sonyci_id.save
solr_doc = asset_solr_doc_no_sony_ci_id.generate_solr_document
default_image = ActionController::Base.helpers.image_path("/thumbs/VIDEO_NOT_DIG.png")
expect(solr_doc.fetch('thumbnail_path_ss')).to eq default_image
end
end

context "and 'Sound' defined as the media_type" do
it "has the AUDIO.png as the thumbnail if it has a sonyci_id" do
asset.ordered_members << aapb_sound_digital_instantiation_work
asset.save
solr_doc = asset_solr_doc.generate_solr_document
default_image = ActionController::Base.helpers.image_path("/thumbs/AUDIO.png")
expect(solr_doc.fetch('thumbnail_path_ss')).to eq default_image
end

it "has the AUDIO_NOT_DIG.png as the thumbnail if it does not have a sony_ci_id" do
asset_no_sonyci_id.ordered_members << aapb_sound_digital_instantiation_work
asset_no_sonyci_id.save
solr_doc = asset_solr_doc_no_sony_ci_id.generate_solr_document
default_image = ActionController::Base.helpers.image_path("/thumbs/AUDIO_NOT_DIG.png")
expect(solr_doc.fetch('thumbnail_path_ss')).to eq default_image
end
end
end

context "an asset that does not have any digital_instations with AAPB defined as the organization" do
context "and 'Moving Image' defined as the media_type" do
it "has the VIDEO_NOT_DIG.png as the thumbnail" do
asset_no_sonyci_id.ordered_members << moving_image_digital_instantiation_work
asset_no_sonyci_id.save
solr_doc = asset_solr_doc_no_sony_ci_id.generate_solr_document
default_image = ActionController::Base.helpers.image_path("/thumbs/VIDEO_NOT_DIG.png")
expect(solr_doc.fetch('thumbnail_path_ss')).to eq default_image
end
end
context "and 'Sound' defined as the media_type" do
it "has the VIDEO_NOT_DIG.png as the thumbnail" do
asset_no_sonyci_id.ordered_members << sound_digital_instantiation_work
asset_no_sonyci_id.save
solr_doc = asset_solr_doc_no_sony_ci_id.generate_solr_document
default_image = ActionController::Base.helpers.image_path("/thumbs/AUDIO_NOT_DIG.png")
expect(solr_doc.fetch('thumbnail_path_ss')).to eq default_image
end
end
end

context "an asset with no digital instantiations" do
it "has work_type.png as default thumbnail when work.thumbnail_id is null" do
expect(work.thumbnail_id).to be_nil
work_type = solr_document.fetch('has_model_ssim').first.downcase
default_image = ActionController::Base.helpers.image_path(work_type+'.png')
expect(solr_document.fetch('thumbnail_path_ss')).to eq default_image
end
end
end

Expand Down

0 comments on commit 9042273

Please sign in to comment.