diff --git a/Gemfile.lock b/Gemfile.lock index 6d1cce32a..bba2c2658 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,7 +95,7 @@ GEM latex-decode (~> 0.0) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - bolognese (1.1.7) + bolognese (1.1.8) activesupport (>= 4.2.5, < 6) benchmark_methods (~> 0.7) bibtex-ruby (~> 4.1) diff --git a/app/controllers/dois_controller.rb b/app/controllers/dois_controller.rb index 209ebac58..da080f6e8 100644 --- a/app/controllers/dois_controller.rb +++ b/app/controllers/dois_controller.rb @@ -478,9 +478,9 @@ def safe_params :should_validate, :client, :creators, - { creators: [:nameType, { nameIdentifiers: [:nameIdentifier, :nameIdentifierScheme] }, :name, :givenName, :familyName, :affiliation] }, + { creators: [:nameType, { nameIdentifiers: [:nameIdentifier, :nameIdentifierScheme, :schemeUri] }, :name, :givenName, :familyName, :affiliation] }, :contributors, - { contributors: [:nameType, { nameIdentifiers: [:nameIdentifier, :nameIdentifierScheme] }, :name, :givenName, :familyName, :affiliation, :contributorType] }, + { contributors: [:nameType, { nameIdentifiers: [:nameIdentifier, :nameIdentifierScheme, :schemeUri] }, :name, :givenName, :familyName, :affiliation, :contributorType] }, :identifiers, { identifiers: [:identifier, :identifierType] }, :relatedIdentifiers, diff --git a/app/models/activity.rb b/app/models/activity.rb index 2a35fa725..7907b3751 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -34,7 +34,8 @@ def after_audit nameType: { type: :keyword }, nameIdentifiers: { type: :object, properties: { nameIdentifier: { type: :keyword }, - nameIdentifierScheme: { type: :keyword } + nameIdentifierScheme: { type: :keyword }, + schemeUri: { type: :keyword } }}, name: { type: :text }, givenName: { type: :text }, @@ -45,7 +46,8 @@ def after_audit nameType: { type: :keyword }, nameIdentifiers: { type: :object, properties: { nameIdentifier: { type: :keyword }, - nameIdentifierScheme: { type: :keyword } + nameIdentifierScheme: { type: :keyword }, + schemeUri: { type: :keyword } }}, name: { type: :text }, givenName: { type: :text }, diff --git a/app/models/doi.rb b/app/models/doi.rb index ca944bd0b..5ec45e5b4 100644 --- a/app/models/doi.rb +++ b/app/models/doi.rb @@ -105,7 +105,8 @@ class Doi < ActiveRecord::Base nameType: { type: :keyword }, nameIdentifiers: { type: :object, properties: { nameIdentifier: { type: :keyword }, - nameIdentifierScheme: { type: :keyword } + nameIdentifierScheme: { type: :keyword }, + schemeUri: { type: :keyword } }}, name: { type: :text }, givenName: { type: :text }, @@ -116,7 +117,8 @@ class Doi < ActiveRecord::Base nameType: { type: :keyword }, nameIdentifiers: { type: :object, properties: { nameIdentifier: { type: :keyword }, - nameIdentifierScheme: { type: :keyword } + nameIdentifierScheme: { type: :keyword }, + schemeUri: { type: :keyword } }}, name: { type: :text }, givenName: { type: :text }, diff --git a/config/initializers/_version.rb b/config/initializers/_version.rb index f43592c80..8ee283182 100644 --- a/config/initializers/_version.rb +++ b/config/initializers/_version.rb @@ -1,7 +1,11 @@ module Lupo class Application g = Git.open(Rails.root, :log => Logger.new(STDOUT)) - VERSION = g.tags.map { |t| Gem::Version.new(t.name) }.sort.last.to_s + begin + VERSION = g.tags.map { |t| Gem::Version.new(t.name) }.sort.last.to_s + rescue ArgumentError + VERSION = "1.0" + end REVISION = g.object('HEAD').sha end end \ No newline at end of file diff --git a/openapi.yaml b/openapi.yaml index c7003e395..ca67fbd91 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -900,6 +900,8 @@ components: type: string nameIdentifierScheme: type: string + schemeUri: + type: string name: type: string givenName: @@ -973,6 +975,8 @@ components: type: string nameIdentifierScheme: type: string + schemeUri: + type: string name: type: string givenName: diff --git a/spec/concerns/crosscitable_spec.rb b/spec/concerns/crosscitable_spec.rb index 937858537..ec22334cc 100644 --- a/spec/concerns/crosscitable_spec.rb +++ b/spec/concerns/crosscitable_spec.rb @@ -151,7 +151,7 @@ expect(meta["creators"]).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin","name"=>"Fenner, Martin", "nameIdentifiers"=> [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", - "nameIdentifierScheme"=>"ORCID"}], + "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "nameType"=>"Personal"}]) expect(meta["titles"]).to eq([{"title"=>"Eating your own Dog Food"}]) expect(meta["publication_year"]).to eq("2016") @@ -297,7 +297,7 @@ "familyName" => "Jones", "givenName" => "Matt", "name" => "Jones, Matt", - "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738", "nameIdentifierScheme"=>"ORCID"}], + "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "nameType" => "Personal") expect(meta["titles"]).to eq([{"title"=>"R Interface to the DataONE REST API"}]) expect(meta["publication_year"]).to eq("2016") @@ -313,7 +313,7 @@ expect(meta["doi"]).to eq("10.5438/4k3m-nyvg") expect(meta["creators"].length).to eq(1) expect(meta["creators"].first).to eq("familyName"=>"Fenner", "givenName"=>"Martin", "name" => "Fenner, Martin", - "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme"=>"ORCID"}], + "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "nameType" => "Personal") expect(meta["titles"]).to eq([{"title"=>"Eating your own Dog Food"}]) expect(meta["publication_year"]).to eq("2016") @@ -431,7 +431,7 @@ "familyName" => "Jones", "givenName" => "Matt", "name" => "Jones, Matt", - "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738", "nameIdentifierScheme"=>"ORCID"}], + "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "nameType" => "Personal") expect(meta["titles"]).to eq([{"title"=>"R Interface to the DataONE REST API"}]) expect(meta["publication_year"]).to eq("2016") @@ -445,7 +445,7 @@ expect(meta["doi"]).to eq("10.5438/4k3m-nyvg") expect(meta["creators"].length).to eq(1) expect(meta["creators"].first).to eq("familyName"=>"Fenner", "givenName"=>"Martin", "name" => "Fenner, Martin", - "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme"=>"ORCID"}], + "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "nameType" => "Personal") expect(meta["titles"]).to eq([{"title"=>"Eating your own Dog Food"}]) expect(meta["publication_year"]).to eq("2016") diff --git a/spec/factories/default.rb b/spec/factories/default.rb index c349ce5b6..19601d397 100644 --- a/spec/factories/default.rb +++ b/spec/factories/default.rb @@ -85,7 +85,8 @@ "nameIdentifiers": [ { "nameIdentifier": "https://orcid.org/0000-0003-1419-2405", - "nameIdentifierScheme": "ORCID" + "nameIdentifierScheme": "ORCID", + "schemeUri": "https://orcid.org" } ] } diff --git a/spec/requests/dois_spec.rb b/spec/requests/dois_spec.rb index 16d3dafe8..a609e8973 100644 --- a/spec/requests/dois_spec.rb +++ b/spec/requests/dois_spec.rb @@ -842,7 +842,8 @@ "name"=>"Fenner, Martin", "nameIdentifiers"=> [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", - "nameIdentifierScheme"=>"ORCID"}], + "nameIdentifierScheme"=>"ORCID", + "schemeUri"=>"https://orcid.org"}], "nameType"=>"Personal"}]) expect(json.dig('data', 'attributes', 'schemaVersion')).to eq("http://datacite.org/schema/kernel-4") expect(json.dig('data', 'attributes', 'source')).to eq("test") @@ -873,7 +874,7 @@ "titles" => [{"title"=>"Eating your own Dog Food"}], "publisher" => "DataCite", "publicationYear" => 2016, - "creators" => [{"familyName"=>"Fenner", "givenName"=>"Martin", "nameIdentifiers"=>[{ "nameIdentifier" => "https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme" => "ORCID" }], "name"=>"Fenner, Martin", "nameType"=>"Personal"}], + "creators" => [{"familyName"=>"Fenner", "givenName"=>"Martin", "nameIdentifiers"=>[{ "nameIdentifier" => "https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme" => "ORCID", "schemeUri"=>"https://orcid.org" }], "name"=>"Fenner, Martin", "nameType"=>"Personal"}], "source" => "test", "event" => "publish" } @@ -887,7 +888,7 @@ expect(json.dig('data', 'attributes', 'url')).to eq("http://www.bl.uk/pdf/patspec.pdf") expect(json.dig('data', 'attributes', 'doi')).to eq("10.14454/10703") expect(json.dig('data', 'attributes', 'titles')).to eq([{"title"=>"Eating your own Dog Food"}]) - expect(json.dig('data', 'attributes', 'creators')).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin", "nameIdentifiers"=>[{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405","nameIdentifierScheme"=>"ORCID"}], "name"=>"Fenner, Martin", "nameType"=>"Personal"}]) + expect(json.dig('data', 'attributes', 'creators')).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin", "nameIdentifiers"=>[{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405","nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Fenner, Martin", "nameType"=>"Personal"}]) expect(json.dig('data', 'attributes', 'publisher')).to eq("DataCite") expect(json.dig('data', 'attributes', 'publicationYear')).to eq(2016) # expect(json.dig('data', 'attributes', 'schemaVersion')).to eq("http://datacite.org/schema/kernel-4")