spec/utils_spec.rb in briard-2.4.2 vs spec/utils_spec.rb in briard-2.6.0

- old
+ new

@@ -1,654 +1,678 @@ # frozen_string_literal: true require 'spec_helper' describe Briard::Metadata, vcr: true do - let(:input) { "https://doi.org/10.1101/097196" } + subject { described_class.new(input: input, from: 'crossref') } - subject { Briard::Metadata.new(input: input, from: "crossref") } + let(:input) { 'https://doi.org/10.1101/097196' } - context "validate url" do - it "DOI" do - str = "https://doi.org/10.5438/0000-00ss" + context 'validate url' do + it 'DOI' do + str = 'https://doi.org/10.5438/0000-00ss' response = subject.validate_url(str) - expect(response).to eq("DOI") + expect(response).to eq('DOI') end - it "URL" do - str = "https://blog.datacite.org/eating-your-own-dog-food" + it 'URL' do + str = 'https://blog.datacite.org/eating-your-own-dog-food' response = subject.validate_url(str) - expect(response).to eq("URL") + expect(response).to eq('URL') end - it "ISSN" do - str = "ISSN 2050-084X" + it 'ISSN' do + str = 'ISSN 2050-084X' response = subject.validate_url(str) - expect(response).to eq("ISSN") + expect(response).to eq('ISSN') end - it "string" do - str = "eating-your-own-dog-food" + it 'string' do + str = 'eating-your-own-dog-food' response = subject.validate_url(str) - expect(response).to be_nil + expect(response.nil?).to be(true) end end - context "validate_orcid" do - it "validate_orcid" do - orcid = "http://orcid.org/0000-0002-2590-225X" + context 'validate_orcid' do + it 'validate_orcid' do + orcid = 'http://orcid.org/0000-0002-2590-225X' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-2590-225X") + expect(response).to eq('0000-0002-2590-225X') end - it "validate_orcid https" do - orcid = "https://orcid.org/0000-0002-2590-225X" + it 'validate_orcid https' do + orcid = 'https://orcid.org/0000-0002-2590-225X' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-2590-225X") + expect(response).to eq('0000-0002-2590-225X') end - it "validate_orcid id" do - orcid = "0000-0002-2590-225X" + it 'validate_orcid id' do + orcid = '0000-0002-2590-225X' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-2590-225X") + expect(response).to eq('0000-0002-2590-225X') end - it "validate_orcid www" do - orcid = "http://www.orcid.org/0000-0002-2590-225X" + it 'validate_orcid www' do + orcid = 'http://www.orcid.org/0000-0002-2590-225X' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-2590-225X") + expect(response).to eq('0000-0002-2590-225X') end - it "validate_orcid with spaces" do - orcid = "0000 0002 1394 3097" + it 'validate_orcid with spaces' do + orcid = '0000 0002 1394 3097' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-1394-3097") + expect(response).to eq('0000-0002-1394-3097') end - it "validate_orcid sandbox" do - orcid = "http://sandbox.orcid.org/0000-0002-2590-225X" + it 'validate_orcid sandbox' do + orcid = 'http://sandbox.orcid.org/0000-0002-2590-225X' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-2590-225X") + expect(response).to eq('0000-0002-2590-225X') end - it "validate_orcid sandbox https" do - orcid = "https://sandbox.orcid.org/0000-0002-2590-225X" + it 'validate_orcid sandbox https' do + orcid = 'https://sandbox.orcid.org/0000-0002-2590-225X' response = subject.validate_orcid(orcid) - expect(response).to eq("0000-0002-2590-225X") + expect(response).to eq('0000-0002-2590-225X') end - it "validate_orcid wrong id" do - orcid = "0000-0002-1394-309" + it 'validate_orcid wrong id' do + orcid = '0000-0002-1394-309' response = subject.validate_orcid(orcid) - expect(response).to be_nil + expect(response.nil?).to be(true) end end - context "validate_orcid_scheme" do - it "validate_orcid_scheme" do - orcid = "http://orcid.org" + context 'validate_orcid_scheme' do + it 'validate_orcid_scheme' do + orcid = 'http://orcid.org' response = subject.validate_orcid_scheme(orcid) - expect(response).to eq("orcid.org") + expect(response).to eq('orcid.org') end - it "validate_orcid_scheme trailing slash" do - orcid = "http://orcid.org/" + it 'validate_orcid_scheme trailing slash' do + orcid = 'http://orcid.org/' response = subject.validate_orcid_scheme(orcid) - expect(response).to eq("orcid.org") + expect(response).to eq('orcid.org') end - it "validate_orcid_scheme https" do - orcid = "https://orcid.org" + it 'validate_orcid_scheme https' do + orcid = 'https://orcid.org' response = subject.validate_orcid_scheme(orcid) - expect(response).to eq("orcid.org") + expect(response).to eq('orcid.org') end - it "validate_orcid_scheme www" do - orcid = "http://www.orcid.org" + it 'validate_orcid_scheme www' do + orcid = 'http://www.orcid.org' response = subject.validate_orcid_scheme(orcid) - expect(response).to eq("orcid.org") + expect(response).to eq('orcid.org') end end - context "parse attributes" do - it "string" do - element = "10.5061/DRYAD.8515" + context 'parse attributes' do + it 'string' do + element = '10.5061/DRYAD.8515' response = subject.parse_attributes(element) - expect(response).to eq("10.5061/DRYAD.8515") + expect(response).to eq('10.5061/DRYAD.8515') end - it "hash" do - element = { "__content__" => "10.5061/DRYAD.8515" } + it 'hash' do + element = { '__content__' => '10.5061/DRYAD.8515' } response = subject.parse_attributes(element) - expect(response).to eq("10.5061/DRYAD.8515") + expect(response).to eq('10.5061/DRYAD.8515') end - it "array" do - element = [{ "__content__" => "10.5061/DRYAD.8515" }] + it 'array' do + element = [{ '__content__' => '10.5061/DRYAD.8515' }] response = subject.parse_attributes(element) - expect(response).to eq("10.5061/DRYAD.8515") + expect(response).to eq('10.5061/DRYAD.8515') end - it "array of strings" do - element = ["datacite", "doi", "metadata", "featured"] + it 'array of strings' do + element = %w[datacite doi metadata featured] response = subject.parse_attributes(element) - expect(response).to eq(["datacite", "doi", "metadata", "featured"]) + expect(response).to eq(%w[datacite doi metadata featured]) end - it "nil" do + it 'nil' do element = nil response = subject.parse_attributes(element) - expect(response).to be_nil + expect(response.nil?).to be(true) end - it "first" do - element = [{ "__content__" => "10.5061/DRYAD.8515/1" }, { "__content__" => "10.5061/DRYAD.8515/2" }] + it 'first' do + element = [{ '__content__' => '10.5061/DRYAD.8515/1' }, + { '__content__' => '10.5061/DRYAD.8515/2' }] response = subject.parse_attributes(element, first: true) - expect(response).to eq("10.5061/DRYAD.8515/1") + expect(response).to eq('10.5061/DRYAD.8515/1') end end - context "normalize id" do - it "doi" do - doi = "10.5061/DRYAD.8515" + context 'normalize id' do + it 'doi' do + doi = '10.5061/DRYAD.8515' response = subject.normalize_id(doi) - expect(response).to eq("https://doi.org/10.5061/dryad.8515") + expect(response).to eq('https://doi.org/10.5061/dryad.8515') end - it "doi as url" do - doi = "http://dx.doi.org/10.5061/DRYAD.8515" + it 'doi as url' do + doi = 'http://dx.doi.org/10.5061/DRYAD.8515' response = subject.normalize_id(doi) - expect(response).to eq("https://doi.org/10.5061/dryad.8515") + expect(response).to eq('https://doi.org/10.5061/dryad.8515') end - it "url" do - url = "https://blog.datacite.org/eating-your-own-dog-food/" + it 'url' do + url = 'https://blog.datacite.org/eating-your-own-dog-food/' response = subject.normalize_id(url) - expect(response).to eq("https://blog.datacite.org/eating-your-own-dog-food") + expect(response).to eq('https://blog.datacite.org/eating-your-own-dog-food') end - it "url with utf-8" do - url = "http://www.詹姆斯.com/eating-your-own-dog-food/" + it 'url with utf-8' do + url = 'http://www.詹姆斯.com/eating-your-own-dog-food/' response = subject.normalize_id(url) - expect(response).to eq("http://www.xn--8ws00zhy3a.com/eating-your-own-dog-food") + expect(response).to eq('http://www.xn--8ws00zhy3a.com/eating-your-own-dog-food') end - it "ftp" do - url = "ftp://blog.datacite.org/eating-your-own-dog-food/" + it 'ftp' do + url = 'ftp://blog.datacite.org/eating-your-own-dog-food/' response = subject.normalize_id(url) - expect(response).to be_nil + expect(response.nil?).to be(true) end - it "invalid url" do - url = "http://" + it 'invalid url' do + url = 'http://' response = subject.normalize_id(url) - expect(response).to be_nil + expect(response.nil?).to be(true) end - it "string" do - url = "eating-your-own-dog-food" + it 'string' do + url = 'eating-your-own-dog-food' response = subject.normalize_id(url) - expect(response).to be_nil + expect(response.nil?).to be(true) end - it "sandbox via url" do - url = "https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7" + it 'sandbox via url' do + url = 'https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7' response = subject.normalize_id(url) - expect(response).to eq("https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7") + expect(response).to eq('https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7') end - it "sandbox via options" do - url = "10.20375/0000-0001-ddb8-7" + it 'sandbox via options' do + url = '10.20375/0000-0001-ddb8-7' response = subject.normalize_id(url, sandbox: true) - expect(response).to eq("https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7") + expect(response).to eq('https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7') end end - context "normalize ids" do - it "doi" do - ids = [{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/0012"}, {"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.5438/55E5-T5C0"}] + context 'normalize ids' do + it 'doi' do + ids = [{ '@type' => 'CreativeWork', '@id' => 'https://doi.org/10.5438/0012' }, + { '@type' => 'CreativeWork', '@id' => 'https://doi.org/10.5438/55E5-T5C0' }] response = subject.normalize_ids(ids: ids) - expect(response).to eq([{"relatedIdentifier"=>"10.5438/0012", - "relatedIdentifierType"=>"DOI", - "resourceTypeGeneral"=>"Text"}, - {"relatedIdentifier"=>"10.5438/55e5-t5c0", - "relatedIdentifierType"=>"DOI", - "resourceTypeGeneral"=>"Text"}]) + expect(response).to eq([{ 'relatedIdentifier' => '10.5438/0012', + 'relatedIdentifierType' => 'DOI', + 'resourceTypeGeneral' => 'Text' }, + { 'relatedIdentifier' => '10.5438/55e5-t5c0', + 'relatedIdentifierType' => 'DOI', + 'resourceTypeGeneral' => 'Text' }]) end - it "url" do - ids = [{"@type"=>"CreativeWork", "@id"=>"https://blog.datacite.org/eating-your-own-dog-food/"}] + it 'url' do + ids = [{ '@type' => 'CreativeWork', + '@id' => 'https://blog.datacite.org/eating-your-own-dog-food/' }] response = subject.normalize_ids(ids: ids) - expect(response).to eq("relatedIdentifier"=>"https://blog.datacite.org/eating-your-own-dog-food", "relatedIdentifierType"=>"URL", "resourceTypeGeneral" => "Text") + expect(response).to eq( + 'relatedIdentifier' => 'https://blog.datacite.org/eating-your-own-dog-food', 'relatedIdentifierType' => 'URL', 'resourceTypeGeneral' => 'Text' + ) end end - context "normalize url" do - it "with trailing slash" do - url = "http://creativecommons.org/publicdomain/zero/1.0/" + context 'normalize url' do + it 'with trailing slash' do + url = 'http://creativecommons.org/publicdomain/zero/1.0/' response = subject.normalize_url(url) - expect(response).to eq("http://creativecommons.org/publicdomain/zero/1.0") + expect(response).to eq('http://creativecommons.org/publicdomain/zero/1.0') end - it "with trailing slash and to https" do - url = "http://creativecommons.org/publicdomain/zero/1.0/" + it 'with trailing slash and to https' do + url = 'http://creativecommons.org/publicdomain/zero/1.0/' response = subject.normalize_url(url, https: true) - expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0") + expect(response).to eq('https://creativecommons.org/publicdomain/zero/1.0') end - it "uri" do - url = "info:eu-repo/semantics/openAccess" + it 'uri' do + url = 'info:eu-repo/semantics/openAccess' response = subject.normalize_url(url) - expect(response).to eq("info:eu-repo/semantics/openAccess") + expect(response).to eq('info:eu-repo/semantics/openAccess') end end - context "normalize cc url" do - it "with trailing slash" do - url = "http://creativecommons.org/publicdomain/zero/1.0/" + context 'normalize cc url' do + it 'with trailing slash' do + url = 'http://creativecommons.org/publicdomain/zero/1.0/' response = subject.normalize_cc_url(url) - expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0/legalcode") + expect(response).to eq('https://creativecommons.org/publicdomain/zero/1.0/legalcode') end - it "with trailing slash and to https" do - url = "http://creativecommons.org/publicdomain/zero/1.0/" + it 'with trailing slash and to https' do + url = 'http://creativecommons.org/publicdomain/zero/1.0/' response = subject.normalize_cc_url(url) - expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0/legalcode") + expect(response).to eq('https://creativecommons.org/publicdomain/zero/1.0/legalcode') end - it "not found" do - url = "http://creativecommons.org/publicdomain/zero/2.0/" + it 'not found' do + url = 'http://creativecommons.org/publicdomain/zero/2.0/' response = subject.normalize_cc_url(url) - expect(response).to eq("https://creativecommons.org/publicdomain/zero/2.0") + expect(response).to eq('https://creativecommons.org/publicdomain/zero/2.0') end end - context "normalize issn" do - it "from array" do - input = [{"media_type"=>"print", "__content__"=>"13040855"}, {"media_type"=>"electronic", "__content__"=>"21468427"}] + context 'normalize issn' do + it 'from array' do + input = [{ 'media_type' => 'print', '__content__' => '13040855' }, + { 'media_type' => 'electronic', '__content__' => '21468427' }] response = subject.normalize_issn(input) - expect(response).to eq("2146-8427") + expect(response).to eq('2146-8427') end - it "from empty array" do + it 'from empty array' do input = [] response = subject.normalize_issn(input) - expect(response).to be_nil + expect(response.nil?).to be(true) end - it "from hash" do - input = {"media_type"=>"electronic", "__content__"=>"21468427"} + it 'from hash' do + input = { 'media_type' => 'electronic', '__content__' => '21468427' } response = subject.normalize_issn(input) - expect(response).to eq("2146-8427") + expect(response).to eq('2146-8427') end - it "from string" do - input = "2146-8427" + it 'from string' do + input = '2146-8427' response = subject.normalize_issn(input) - expect(response).to eq("2146-8427") + expect(response).to eq('2146-8427') end end - context "to_schema_org" do - it "with id" do - author = {"type"=>"Person", "id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner" } + context 'to_schema_org' do + it 'with id' do + author = { 'type' => 'Person', 'id' => 'http://orcid.org/0000-0003-1419-2405', 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' } response = subject.to_schema_org(author) - expect(response).to eq("givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner", "@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405") + expect(response).to eq('givenName' => 'Martin', 'familyName' => 'Fenner', + 'name' => 'Martin Fenner', '@type' => 'Person', '@id' => 'http://orcid.org/0000-0003-1419-2405') end end - context "from_schema_org" do - it "with @id" do - author = {"@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner" } + context 'from_schema_org' do + it 'with @id' do + author = { '@type' => 'Person', '@id' => 'http://orcid.org/0000-0003-1419-2405', 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' } response = subject.from_schema_org(author) - expect(response).to eq("givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner", "type"=>"Person", "id"=>"http://orcid.org/0000-0003-1419-2405") + expect(response).to eq('givenName' => 'Martin', 'familyName' => 'Fenner', + 'name' => 'Martin Fenner', 'type' => 'Person', 'id' => 'http://orcid.org/0000-0003-1419-2405') end end - context "from_schema_org_creators" do - it "with affiliation" do - authors = [{"@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner", "affiliation" => { - "@id" => "https://ror.org/04wxnsj81", - "name" => "DataCite", - "@type" => "Organization" - }}] + context 'from_schema_org_creators' do + it 'with affiliation' do + authors = [{ '@type' => 'Person', '@id' => 'http://orcid.org/0000-0003-1419-2405', 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner', 'affiliation' => { + '@id' => 'https://ror.org/04wxnsj81', + 'name' => 'DataCite', + '@type' => 'Organization' + } }] response = subject.from_schema_org_creators(authors) - expect(response).to eq([{"affiliation"=> - {"affiliationIdentifier"=>"https://ror.org/04wxnsj81", - "affiliationIdentifierScheme"=>"ROR", - "__content__"=>"DataCite", - "schemeUri"=>"https://ror.org/"}, - "creatorName"=>{"__content__"=>"Martin Fenner", "nameType"=>"Personal"}, - "familyName"=>"Fenner", - "givenName"=>"Martin", - "nameIdentifier"=> - [{"__content__"=>"http://orcid.org/0000-0003-1419-2405", - "nameIdentifierScheme"=>"ORCID", - "schemeUri"=>"https://orcid.org"}]}]) + expect(response).to eq([{ 'affiliation' => + { 'affiliationIdentifier' => 'https://ror.org/04wxnsj81', + 'affiliationIdentifierScheme' => 'ROR', + '__content__' => 'DataCite', + 'schemeUri' => 'https://ror.org/' }, + 'creatorName' => { '__content__' => 'Martin Fenner', + 'nameType' => 'Personal' }, + 'familyName' => 'Fenner', + 'givenName' => 'Martin', + 'nameIdentifier' => + [{ '__content__' => 'http://orcid.org/0000-0003-1419-2405', + 'nameIdentifierScheme' => 'ORCID', + 'schemeUri' => 'https://orcid.org' }] }]) end - it "without affiliation" do - authors = [{"@type"=>"Person", "@id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner" }] + it 'without affiliation' do + authors = [{ '@type' => 'Person', '@id' => 'http://orcid.org/0000-0003-1419-2405', + 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' }] response = subject.from_schema_org_creators(authors) - expect(response).to eq([{"creatorName"=>{"__content__"=>"Martin Fenner", "nameType"=>"Personal"}, - "familyName"=>"Fenner", - "givenName"=>"Martin", - "nameIdentifier"=> - [{"__content__"=>"http://orcid.org/0000-0003-1419-2405", - "nameIdentifierScheme"=>"ORCID", - "schemeUri"=>"https://orcid.org"}]}]) + expect(response).to eq([{ 'creatorName' => { '__content__' => 'Martin Fenner', 'nameType' => 'Personal' }, + 'familyName' => 'Fenner', + 'givenName' => 'Martin', + 'nameIdentifier' => + [{ '__content__' => 'http://orcid.org/0000-0003-1419-2405', + 'nameIdentifierScheme' => 'ORCID', + 'schemeUri' => 'https://orcid.org' }] }]) end end - context "to_schema_org_identifiers" do - it "with identifiers" do - identifiers = [{"identifier" => "https://doi.org/10.23725/8na3-9s47", "identifierType" => "DOI"}, {"identifierType"=>"md5", "identifier"=>"3b33f6b9338fccab0901b7d317577ea3"}, {"identifierType"=>"minid", "identifier"=>"ark:/99999/fk41CrU4eszeLUDe"}, {"identifierType"=>"dataguid", "identifier"=>"dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7"}] - response = subject.to_schema_org_identifiers(identifiers, type: "Dataset") - expect(response).to eq([{"@type"=>"PropertyValue", "propertyID"=>"DOI", "value"=>"https://doi.org/10.23725/8na3-9s47"}, - {"@type"=>"PropertyValue", - "propertyID"=>"md5", - "value"=>"3b33f6b9338fccab0901b7d317577ea3"}, - {"@type"=>"PropertyValue", - "propertyID"=>"minid", - "value"=>"ark:/99999/fk41CrU4eszeLUDe"}, - {"@type"=>"PropertyValue", - "propertyID"=>"dataguid", - "value"=>"dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7"}]) + context 'to_schema_org_identifiers' do + it 'with identifiers' do + identifiers = [ + { 'identifier' => 'https://doi.org/10.23725/8na3-9s47', + 'identifierType' => 'DOI' }, { 'identifierType' => 'md5', 'identifier' => '3b33f6b9338fccab0901b7d317577ea3' }, { 'identifierType' => 'minid', 'identifier' => 'ark:/99999/fk41CrU4eszeLUDe' }, { 'identifierType' => 'dataguid', 'identifier' => 'dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7' } + ] + response = subject.to_schema_org_identifiers(identifiers, type: 'Dataset') + expect(response).to eq([{ '@type' => 'PropertyValue', 'propertyID' => 'DOI', 'value' => 'https://doi.org/10.23725/8na3-9s47' }, + { '@type' => 'PropertyValue', + 'propertyID' => 'md5', + 'value' => '3b33f6b9338fccab0901b7d317577ea3' }, + { '@type' => 'PropertyValue', + 'propertyID' => 'minid', + 'value' => 'ark:/99999/fk41CrU4eszeLUDe' }, + { '@type' => 'PropertyValue', + 'propertyID' => 'dataguid', + 'value' => 'dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7' }]) end end - context "sanitize" do - it 'should remove a tags' do - text = "In 1998 <strong>Tim Berners-Lee</strong> coined the term <a href=\"https://www.w3.org/Provider/Style/URI\">cool URIs</a>" + context 'sanitize' do + it 'removes a tags' do + text = 'In 1998 <strong>Tim Berners-Lee</strong> coined the term <a href="https://www.w3.org/Provider/Style/URI">cool URIs</a>' content = subject.sanitize(text) - expect(content).to eq("In 1998 <strong>Tim Berners-Lee</strong> coined the term cool URIs") + expect(content).to eq('In 1998 <strong>Tim Berners-Lee</strong> coined the term cool URIs') end - it 'should only keep specific tags' do - text = "In 1998 <strong>Tim Berners-Lee</strong> coined the term <a href=\"https://www.w3.org/Provider/Style/URI\">cool URIs</a>" - content = subject.sanitize(text, tags: ["a"]) - expect(content).to eq("In 1998 Tim Berners-Lee coined the term <a href=\"https://www.w3.org/Provider/Style/URI\">cool URIs</a>") + it 'onlies keep specific tags' do + text = 'In 1998 <strong>Tim Berners-Lee</strong> coined the term <a href="https://www.w3.org/Provider/Style/URI">cool URIs</a>' + content = subject.sanitize(text, tags: ['a']) + expect(content).to eq('In 1998 Tim Berners-Lee coined the term <a href="https://www.w3.org/Provider/Style/URI">cool URIs</a>') end end - context "get_datetime_from_time" do - it "present" do - time = "20200226071709" + context 'get_datetime_from_time' do + it 'present' do + time = '20200226071709' response = subject.get_datetime_from_time(time) - expect(response).to eq("2020-02-26T07:17:09Z") + expect(response).to eq('2020-02-26T07:17:09Z') end - it "past" do - time = "18770312071709" + it 'past' do + time = '18770312071709' response = subject.get_datetime_from_time(time) - expect(response).to eq("1877-03-12T07:17:09Z") + expect(response).to eq('1877-03-12T07:17:09Z') end - it "future" do - time = "20970114071709" + it 'future' do + time = '20970114071709' response = subject.get_datetime_from_time(time) - expect(response).to eq("2097-01-14T07:17:09Z") + expect(response).to eq('2097-01-14T07:17:09Z') end - it "invalid" do - time = "20201587168864794" + it 'invalid' do + time = '20201587168864794' response = subject.get_datetime_from_time(time) - expect(response).to be_nil + expect(response.nil?).to be(true) end - it "nil" do + it 'nil' do time = nil response = subject.get_datetime_from_time(time) - expect(response).to be_nil + expect(response.nil?).to be(true) end end - context "get_date_parts" do - it "date" do - date = "2016-12-20" + context 'get_date_parts' do + it 'date' do + date = '2016-12-20' response = subject.get_date_parts(date) - expect(response).to eq("date-parts"=>[[2016, 12, 20]]) + expect(response).to eq('date-parts' => [[2016, 12, 20]]) end - it "year-month" do - date = "2016-12" + it 'year-month' do + date = '2016-12' response = subject.get_date_parts(date) - expect(response).to eq("date-parts"=>[[2016, 12]]) + expect(response).to eq('date-parts' => [[2016, 12]]) end - it "year" do - date = "2016" + it 'year' do + date = '2016' response = subject.get_date_parts(date) - expect(response).to eq("date-parts"=>[[2016]]) + expect(response).to eq('date-parts' => [[2016]]) end end - context "get_date_from_parts" do - it "date" do + context 'get_date_from_parts' do + it 'date' do response = subject.get_date_from_parts(2016, 12, 20) - expect(response).to eq("2016-12-20") + expect(response).to eq('2016-12-20') end - it "year-month" do + it 'year-month' do response = subject.get_date_from_parts(2016, 12) - expect(response).to eq("2016-12") + expect(response).to eq('2016-12') end - it "year" do + it 'year' do response = subject.get_date_from_parts(2016) - expect(response).to eq("2016") + expect(response).to eq('2016') end end - context "get_date_from_date_parts" do - it "date" do - date_as_parts = { "date-parts"=>[[2016, 12, 20]] } + context 'get_date_from_date_parts' do + it 'date' do + date_as_parts = { 'date-parts' => [[2016, 12, 20]] } response = subject.get_date_from_date_parts(date_as_parts) - expect(response).to eq("2016-12-20") + expect(response).to eq('2016-12-20') end - it "year-month" do - date_as_parts = { "date-parts"=>[[2016, 12]] } + it 'year-month' do + date_as_parts = { 'date-parts' => [[2016, 12]] } response = subject.get_date_from_date_parts(date_as_parts) - expect(response).to eq("2016-12") + expect(response).to eq('2016-12') end - it "year" do - date_as_parts = { "date-parts"=>[[2016]] } + it 'year' do + date_as_parts = { 'date-parts' => [[2016]] } response = subject.get_date_from_date_parts(date_as_parts) - expect(response).to eq("2016") + expect(response).to eq('2016') end end - context "get_date" do - it "publication date" do - dates = [{ "date"=>"2016-12-20", "dateType" => "Issued" }] - response = subject.get_date(dates, "Issued") - expect(response).to eq("2016-12-20") + context 'get_date' do + it 'publication date' do + dates = [{ 'date' => '2016-12-20', 'dateType' => 'Issued' }] + response = subject.get_date(dates, 'Issued') + expect(response).to eq('2016-12-20') end end - context "get_series_information" do - it "only title" do + context 'get_series_information' do + it 'only title' do str = nil response = subject.get_series_information(str) expect(response).to eq({}) end - it "only title" do - str = "DataCite Blog" + it 'only title' do + str = 'DataCite Blog' response = subject.get_series_information(str) - expect(response).to eq("title"=>"DataCite Blog") + expect(response).to eq('title' => 'DataCite Blog') end - it "title and pages" do - str = "DataCite Blog, 1-3" + it 'title and pages' do + str = 'DataCite Blog, 1-3' response = subject.get_series_information(str) - expect(response).to eq("firstPage"=>"1", "lastPage"=>"3", "title"=>"DataCite Blog") + expect(response).to eq('firstPage' => '1', 'lastPage' => '3', 'title' => 'DataCite Blog') end - it "title, volume and pages" do - str = "DataCite Blog, 7, 1-3" + it 'title, volume and pages' do + str = 'DataCite Blog, 7, 1-3' response = subject.get_series_information(str) - expect(response).to eq("firstPage"=>"1", "lastPage"=>"3", "title"=>"DataCite Blog", "volume"=>"7") + expect(response).to eq('firstPage' => '1', 'lastPage' => '3', 'title' => 'DataCite Blog', + 'volume' => '7') end - it "title, volume, issue and pages" do - str = "DataCite Blog, 7(11), 1-3" + it 'title, volume, issue and pages' do + str = 'DataCite Blog, 7(11), 1-3' response = subject.get_series_information(str) - expect(response).to eq("firstPage"=>"1", "issue"=>"11", "lastPage"=>"3", "title"=>"DataCite Blog", "volume"=>"7") + expect(response).to eq('firstPage' => '1', 'issue' => '11', 'lastPage' => '3', + 'title' => 'DataCite Blog', 'volume' => '7') end end - context "github" do - it "github_from_url" do - url = "https://github.com/datacite/bolognese" + context 'github' do + it 'github_from_url' do + url = 'https://github.com/datacite/bolognese' response = subject.github_from_url(url) - expect(response).to eq(:owner=>"datacite", :repo=>"bolognese") + expect(response).to eq(owner: 'datacite', repo: 'bolognese') end - it "github_from_url file" do - url = "https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json" + it 'github_from_url file' do + url = 'https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json' response = subject.github_from_url(url) - expect(response).to eq(:owner=>"datacite", :repo=>"metadata-reports", :release=>"master", :path=>"software/codemeta.json") + expect(response).to eq(owner: 'datacite', repo: 'metadata-reports', release: 'master', + path: 'software/codemeta.json') end - it "github_from_url cff file" do - url = "https://github.com/citation-file-format/ruby-cff/blob/main/CITATION.cff" + it 'github_from_url cff file' do + url = 'https://github.com/citation-file-format/ruby-cff/blob/main/CITATION.cff' response = subject.github_from_url(url) - expect(response).to eq(:owner=>"citation-file-format", :path=>"CITATION.cff", :release=>"main", :repo=>"ruby-cff") + expect(response).to eq(owner: 'citation-file-format', path: 'CITATION.cff', + release: 'main', repo: 'ruby-cff') end - it "github_as_codemeta_url" do - url = "https://github.com/datacite/bolognese" + it 'github_as_codemeta_url' do + url = 'https://github.com/datacite/bolognese' response = subject.github_as_codemeta_url(url) - expect(response).to eq("https://raw.githubusercontent.com/datacite/bolognese/master/codemeta.json") + expect(response).to eq('https://raw.githubusercontent.com/datacite/bolognese/master/codemeta.json') end - it "github_as_cff_url" do - url = "https://github.com/citation-file-format/ruby-cff" + it 'github_as_cff_url' do + url = 'https://github.com/citation-file-format/ruby-cff' response = subject.github_as_cff_url(url) - expect(response).to eq("https://raw.githubusercontent.com/citation-file-format/ruby-cff/main/CITATION.cff") + expect(response).to eq('https://raw.githubusercontent.com/citation-file-format/ruby-cff/main/CITATION.cff') end - it "github_from_url file" do - url = "https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json" + it 'github_from_url file' do + url = 'https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json' response = subject.github_as_codemeta_url(url) - expect(response).to eq("https://raw.githubusercontent.com/datacite/metadata-reports/master/software/codemeta.json") + expect(response).to eq('https://raw.githubusercontent.com/datacite/metadata-reports/master/software/codemeta.json') end end - context "spdx" do - it "name_to_spdx exists" do - name = "Creative Commons Attribution 4.0 International" + context 'spdx' do + it 'name_to_spdx exists' do + name = 'Creative Commons Attribution 4.0 International' response = subject.name_to_spdx(name) - expect(response).to eq({"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"cc-by-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"}) + expect(response).to eq({ 'rights' => 'Creative Commons Attribution 4.0 International', + 'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode', 'rightsIdentifier' => 'cc-by-4.0', 'rightsIdentifierScheme' => 'SPDX', 'schemeUri' => 'https://spdx.org/licenses/' }) end - it "name_to_spdx id" do - name = "CC-BY-4.0" + it 'name_to_spdx id' do + name = 'CC-BY-4.0' response = subject.name_to_spdx(name) - expect(response).to eq({"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"cc-by-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"}) + expect(response).to eq({ 'rights' => 'Creative Commons Attribution 4.0 International', + 'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode', 'rightsIdentifier' => 'cc-by-4.0', 'rightsIdentifierScheme' => 'SPDX', 'schemeUri' => 'https://spdx.org/licenses/' }) end - it "hsh_to_spdx id" do - hsh = { "rightsIdentifier" => "cc-by-4.0" } + it 'hsh_to_spdx id' do + hsh = { 'rightsIdentifier' => 'cc-by-4.0' } response = subject.hsh_to_spdx(hsh) - expect(response).to eq({"rights"=>"Creative Commons Attribution 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", "rightsIdentifier"=>"cc-by-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/"}) + expect(response).to eq({ 'rights' => 'Creative Commons Attribution 4.0 International', + 'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode', 'rightsIdentifier' => 'cc-by-4.0', 'rightsIdentifierScheme' => 'SPDX', 'schemeUri' => 'https://spdx.org/licenses/' }) end - it "hsh_to_spdx url" do - hsh = { "rightsURI" => "http://creativecommons.org/licenses/by-nc/4.0/legalcode" } + it 'hsh_to_spdx url' do + hsh = { 'rightsURI' => 'http://creativecommons.org/licenses/by-nc/4.0/legalcode' } response = subject.hsh_to_spdx(hsh) - expect(response).to eq("rights"=>"Creative Commons Attribution Non Commercial 4.0 International", "rightsUri"=>"https://creativecommons.org/licenses/by-nc/4.0/legalcode", "rightsIdentifier"=>"cc-by-nc-4.0", "rightsIdentifierScheme"=>"SPDX", "schemeUri"=>"https://spdx.org/licenses/") + expect(response).to eq( + 'rights' => 'Creative Commons Attribution Non Commercial 4.0 International', 'rightsUri' => 'https://creativecommons.org/licenses/by-nc/4.0/legalcode', 'rightsIdentifier' => 'cc-by-nc-4.0', 'rightsIdentifierScheme' => 'SPDX', 'schemeUri' => 'https://spdx.org/licenses/' + ) end - it "hsh_to_spdx not found" do - hsh = { "rightsURI" => "info:eu-repo/semantics/openAccess" } + it 'hsh_to_spdx not found' do + hsh = { 'rightsURI' => 'info:eu-repo/semantics/openAccess' } response = subject.hsh_to_spdx(hsh) - expect(response).to eq({"rightsUri"=>"info:eu-repo/semantics/openAccess"}) + expect(response).to eq({ 'rightsUri' => 'info:eu-repo/semantics/openAccess' }) end end - context "fos" do - it "name_to_fos match" do - name = "Biological sciences" + context 'fos' do + it 'name_to_fos match' do + name = 'Biological sciences' response = subject.name_to_fos(name) - expect(response).to eq([{"subject"=>"biological sciences"}, - {"schemeUri"=>"http://www.oecd.org/science/inno/38235147.pdf", - "subject"=>"FOS: Biological sciences", - "subjectScheme"=>"Fields of Science and Technology (FOS)"}]) + expect(response).to eq([{ 'subject' => 'biological sciences' }, + { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf', + 'subject' => 'FOS: Biological sciences', + 'subjectScheme' => 'Fields of Science and Technology (FOS)' }]) end - it "name_to_fos for match" do - name = "Statistics" + it 'name_to_fos for match' do + name = 'Statistics' response = subject.name_to_fos(name) - expect(response).to eq([{"subject"=>"statistics"}, - {"schemeUri"=>"http://www.oecd.org/science/inno/38235147.pdf", - "subject"=>"FOS: Mathematics", - "subjectScheme"=>"Fields of Science and Technology (FOS)"}]) + expect(response).to eq([{ 'subject' => 'statistics' }, + { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf', + 'subject' => 'FOS: Mathematics', + 'subjectScheme' => 'Fields of Science and Technology (FOS)' }]) end - it "name_to_fos no match" do - name = "Random tag" + it 'name_to_fos no match' do + name = 'Random tag' response = subject.name_to_fos(name) - expect(response).to eq([{"subject"=>"random tag"}]) + expect(response).to eq([{ 'subject' => 'random tag' }]) end - it "hsh_to_fos match" do - hsh = { "__content__" => "Biological sciences" } + it 'hsh_to_fos match' do + hsh = { '__content__' => 'Biological sciences' } response = subject.hsh_to_fos(hsh) - expect(response).to eq([{"subject"=>"Biological sciences"}, - {"schemeUri"=>"http://www.oecd.org/science/inno/38235147.pdf", - "subject"=>"FOS: Biological sciences", - "subjectScheme"=>"Fields of Science and Technology (FOS)"}]) + expect(response).to eq([{ 'subject' => 'Biological sciences' }, + { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf', + 'subject' => 'FOS: Biological sciences', + 'subjectScheme' => 'Fields of Science and Technology (FOS)' }]) end - it "hsh_to_fos for match" do - hsh = { "__content__" => "Statistics" } + it 'hsh_to_fos for match' do + hsh = { '__content__' => 'Statistics' } response = subject.hsh_to_fos(hsh) - expect(response).to eq([{"subject"=>"Statistics"}, - {"schemeUri"=>"http://www.oecd.org/science/inno/38235147.pdf", - "subject"=>"FOS: Mathematics", - "subjectScheme"=>"Fields of Science and Technology (FOS)"}]) + expect(response).to eq([{ 'subject' => 'Statistics' }, + { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf', + 'subject' => 'FOS: Mathematics', + 'subjectScheme' => 'Fields of Science and Technology (FOS)' }]) end - it "hsh_to_fos for with schemeUri in hash" do + it 'hsh_to_fos for with schemeUri in hash' do hsh = { - "subject" => "FOS: Computer and information sciences", - "subjectScheme" => "Fields of Science and Technology (FOS)", - "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf"} + 'subject' => 'FOS: Computer and information sciences', + 'subjectScheme' => 'Fields of Science and Technology (FOS)', + 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf' + } response = subject.hsh_to_fos(hsh) expect(response).to eq([{ - "subject" => "FOS: Computer and information sciences", - "subjectScheme" => "Fields of Science and Technology (FOS)", - "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf"}]) + 'subject' => 'FOS: Computer and information sciences', + 'subjectScheme' => 'Fields of Science and Technology (FOS)', + 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf' + }]) end - it "hsh_to_fos no match" do - hsh = { "__content__"=>"Random tag" } + it 'hsh_to_fos no match' do + hsh = { '__content__' => 'Random tag' } response = subject.hsh_to_fos(hsh) - expect(response).to eq([{"subject"=>"Random tag"}]) + expect(response).to eq([{ 'subject' => 'Random tag' }]) end end - context "random doi" do - it "encode doi" do - prefix = "10.53731" + context 'random doi' do + it 'encode doi' do + prefix = '10.53731' response = subject.encode_doi(prefix) - expect(response).to match(/#{prefix}\/[-._;()\/:A-Za-z0-9]+/) + expect(response).to match(%r{#{prefix}/[-._;()/:A-Za-z0-9]+}) expect(response.length).to eq(40) end - it "decode doi" do - doi = "https://doi.org/10.53731/revzwnv-rpd913d-8drwz" + it 'decode doi' do + doi = 'https://doi.org/10.53731/revzwnv-rpd913d-8drwz' response = subject.decode_doi(doi) - expect(response).to eq (30286005717401267192153432991) + expect(response).to eq(30_286_005_717_401_267_192_153_432_991) end - it "decode anothe doi" do - doi = "https://doi.org/10.53731/rckvde5-tzg61kj-7zvc1" + it 'decode anothe doi' do + doi = 'https://doi.org/10.53731/rckvde5-tzg61kj-7zvc1' response = subject.decode_doi(doi) - expect(response).to eq (30198793950250854133601922433) + expect(response).to eq(30_198_793_950_250_854_133_601_922_433) end end end