Skip to content

Commit

Permalink
Avoid using the deprecated method to_class_uri
Browse files Browse the repository at this point in the history
  • Loading branch information
jcoyne committed Sep 14, 2016
1 parent 5c77b51 commit ddf6e4e
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 16 deletions.
3 changes: 1 addition & 2 deletions app/models/concerns/curation_concerns/collection_behavior.rb
Expand Up @@ -35,11 +35,10 @@ def bytes

# One query per member_id because Solr is not a relational database
sizes = member_ids.collect do |work_id|
query = ActiveFedora::SolrQueryBuilder.construct_query_for_rel(has_model: ::FileSet.to_class_uri)
argz = { fl: "id, #{file_size_field}",
fq: "{!join from=#{member_ids_field} to=id}id:#{work_id}"
}
files = ActiveFedora::SolrService.query(query, argz)
files = ::FileSet.search_with_conditions({}, argz)
files.reduce(0) { |sum, f| sum + f[file_size_field].to_i }
end

Expand Down
Expand Up @@ -7,7 +7,7 @@ def initialize(context, access)

# This overrides the models in FilterByType
def models
[::AdminSet.to_class_uri]
[::AdminSet]
end

# Overrides Hydra::AccessControlsEnforcement
Expand Down
@@ -1,16 +1,18 @@
module CurationConcerns
class CollectionSearchBuilder < ::SearchBuilder
include FilterByType
# Defines which search_params_logic should be used when searching for Collections
self.default_processor_chain = [:default_solr_parameters, :add_query_to_solr,
:add_access_controls_to_solr_params, :add_collection_filter, :some_rows, :sort_by_title]
:add_access_controls_to_solr_params, :filter_models,
:some_rows, :sort_by_title]

def some_rows(solr_parameters)
solr_parameters[:rows] = '100'
end

def add_collection_filter(solr_parameters)
solr_parameters[:fq] ||= []
solr_parameters[:fq] << ActiveFedora::SolrQueryBuilder.construct_query_for_rel(has_model: ::Collection.to_class_uri)
# This overrides FilterByType and ensures we only match on collections.
def only_collections?
true
end

# Sort results by title if no query was supplied.
Expand Down
Expand Up @@ -4,7 +4,7 @@ class FileSetSearchBuilder < ::SearchBuilder

# This overrides the models in FilterByType
def models
[::FileSet.to_class_uri]
[::FileSet]
end
end
end
20 changes: 13 additions & 7 deletions app/search_builders/curation_concerns/filter_by_type.rb
Expand Up @@ -9,7 +9,7 @@ module FilterByType
# Add queries that excludes everything except for works and collections
def filter_models(solr_parameters)
solr_parameters[:fq] ||= []
solr_parameters[:fq] << "{!terms f=has_model_ssim}#{models.join(',')}"
solr_parameters[:fq] << "{!terms f=has_model_ssim}#{models_to_solr_clause}"
end

protected
Expand All @@ -23,13 +23,18 @@ def only_works?
end

# Override this method if you want to filter for a different set of models.
# @return [Array<String>] a list of model names to include
# @return [Array<Class>] a list of classes to include
def models
work_clauses + collection_clauses
work_classes + collection_classes
end

private

def models_to_solr_clause
# to_class_uri is deprecated in AF 11
[ActiveFedora::Base.respond_to?(:to_rdf_representation) ? models.map(&:to_rdf_representation) : models.map(&:to_class_uri)].join(',')
end

def generic_type_field
Array.wrap(blacklight_params.fetch(:f, {}).fetch(:generic_type_sim, []))
end
Expand All @@ -41,14 +46,15 @@ def work_types
CurationConcerns.config.curation_concerns
end

def work_clauses
def work_classes
return [] if only_collections?
work_types.map(&:to_class_uri)
work_types
end

def collection_clauses
def collection_classes
return [] if only_works?
[::Collection.to_class_uri]
# to_class_uri is deprecated in AF 11
[::Collection]
end
end
end
5 changes: 4 additions & 1 deletion spec/controllers/selects_collections_controller_spec.rb
Expand Up @@ -11,7 +11,10 @@ class SelectsCollectionsController < ApplicationController
describe SelectsCollectionsController, type: :controller do
describe "#find_collections" do
it "uses the search builder" do
expect(subject.collections_search_builder_class.default_processor_chain).to eq [:default_solr_parameters, :add_query_to_solr, :add_access_controls_to_solr_params, :add_collection_filter, :some_rows, :sort_by_title]
expect(subject.collections_search_builder_class.default_processor_chain).to eq [
:default_solr_parameters, :add_query_to_solr,
:add_access_controls_to_solr_params, :filter_models,
:some_rows, :sort_by_title]
expect(CurationConcerns::CollectionSearchBuilder).to receive(:new).with(subject).and_call_original
subject.find_collections
end
Expand Down

0 comments on commit ddf6e4e

Please sign in to comment.