diff --git a/lib/supplejack/url_formats/item_hash.rb b/lib/supplejack/url_formats/item_hash.rb index abb664f..9018db1 100644 --- a/lib/supplejack/url_formats/item_hash.rb +++ b/lib/supplejack/url_formats/item_hash.rb @@ -14,39 +14,40 @@ def initialize(params = {}, search = nil) @h_locked = filters_of_type(:hl) end - # rubocop:disable Metrics/AbcSize def to_api_hash - hash = {} - text_value = text(params[:text]) - hash[:text] = text_value if text_value - hash[:geo_bbox] = params[:geo_bbox] if params[:geo_bbox] - hash[:record_type] = params[:record_type] || 0 - hash[:record_type] = hash[:record_type].to_i unless hash[:record_type] == 'all' - hash[:page] = (params[:page] || 1).to_i - hash[:per_page] = (params[:per_page] || Supplejack.per_page).to_i - hash[:and] = and_filters if and_filters&.any? - hash[:without] = without_filters if without_filters&.any? - hash[:facets] = params[:facets] if params[:facets].present? - hash[:facet_pivots] = params[:facet_pivots] if params[:facet_pivots].present? - hash[:facets_per_page] = params[:facets_per_page].to_i if params[:facets_per_page].present? - hash[:facet_missing] = params[:facet_missing] if params[:facet_missing].present? - hash[:fields] = params[:fields] || Supplejack.fields.join(',') - hash[:query_fields] = query_fields if query_fields - hash[:solr_query] = params[:solr_query] if params[:solr_query].present? - hash[:ignore_metrics] = params[:ignore_metrics] if params[:ignore_metrics].present? - hash[:exclude_filters_from_facets] = params[:exclude_filters_from_facets] || false - hash[:group_by] = params[:group_by] - hash[:group_order_by] = params[:group_order_by] - hash[:group_sort] = params[:group_sort] - - if params[:sort].present? - hash[:sort] = params[:sort] - hash[:direction] = params[:direction] || 'asc' - end + { + text: text(params[:text]), + geo_bbox: params[:geo_bbox], + record_type: record_type_value, + page: (params[:page] || 1).to_i, + per_page: (params[:per_page] || Supplejack.per_page).to_i, + and: and_filters.presence, + without: without_filters.presence, + facets: params[:facets].presence, + facet_pivots: params[:facet_pivots].presence, + facets_page: params[:facets_page].presence && params[:facets_page].to_i, + facets_per_page: params[:facets_per_page].presence && params[:facets_per_page].to_i, + facet_missing: params[:facet_missing].presence, + fields: params[:fields] || Supplejack.fields.join(','), + query_fields:, + solr_query: params[:solr_query].presence, + ignore_metrics: params[:ignore_metrics].presence, + exclude_filters_from_facets: params[:exclude_filters_from_facets] || false, + group_by: params[:group_by], + group_order_by: params[:group_order_by], + group_sort: params[:group_sort] + }.tap do |hash| + if params[:sort].present? + hash[:sort] = params[:sort] + hash[:direction] = params[:direction] || 'asc' + end + end.compact + end - hash + def record_type_value + rt = params[:record_type] || 0 + rt == 'all' ? rt : rt.to_i end - # rubocop:enable Metrics/AbcSize # Returns all the active filters for the current search # These filters are used to scope the search results diff --git a/spec/supplejack/more_like_this_record_spec.rb b/spec/supplejack/more_like_this_record_spec.rb index e904965..eb71c92 100644 --- a/spec/supplejack/more_like_this_record_spec.rb +++ b/spec/supplejack/more_like_this_record_spec.rb @@ -18,7 +18,7 @@ module Supplejack expect(more_like_this.params).to eq( { exclude_filters_from_facets: false, page: 1, per_page: 20, - record_type: 0, fields: 'default', frequency: 1, group_by: nil, group_order_by: nil, group_sort: nil + record_type: 0, fields: 'default', frequency: 1 } ) end @@ -35,7 +35,7 @@ module Supplejack expect(more_like_this.params).to eq( { exclude_filters_from_facets: false, page: 1, per_page: 20, - record_type: 0, fields: 'default', frequency: 2, mlt_fields: 'title,description', group_by: nil, group_order_by: nil, group_sort: nil + record_type: 0, fields: 'default', frequency: 2, mlt_fields: 'title,description' } ) end @@ -45,7 +45,7 @@ module Supplejack expect(more_like_this.params).to eq( { exclude_filters_from_facets: false, page: 3, per_page: 20, - record_type: 0, fields: 'default', frequency: 1, group_by: nil, group_order_by: nil, group_sort: nil + record_type: 0, fields: 'default', frequency: 1 } ) end @@ -57,7 +57,7 @@ module Supplejack it 'requests more_like_this api with params' do params = { - exclude_filters_from_facets: false, page: 1, per_page: 20, record_type: 0, fields: 'default', frequency: 2, mlt_fields: 'title,description', group_by: nil, group_order_by: nil, group_sort: nil + exclude_filters_from_facets: false, page: 1, per_page: 20, record_type: 0, fields: 'default', frequency: 2, mlt_fields: 'title,description' } allow(more_like_this).to receive(:get).with('/records/101/more_like_this', params).and_return( { 'more_like_this' => { 'record' => {} } } diff --git a/spec/supplejack/url_formats/item_hash_spec.rb b/spec/supplejack/url_formats/item_hash_spec.rb index 6fc487e..93f6905 100644 --- a/spec/supplejack/url_formats/item_hash_spec.rb +++ b/spec/supplejack/url_formats/item_hash_spec.rb @@ -56,6 +56,10 @@ module UrlFormats expect(item_hash(facets: 'description,creator').to_api_hash).to include(facets: 'description,creator') end + it 'returns the facets page' do + expect(item_hash(facets_page: '12').to_api_hash).to include(facets_page: 12) + end + it 'returns the facets per page' do expect(item_hash(facets_per_page: '12').to_api_hash).to include(facets_per_page: 12) end