Skip to content

Commit

Permalink
Merge pull request #348 from pulibrary/re_add_sort_orders
Browse files Browse the repository at this point in the history
Re-add Sort Orders
  • Loading branch information
escowles committed Apr 26, 2018
2 parents 19b623f + df7d755 commit 04025b0
Show file tree
Hide file tree
Showing 9 changed files with 142 additions and 4 deletions.
3 changes: 3 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,6 @@ Naming/FileName:
Exclude:
- 'Capfile'
- 'Gemfile'
RSpec/AnyInstance:
Exclude:
- 'spec/support/stub_iiif_response.rb'
3 changes: 3 additions & 0 deletions app/controllers/catalog_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ def unique_custom_fields
config.add_search_field 'all_fields', label: 'Everything'

config.add_sort_field 'relevance', sort: 'score desc', label: 'Relevance'
config.add_sort_field 'sort_title', sort: 'sort_title_ssi asc, sort_date_ssi desc', label: 'Title'
config.add_sort_field 'sort_date', sort: 'sort_date_ssi desc, sort_title_ssi asc', label: 'Date'
config.add_sort_field 'sort_author', sort: 'sort_author_ssi asc, sort_title_ssi asc', label: 'Author'

config.add_facet_field 'spotlight_resource_type_ssim'
config.index.thumbnail_field = 'thumbnail_ssim'
Expand Down
19 changes: 19 additions & 0 deletions app/services/iiif_manifest.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,32 @@
class IiifManifest < ::Spotlight::Resources::IiifManifest
def to_solr
add_noid
# this is called in super, but idempotent so safe to call here also; we need the metadata
add_metadata
add_sort_title
add_sort_date
add_sort_author
super
end

def add_noid
solr_hash["access_identifier_ssim"] = [noid]
end

def add_sort_title
# Once we upgrade we should probably use this json_ld_value?
# solr_hash['sort_title_ssi'] = Array.wrap(json_ld_value(manifest.label)).first
solr_hash['sort_title_ssi'] = Array.wrap(manifest.label).first
end

def add_sort_date
solr_hash['sort_date_ssi'] = Array.wrap(solr_hash['readonly_date_ssim']).first
end

def add_sort_author
solr_hash['sort_author_ssi'] = Array.wrap(solr_hash['readonly_author_ssim']).first
end

def full_image_url
return super unless manifest['thumbnail'] && manifest['thumbnail']['service'] && manifest['thumbnail']['service']['@id']
"#{manifest['thumbnail']['service']['@id']}/full/!600,600/0/default.jpg"
Expand Down
2 changes: 1 addition & 1 deletion spec/controllers/catalog_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

RSpec.describe CatalogController do
let(:user) { nil }
context "with mvw", vcr: { cassette_name: 'mvw' } do
context "with mvw", vcr: { cassette_name: 'mvw', allow_playback_repeats: true } do
let(:url) { "https://hydra-dev.princeton.edu/concern/multi_volume_works/f4752g76q/manifest" }
it "hides scanned resources with parents" do
exhibit = Spotlight::Exhibit.create title: 'Exhibit A', published: true
Expand Down
57 changes: 57 additions & 0 deletions spec/fixtures/iiif_responses.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# pulled and pared down from spotlight
# https://github.com/projectblacklight/spotlight/blob/b4608610ed0405f1d8ed4d6c9c17a02b06b9bcf6/spec/fixtures/iiif_responses.rb
module IiifResponses
def test_manifest1
{
"@id": 'uri://for-manifest1/manifest',
"@type": 'sc:Manifest',
"label": 'Test Manifest 1',
"attribution": 'Attribution Data',
"description": 'A test IIIF manifest',
"license": 'http://www.example.org/license.html',
"metadata": [
{
"label": 'Author',
"value": 'John Doe'
},
{
"label": 'Author',
"value": 'Jane Doe'
},
{
"label": 'Another Field',
"value": 'Some data'
},
{
"label": 'Date',
"value": '1929'
}
],
"thumbnail": {
"@id": 'uri://to-thumbnail'
},
"sequences": [
{
"@type": 'sc:Sequence',
"canvases": [
{
"@type": 'sc:Canvas',
"images": [
{
"@type": 'oa:Annotation',
"resource": {
"@type": 'dcterms:Image',
"@id": 'uri://full-image',
"service": {
"@id": 'uri://to-image-service'
}
}
}
]
}
]
}
]
}.to_json
end
end
4 changes: 2 additions & 2 deletions spec/models/iiif_resource_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require 'rails_helper'

describe IIIFResource do
context 'with recorded http interactions', vcr: { cassette_name: 'all_collections' } do
context 'with recorded http interactions', vcr: { cassette_name: 'all_collections', allow_playback_repeats: true } do
let(:url) { 'https://hydra-dev.princeton.edu/concern/scanned_resources/1r66j1149/manifest' }
it 'ingests a iiif manifest' do
exhibit = Spotlight::Exhibit.create title: 'Exhibit A'
Expand Down Expand Up @@ -49,7 +49,7 @@
expect(scanned_resource_doc["full_image_url_ssm"]).to eq ["https://libimages1.princeton.edu/loris/plum/hq%2F37%2Fvn%2F61%2F6-intermediate_file.jp2/full/!600,600/0/default.jpg"]
end
end
context "when given an unreachable seeAlso url", vcr: { cassette_name: 'see_also_connection_failed' } do
context "when given an unreachable seeAlso url", vcr: { cassette_name: 'see_also_connection_failed', allow_playback_repeats: true } do
let(:url) { "https://hydra-dev.princeton.edu/concern/scanned_resources/s9w032300r/manifest" }
it "ingests a iiif manifest using the metadata pool, excludes range labels when missing" do
exhibit = Spotlight::Exhibit.create title: 'Exhibit A'
Expand Down
2 changes: 1 addition & 1 deletion spec/repositories/friendly_id_repository_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'rails_helper'

RSpec.describe FriendlyIdRepository, vcr: { cassette_name: "all_collections" } do
RSpec.describe FriendlyIdRepository, vcr: { cassette_name: "all_collections", allow_playback_repeats: true } do
let(:repository) { described_class.new(CatalogController.new.blacklight_config) }
let(:url) { 'https://hydra-dev.princeton.edu/concern/scanned_resources/1r66j1149/manifest' }
let(:exhibit) { Spotlight::Exhibit.create title: 'Exhibit A' }
Expand Down
37 changes: 37 additions & 0 deletions spec/services/iiif_manifest_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
require 'rails_helper'

RSpec.describe IiifManifest do
let(:manifest_service) { described_class.new(url: url, manifest: manifest, collection: collection) }
let(:url) { 'uri://some_id/manifest' }
let(:collection) { instance_double(Spotlight::Resources::IiifManifest) }
let(:manifest_fixture) { test_manifest1 }

before do
allow(collection).to receive(:compound_id).and_return('1')
stub_iiif_response_for_url(url, manifest_fixture)
manifest_service.with_exhibit(exhibit)
end

describe '#to_solr' do
let(:manifest) { IiifService.new(url).send(:object) }
let(:exhibit) { FactoryBot.create(:exhibit) }

describe 'sort_title' do
it 'is a single-value text field' do
expect(manifest_service.to_solr["sort_title_ssi"]).to eq "Test Manifest 1"
end
end

describe 'sort_date' do
it 'is a single-value text field' do
expect(manifest_service.to_solr["sort_date_ssi"]).to eq "1929"
end
end

describe 'sort_author' do
it 'is a single-value text field' do
expect(manifest_service.to_solr["sort_author_ssi"]).to eq "John Doe"
end
end
end
end
19 changes: 19 additions & 0 deletions spec/support/stub_iiif_response.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# pulled and pared down from spotlight
# https://github.com/projectblacklight/spotlight/blob/b4608610ed0405f1d8ed4d6c9c17a02b06b9bcf6/spec/support/stub_iiif_response.rb
require 'fixtures/iiif_responses'
module StubIiifResponse
def stub_iiif_response_for_url(url, response)
allow(IiifService).to receive(:iiif_response).with(url).and_return(response)
end

def stub_default_collection
allow_any_instance_of(Spotlight::Resources::IiifHarvester).to receive_messages(url_is_iiif?: true)

stub_iiif_response_for_url('uri://for-manifest1/manifest', test_manifest1)
end
end

RSpec.configure do |config|
config.include IiifResponses
config.include StubIiifResponse
end

0 comments on commit 04025b0

Please sign in to comment.