From bbe55cb53f5462e11ee415b0d0a0af0f47a394e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esm=C3=A9=20Cowles?= Date: Fri, 8 Jan 2016 12:50:37 -0500 Subject: [PATCH] Adding collection and language facets - closes #208 --- app/controllers/catalog_controller.rb | 1 + app/models/multi_volume_work.rb | 6 ++++++ app/models/scanned_resource.rb | 1 + config/locales/blacklight.en.yml | 6 +++++- spec/features/catalog_spec.rb | 6 ++++-- spec/models/scanned_resource_spec.rb | 2 ++ 6 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index ad822dfa7..4731fe922 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -42,6 +42,7 @@ def self.search_config config.add_facet_field solr_name('publisher', :facetable), limit: 5 config.add_facet_field solr_name('file_format', :facetable), limit: 5 config.add_facet_field 'generic_type_sim', show: false, single: true + config.add_facet_field solr_name('collection', :facetable), limit: 5 # Have BL send all facet field names to Solr, which has been the default # previously. Simply remove these lines if you'd rather use Solr request diff --git a/app/models/multi_volume_work.rb b/app/models/multi_volume_work.rb index 2d2bbc73f..8b960c717 100644 --- a/app/models/multi_volume_work.rb +++ b/app/models/multi_volume_work.rb @@ -4,4 +4,10 @@ class MultiVolumeWork < ActiveFedora::Base include ::CurationConcerns::BasicMetadata include ::CommonMetadata include ::NoidBehaviors + + def to_solr(solr_doc = {}) + super.tap do |doc| + doc[ActiveFedora::SolrQueryBuilder.solr_name("collection", :facetable)] = in_collections.collect(&:title) + end + end end diff --git a/app/models/scanned_resource.rb b/app/models/scanned_resource.rb index 0342dae07..d44e20458 100644 --- a/app/models/scanned_resource.rb +++ b/app/models/scanned_resource.rb @@ -14,6 +14,7 @@ def to_solr(solr_doc = {}) doc[ActiveFedora::SolrQueryBuilder.solr_name("ordered_by", :symbol)] += send(:ordered_by_ids) doc[ActiveFedora::SolrQueryBuilder.solr_name("logical_order", :symbol)] = [logical_order.order.to_json] doc[ActiveFedora::SolrQueryBuilder.solr_name("logical_order_headings", :stored_searchable)] = logical_order.object.each_section.map(&:label) + doc[ActiveFedora::SolrQueryBuilder.solr_name("collection", :facetable)] = in_collections.map(&:title) end end diff --git a/config/locales/blacklight.en.yml b/config/locales/blacklight.en.yml index ff834b2f0..69222038b 100644 --- a/config/locales/blacklight.en.yml +++ b/config/locales/blacklight.en.yml @@ -1,3 +1,7 @@ en: blacklight: - application_name: 'Blacklight' \ No newline at end of file + application_name: 'Blacklight' + search: + fields: + facet: + collection_sim: Collection diff --git a/spec/features/catalog_spec.rb b/spec/features/catalog_spec.rb index 75f414346..412a952f2 100644 --- a/spec/features/catalog_spec.rb +++ b/spec/features/catalog_spec.rb @@ -3,16 +3,18 @@ RSpec.feature "CatalogController", type: :feature do describe "admin user" do let(:user) { FactoryGirl.create(:admin) } - let(:scanned_resource) { FactoryGirl.create(:scanned_resource, user: user) } + let(:scanned_resource) { FactoryGirl.create(:scanned_resource_in_collection, user: user, language: ['English']) } before(:each) do sign_in user scanned_resource.update_index end - scenario "Admin users see a state facet" do + scenario "Admin users see collection, language, and state facets" do visit catalog_index_path q: "" expect(page).to have_text "Test title" + expect(page).to have_selector "div.blacklight-collection_sim", text: "Collection" + expect(page).to have_selector "div.blacklight-language_sim", text: "Language" expect(page).to have_selector "div.blacklight-state_sim", text: "State" end end diff --git a/spec/models/scanned_resource_spec.rb b/spec/models/scanned_resource_spec.rb index a31ceaaea..cb1ddaf25 100644 --- a/spec/models/scanned_resource_spec.rb +++ b/spec/models/scanned_resource_spec.rb @@ -315,10 +315,12 @@ end it "marshals logical order into solr" do subject.logical_order.order = params + subject.save expect(subject.to_solr["logical_order_ssim"]).to eq [subject.logical_order.order.to_json] end it "indexes the headings into the solr record" do subject.logical_order.order = params2 + subject.save expect(subject.to_solr["logical_order_headings_tesim"]).to eq [ "Chapter 1",