Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 31 additions & 30 deletions lib/supplejack/url_formats/item_hash.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions spec/supplejack/more_like_this_record_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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' => {} } }
Expand Down
4 changes: 4 additions & 0 deletions spec/supplejack/url_formats/item_hash_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading