From 843d4cd4a756fefd4867bbf10ea7bae3f0375b2e Mon Sep 17 00:00:00 2001 From: Martin Fenner Date: Fri, 5 Jun 2020 18:01:46 +0200 Subject: [PATCH 1/2] fix pid entity facet --- app/controllers/concerns/facetable.rb | 2 +- app/graphql/types/base_connection.rb | 2 +- .../types/service_connection_with_total_type.rb | 2 +- spec/graphql/types/service_type_spec.rb | 11 ++++++++--- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/controllers/concerns/facetable.rb b/app/controllers/concerns/facetable.rb index 1f156cc71..547d8aeea 100644 --- a/app/controllers/concerns/facetable.rb +++ b/app/controllers/concerns/facetable.rb @@ -89,7 +89,7 @@ def facet_by_key(arr) def facet_by_software(arr) arr.map do |hsh| - { "id" => hsh["key"].downcase, + { "id" => hsh["key"].parameterize(separator: '_'), "title" => hsh["key"], "count" => hsh["doc_count"] } end diff --git a/app/graphql/types/base_connection.rb b/app/graphql/types/base_connection.rb index de89c00a7..59a88462e 100644 --- a/app/graphql/types/base_connection.rb +++ b/app/graphql/types/base_connection.rb @@ -47,7 +47,7 @@ def facet_by_resource_type(arr) def facet_by_software(arr) arr.map do |hsh| - { "id" => hsh["key"].downcase, + { "id" => hsh["key"].parameterize(separator: '_'), "title" => hsh["key"], "count" => hsh["doc_count"] } end diff --git a/app/graphql/types/service_connection_with_total_type.rb b/app/graphql/types/service_connection_with_total_type.rb index d8a7ebcf1..c42ad7e5d 100644 --- a/app/graphql/types/service_connection_with_total_type.rb +++ b/app/graphql/types/service_connection_with_total_type.rb @@ -33,7 +33,7 @@ def affiliations end def pid_entities - object.total_count.positive? ? facet_by_combined_key(object.aggregations.pid_entities.subject.buckets) : [] + object.total_count.positive? ? facet_by_software(object.aggregations.pid_entities.subject.buckets) : [] end def fields_of_science diff --git a/spec/graphql/types/service_type_spec.rb b/spec/graphql/types/service_type_spec.rb index 78eb71253..196b6d7a7 100644 --- a/spec/graphql/types/service_type_spec.rb +++ b/spec/graphql/types/service_type_spec.rb @@ -41,14 +41,17 @@ } years { id + title count } pidEntities { id + title count } fieldsOfScience { id + title count } nodes { @@ -77,11 +80,13 @@ response = LupoSchema.execute(query).as_json expect(response.dig("data", "services", "totalCount")).to eq(3) - expect(response.dig("data", "services", "pidEntities")).to eq([{"id"=>"Instrument", "count"=>3}]) - expect(response.dig("data", "services", "fieldsOfScience")).to eq([{"count"=>3, "id"=>"computer_and_information_sciences"}]) + expect(response.dig("data", "services", "pidEntities")).to eq([{"count"=>3, "id"=>"instrument", "title"=>"Instrument"}]) + expect(response.dig("data", "services", "fieldsOfScience")).to eq([{"count"=>3, + "id"=>"computer_and_information_sciences", + "title"=>"Computer and information sciences"}]) expect(Base64.urlsafe_decode64(response.dig("data", "services", "pageInfo", "endCursor")).split(",", 2).last).to eq(services.last.uid) expect(response.dig("data", "services", "pageInfo", "hasNextPage")).to be false - expect(response.dig("data", "services", "years")).to eq([{"count"=>3, "id"=>"2011"}]) + expect(response.dig("data", "services", "years")).to eq([{"count"=>3, "id"=>"2011", "title"=>"2011"}]) expect(response.dig("data", "services", "nodes").length).to eq(3) service = response.dig("data", "services", "nodes", 0) From 0c25682321f945a86976e6b7d71c82ce91e113ed Mon Sep 17 00:00:00 2001 From: Martin Fenner Date: Fri, 5 Jun 2020 18:06:54 +0200 Subject: [PATCH 2/2] support pid entity queries with lowercase id --- app/models/doi.rb | 4 ++-- spec/graphql/types/service_type_spec.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/doi.rb b/app/models/doi.rb index a08eb3d29..9a0267a59 100644 --- a/app/models/doi.rb +++ b/app/models/doi.rb @@ -809,11 +809,11 @@ def self.query(query, options={}) filter << { terms: { "subjects.subject": options[:subject].split(",") } } if options[:subject].present? if options[:pid_entity].present? filter << { term: { "subjects.subjectScheme": "PidEntity" } } - filter << { terms: { "subjects.subject": options[:pid_entity].split(",") } } + filter << { terms: { "subjects.subject": options[:pid_entity].split(",").map(&:humanize) } } end if options[:field_of_science].present? filter << { term: { "subjects.subjectScheme": "Fields of Science and Technology (FOS)" } } - filter << { term: { "subjects.subject": "FOS: " + options[:field_of_science].humanize } } + filter << { terms: { "subjects.subject": "FOS: " + options[:field_of_science].split(",").map(&:humanize) } } end filter << { term: { source: options[:source] } } if options[:source].present? filter << { range: { reference_count: { "gte": options[:has_references].to_i } } } if options[:has_references].present? diff --git a/spec/graphql/types/service_type_spec.rb b/spec/graphql/types/service_type_spec.rb index 196b6d7a7..7190d2d90 100644 --- a/spec/graphql/types/service_type_spec.rb +++ b/spec/graphql/types/service_type_spec.rb @@ -33,7 +33,7 @@ let(:query) do %(query { - services(pidEntity: "Instrument") { + services(pidEntity: "instrument") { totalCount pageInfo { endCursor