spec/readers/crossref_reader_spec.rb in briard-2.4.2 vs spec/readers/crossref_reader_spec.rb in briard-2.6.0

- old
+ new

@@ -1,1117 +1,1276 @@ # frozen_string_literal: true require 'spec_helper' describe Briard::Metadata, vcr: true do - let(:input) { "10.7554/eLife.01567" } + subject { described_class.new(input: input) } - subject { Briard::Metadata.new(input: input) } + let(:input) { '10.7554/eLife.01567' } - context "get crossref raw" do - it "journal article" do - input = fixture_path + 'crossref.xml' - subject = Briard::Metadata.new(input: input) - expect(subject.raw).to eq(IO.read(input).strip) + context 'get crossref raw' do + it 'journal article' do + input = "#{fixture_path}crossref.xml" + subject = described_class.new(input: input) + expect(subject.raw).to eq(File.read(input).strip) end end - context "get crossref metadata" do - it "DOI with data citation" do + context 'get crossref metadata' do + it 'DOI with data citation' do expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.7554/elife.01567") - expect(subject.identifiers).to eq([{"identifier"=>"e01567", "identifierType"=>"article_number"}]) - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.url).to eq("https://elifesciences.org/articles/01567") + expect(subject.id).to eq('https://doi.org/10.7554/elife.01567') + expect(subject.identifiers).to eq([{ 'identifier' => 'e01567', + 'identifierType' => 'article_number' }]) + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.url).to eq('https://elifesciences.org/articles/01567') expect(subject.creators.length).to eq(5) - expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Sankar, Martial", "givenName"=>"Martial", "familyName"=>"Sankar", "affiliation" => [{"name"=>"Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"}]) - expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported", - "rightsIdentifier"=>"cc-by-3.0", - "rightsIdentifierScheme"=>"SPDX", - "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode", - "schemeUri"=>"https://spdx.org/licenses/"}]) - expect(subject.titles).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}]) - expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2022-03-26T09:21:50Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2014") - expect(subject.publisher).to eq("eLife Sciences Publications, Ltd") - expect(subject.container).to eq("firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3") + expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Sankar, Martial', + 'givenName' => 'Martial', 'familyName' => 'Sankar', 'affiliation' => [{ 'name' => 'Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland' }]) + expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 3.0 Unported', + 'rightsIdentifier' => 'cc-by-3.0', + 'rightsIdentifierScheme' => 'SPDX', + 'rightsUri' => 'https://creativecommons.org/licenses/by/3.0/legalcode', + 'schemeUri' => 'https://spdx.org/licenses/' }]) + expect(subject.titles).to eq([{ 'title' => 'Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth' }]) + expect(subject.dates).to eq([{ 'date' => '2014-02-11', 'dateType' => 'Issued' }, + { 'date' => '2022-03-26T09:21:50Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2014') + expect(subject.publisher).to eq('eLife Sciences Publications, Ltd') + expect(subject.container).to eq('firstPage' => 'e01567', 'identifier' => '2050-084X', + 'identifierType' => 'ISSN', 'title' => 'eLife', 'type' => 'Journal', 'volume' => '3') expect(subject.related_identifiers.length).to eq(28) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1038/ncb2764", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.funding_references).to eq([{"funderName"=>"SystemsX"}, - {"funderIdentifier"=>"https://doi.org/10.13039/501100003043", - "funderIdentifierType"=>"Crossref Funder ID", - "funderName"=>"EMBO"}, - {"funderIdentifier"=>"https://doi.org/10.13039/501100001711", - "funderIdentifierType"=>"Crossref Funder ID", - "funderName"=>"Swiss National Science Foundation"}, - {"funderIdentifier"=>"https://doi.org/10.13039/501100006390", - "funderIdentifierType"=>"Crossref Funder ID", - "funderName"=>"University of Lausanne"}]) - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '2050-084X', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1038/ncb2764', + 'relatedIdentifierType' => 'DOI', 'relationType' => 'References') + expect(subject.funding_references).to eq([{ 'funderName' => 'SystemsX' }, + { 'funderIdentifier' => 'https://doi.org/10.13039/501100003043', + 'funderIdentifierType' => 'Crossref Funder ID', + 'funderName' => 'EMBO' }, + { 'funderIdentifier' => 'https://doi.org/10.13039/501100001711', + 'funderIdentifierType' => 'Crossref Funder ID', + 'funderName' => 'Swiss National Science Foundation' }, + { 'funderIdentifier' => 'https://doi.org/10.13039/501100006390', + 'funderIdentifierType' => 'Crossref Funder ID', + 'funderName' => 'University of Lausanne' }]) + expect(subject.agency).to eq('crossref') end - it "journal article" do - input = "https://doi.org/10.1371/journal.pone.0000030" - subject = Briard::Metadata.new(input: input) + it 'journal article' do + input = 'https://doi.org/10.1371/journal.pone.0000030' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1371/journal.pone.0000030") - expect(subject.identifiers).to eq([{"identifier"=>"10.1371/journal.pone.0000030", "identifierType"=>"Publisher ID"}]) - expect(subject.url).to eq("https://dx.plos.org/10.1371/journal.pone.0000030") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1371/journal.pone.0000030') + expect(subject.identifiers).to eq([{ 'identifier' => '10.1371/journal.pone.0000030', + 'identifierType' => 'Publisher ID' }]) + expect(subject.url).to eq('https://dx.plos.org/10.1371/journal.pone.0000030') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(5) - expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Ralser, Markus", "givenName"=>"Markus", "familyName"=>"Ralser") - expect(subject.contributors).to eq([{"contributorType"=>"Editor", "familyName"=>"Janbon", "givenName"=>"Guilhem", "name"=>"Janbon, Guilhem", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization???Not Catalytic Inactivity???of the Mutant Enzymes"}]) - expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International", - "rightsIdentifier"=>"cc-by-4.0", - "rightsIdentifierScheme"=>"SPDX", - "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", - "schemeUri"=>"https://spdx.org/licenses/"}]) - expect(subject.dates).to eq([{"date"=>"2006-12-20", "dateType"=>"Issued"}, {"date"=>"2021-08-06T23:49:55Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2006") - expect(subject.publisher).to eq("Public Library of Science (PLoS)") + expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Ralser, Markus', + 'givenName' => 'Markus', 'familyName' => 'Ralser') + expect(subject.contributors).to eq([{ 'contributorType' => 'Editor', 'familyName' => 'Janbon', + 'givenName' => 'Guilhem', 'name' => 'Janbon, Guilhem', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization???Not Catalytic Inactivity???of the Mutant Enzymes' }]) + expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 4.0 International', + 'rightsIdentifier' => 'cc-by-4.0', + 'rightsIdentifierScheme' => 'SPDX', + 'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode', + 'schemeUri' => 'https://spdx.org/licenses/' }]) + expect(subject.dates).to eq([{ 'date' => '2006-12-20', 'dateType' => 'Issued' }, + { 'date' => '2021-08-06T23:49:55Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2006') + expect(subject.publisher).to eq('Public Library of Science (PLoS)') expect(subject.related_identifiers.length).to eq(68) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1932-6203", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1056/nejm199109123251104", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("firstPage"=>"e30", "identifier"=>"1932-6203", "identifierType"=>"ISSN", "issue"=>"1", "title"=>"PLoS ONE", "type"=>"Journal", "volume"=>"1") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1932-6203', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq( + 'relatedIdentifier' => '10.1056/nejm199109123251104', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References' + ) + expect(subject.container).to eq('firstPage' => 'e30', 'identifier' => '1932-6203', + 'identifierType' => 'ISSN', 'issue' => '1', 'title' => 'PLoS ONE', 'type' => 'Journal', 'volume' => '1') + expect(subject.agency).to eq('crossref') end - it "journal article with funding" do - input = "https://doi.org/10.3389/fpls.2019.00816" - subject = Briard::Metadata.new(input: input) + it 'journal article with funding' do + input = 'https://doi.org/10.3389/fpls.2019.00816' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.3389/fpls.2019.00816") - expect(subject.identifiers).to eq([{"identifier"=>"816", "identifierType"=>"article_number"}]) - expect(subject.url).to eq("https://www.frontiersin.org/article/10.3389/fpls.2019.00816/full") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.3389/fpls.2019.00816') + expect(subject.identifiers).to eq([{ 'identifier' => '816', + 'identifierType' => 'article_number' }]) + expect(subject.url).to eq('https://www.frontiersin.org/article/10.3389/fpls.2019.00816/full') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(4) - expect(subject.creators.first).to eq("familyName"=>"Fortes", "givenName"=>"Ana Margarida", "name"=>"Fortes, Ana Margarida", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Transcriptional Modulation of Polyamine Metabolism in Fruit Species Under Abiotic and Biotic Stress"}]) - expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International", - "rightsIdentifier"=>"cc-by-4.0", - "rightsIdentifierScheme"=>"SPDX", - "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode", - "schemeUri"=>"https://spdx.org/licenses/"}]) - expect(subject.dates).to eq([{"date"=>"2019-07-02", "dateType"=>"Issued"}, {"date"=>"2019-09-22T02:40:23Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2019") - expect(subject.publisher).to eq("Frontiers Media SA") - expect(subject.funding_references).to eq([{"awardNumber"=>"CA17111", "funderIdentifier"=>"https://doi.org/10.13039/501100000921", "funderIdentifierType"=>"Crossref Funder ID", "funderName"=>"COST (European Cooperation in Science and Technology)"}]) + expect(subject.creators.first).to eq('familyName' => 'Fortes', 'givenName' => 'Ana Margarida', + 'name' => 'Fortes, Ana Margarida', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Transcriptional Modulation of Polyamine Metabolism in Fruit Species Under Abiotic and Biotic Stress' }]) + expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 4.0 International', + 'rightsIdentifier' => 'cc-by-4.0', + 'rightsIdentifierScheme' => 'SPDX', + 'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode', + 'schemeUri' => 'https://spdx.org/licenses/' }]) + expect(subject.dates).to eq([{ 'date' => '2019-07-02', 'dateType' => 'Issued' }, + { 'date' => '2019-09-22T02:40:23Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2019') + expect(subject.publisher).to eq('Frontiers Media SA') + expect(subject.funding_references).to eq([{ 'awardNumber' => 'CA17111', + 'funderIdentifier' => 'https://doi.org/10.13039/501100000921', 'funderIdentifierType' => 'Crossref Funder ID', 'funderName' => 'COST (European Cooperation in Science and Technology)' }]) expect(subject.related_identifiers.length).to eq(70) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1664-462X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.17660/actahortic.2004.632.41", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("firstPage" => "816", "identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1664-462X', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq( + 'relatedIdentifier' => '10.17660/actahortic.2004.632.41', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References' + ) + expect(subject.container).to eq('firstPage' => '816', 'identifier' => '1664-462X', + 'identifierType' => 'ISSN', 'title' => 'Frontiers in Plant Science', 'type' => 'Journal', 'volume' => '10') + expect(subject.agency).to eq('crossref') end - it "journal article original language title" do - input = "https://doi.org/10.7600/jspfsm.56.60" - subject = Briard::Metadata.new(input: input) + it 'journal article original language title' do + input = 'https://doi.org/10.7600/jspfsm.56.60' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.7600/jspfsm.56.60") - expect(subject.url).to eq("https://www.jstage.jst.go.jp/article/jspfsm/56/1/56_1_60/_article/-char/ja/") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}]) - expect(subject.titles).to eq([{"lang"=>"ja", "title"=>"??????????????????????????????"}]) - expect(subject.dates).to include({"date"=>"2007", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2007") - expect(subject.publisher).to eq("The Japanese Society of Physical Fitness and Sports Medicine") + expect(subject.id).to eq('https://doi.org/10.7600/jspfsm.56.60') + expect(subject.url).to eq('https://www.jstage.jst.go.jp/article/jspfsm/56/1/56_1_60/_article/-char/ja/') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }]) + expect(subject.titles).to eq([{ 'lang' => 'ja', + 'title' => '??????????????????????????????' }]) + expect(subject.dates).to include({ 'date' => '2007', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2007') + expect(subject.publisher).to eq('The Japanese Society of Physical Fitness and Sports Medicine') expect(subject.related_identifiers.length).to eq(8) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1881-4751", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.container).to eq("firstPage"=>"60", "identifier"=>"1881-4751", "identifierType"=>"ISSN", "issue"=>"1", "lastPage"=>"60", "title"=>"Japanese Journal of Physical Fitness and Sports Medicine", "type"=>"Journal", "volume"=>"56") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1881-4751', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.container).to eq('firstPage' => '60', 'identifier' => '1881-4751', + 'identifierType' => 'ISSN', 'issue' => '1', 'lastPage' => '60', 'title' => 'Japanese Journal of Physical Fitness and Sports Medicine', 'type' => 'Journal', 'volume' => '56') + expect(subject.agency).to eq('crossref') end - it "journal article with RDF for container" do - input = "https://doi.org/10.1163/1937240X-00002096" - subject = Briard::Metadata.new(input: input) + it 'journal article with RDF for container' do + input = 'https://doi.org/10.1163/1937240X-00002096' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1163/1937240x-00002096") - expect(subject.url).to eq("https://academic.oup.com/jcb/article-lookup/doi/10.1163/1937240X-00002096") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1163/1937240x-00002096') + expect(subject.url).to eq('https://academic.oup.com/jcb/article-lookup/doi/10.1163/1937240X-00002096') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(8) - expect(subject.creators.first).to eq("familyName"=>"Mesquita-Joanes", "givenName"=>"Francesc", "name"=>"Mesquita-Joanes, Francesc", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Global distribution of Fabaeformiscandona subacuta: an??exotic??invasive Ostracoda on the Iberian Peninsula?"}]) - expect(subject.dates).to include({"date"=>"2012-01-01", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2012") - expect(subject.publisher).to eq("Oxford University Press (OUP)") + expect(subject.creators.first).to eq('familyName' => 'Mesquita-Joanes', + 'givenName' => 'Francesc', 'name' => 'Mesquita-Joanes, Francesc', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Global distribution of Fabaeformiscandona subacuta: an??exotic??invasive Ostracoda on the Iberian Peninsula?' }]) + expect(subject.dates).to include({ 'date' => '2012-01-01', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2012') + expect(subject.publisher).to eq('Oxford University Press (OUP)') expect(subject.related_identifiers.length).to eq(44) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1937-240X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1002/aqc.1122", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("firstPage"=>"949", "identifier"=>"1937-240X", "identifierType"=>"ISSN", "issue"=>"6", "lastPage"=>"961", "title"=>"Journal of Crustacean Biology", "type"=>"Journal", "volume"=>"32") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1937-240X', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1002/aqc.1122', + 'relatedIdentifierType' => 'DOI', 'relationType' => 'References') + expect(subject.container).to eq('firstPage' => '949', 'identifier' => '1937-240X', + 'identifierType' => 'ISSN', 'issue' => '6', 'lastPage' => '961', 'title' => 'Journal of Crustacean Biology', 'type' => 'Journal', 'volume' => '32') + expect(subject.agency).to eq('crossref') end - it "book chapter with RDF for container" do - input = "10.1007/978-3-642-33191-6_49" - subject = Briard::Metadata.new(input: input) + it 'book chapter with RDF for container' do + input = '10.1007/978-3-642-33191-6_49' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1007/978-3-642-33191-6_49") - expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-33191-6_49") - expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter") + expect(subject.id).to eq('https://doi.org/10.1007/978-3-642-33191-6_49') + expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-642-33191-6_49') + expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter', + 'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter') expect(subject.creators.length).to eq(3) - expect(subject.creators.first).to eq("familyName"=>"Chen", "givenName"=>"Lili", "name"=>"Chen, Lili", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Human Body Orientation Estimation in Multiview Scenarios"}]) - expect(subject.dates).to eq([{"date"=>"2012", "dateType"=>"Issued"}, {"date"=>"2020-11-24T03:11:32Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2012") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") + expect(subject.creators.first).to eq('familyName' => 'Chen', 'givenName' => 'Lili', + 'name' => 'Chen, Lili', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Human Body Orientation Estimation in Multiview Scenarios' }]) + expect(subject.dates).to eq([{ 'date' => '2012', 'dateType' => 'Issued' }, + { 'date' => '2020-11-24T03:11:32Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2012') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') expect(subject.related_identifiers.length).to eq(7) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"10.1007/978-3-540-24670-1_3", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("identifier"=>"1611-3349", "identifierType"=>"ISSN", "title"=>"Lecture Notes in Computer Science", "type"=>"Book Series") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq( + 'relatedIdentifier' => '10.1007/978-3-540-24670-1_3', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References' + ) + expect(subject.container).to eq('identifier' => '1611-3349', 'identifierType' => 'ISSN', + 'title' => 'Lecture Notes in Computer Science', 'type' => 'Book Series') + expect(subject.agency).to eq('crossref') end - it "posted_content" do - input = "https://doi.org/10.1101/097196" - subject = Briard::Metadata.new(input: input) + it 'posted_content' do + input = 'https://doi.org/10.1101/097196' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.url).to eq("http://biorxiv.org/lookup/doi/10.1101/097196") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Preprint", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.url).to eq('http://biorxiv.org/lookup/doi/10.1101/097196') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'PostedContent', 'resourceTypeGeneral' => 'Preprint', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.count).to eq(11) - expect(subject.creators.last).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-4060-7360", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Clark, Timothy", "givenName"=>"Timothy", "familyName"=>"Clark") - expect(subject.titles).to eq([{"title"=>"A Data Citation Roadmap for Scholarly Data Repositories"}]) - expect(subject.id).to eq("https://doi.org/10.1101/097196") - expect(subject.identifiers).to eq([{"identifier"=>"biorxiv;097196v2", "identifierType"=>"pisa"}]) - expect(subject.descriptions.first["description"]).to start_with("This article presents a practical roadmap") - expect(subject.dates).to include({"date"=>"2017-10-09", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2017") - expect(subject.publisher).to eq("Cold Spring Harbor Laboratory") - expect(subject.agency).to eq("crossref") + expect(subject.creators.last).to eq('nameType' => 'Personal', + 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-4060-7360', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Clark, Timothy', 'givenName' => 'Timothy', 'familyName' => 'Clark') + expect(subject.titles).to eq([{ 'title' => 'A Data Citation Roadmap for Scholarly Data Repositories' }]) + expect(subject.id).to eq('https://doi.org/10.1101/097196') + expect(subject.identifiers).to eq([{ 'identifier' => 'biorxiv;097196v2', + 'identifierType' => 'pisa' }]) + expect(subject.descriptions.first['description']).to start_with('This article presents a practical roadmap') + expect(subject.dates).to include({ 'date' => '2017-10-09', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2017') + expect(subject.publisher).to eq('Cold Spring Harbor Laboratory') + expect(subject.agency).to eq('crossref') end - it "peer review" do - input = "https://doi.org/10.7554/elife.55167.sa2" - subject = Briard::Metadata.new(input: input) + it 'peer review' do + input = 'https://doi.org/10.7554/elife.55167.sa2' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.url).to eq("https://elifesciences.org/articles/55167#sa2") - expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"PeerReview", "resourceTypeGeneral"=>"PeerReview", "ris"=>"JOUR", "schemaOrg"=>"Review") + expect(subject.url).to eq('https://elifesciences.org/articles/55167#sa2') + expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal', + 'resourceType' => 'PeerReview', 'resourceTypeGeneral' => 'PeerReview', 'ris' => 'JOUR', 'schemaOrg' => 'Review') expect(subject.creators.count).to eq(8) - expect(subject.creators.last).to eq("affiliation" => [{"name"=>"Center for Computational Mathematics, Flatiron Institute, New York, United States"}], - "familyName" => "Barnett", - "givenName" => "Alex H", - "name" => "Barnett, Alex H", - "nameType" => "Personal") - expect(subject.titles).to eq([{"title"=>"Author response: SpikeForest, reproducible web-facing ground-truth validation of automated neural spike sorters"}]) - expect(subject.id).to eq("https://doi.org/10.7554/elife.55167.sa2") - expect(subject.identifiers).to be_empty - expect(subject.descriptions).to be_empty - expect(subject.dates).to include({"date"=>"2020-05-19", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2020") - expect(subject.publisher).to eq("eLife Sciences Publications, Ltd") - expect(subject.agency).to eq("crossref") + expect(subject.creators.last).to eq('affiliation' => [{ 'name' => 'Center for Computational Mathematics, Flatiron Institute, New York, United States' }], + 'familyName' => 'Barnett', + 'givenName' => 'Alex H', + 'name' => 'Barnett, Alex H', + 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Author response: SpikeForest, reproducible web-facing ground-truth validation of automated neural spike sorters' }]) + expect(subject.id).to eq('https://doi.org/10.7554/elife.55167.sa2') + expect(subject.identifiers.empty?).to be(true) + expect(subject.descriptions.empty?).to be(true) + expect(subject.dates).to include({ 'date' => '2020-05-19', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2020') + expect(subject.publisher).to eq('eLife Sciences Publications, Ltd') + expect(subject.agency).to eq('crossref') end - it "dissertation" do - input = "https://doi.org/10.14264/uql.2020.791" - subject = Briard::Metadata.new(input: input) + it 'dissertation' do + input = 'https://doi.org/10.14264/uql.2020.791' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.url).to eq("http://espace.library.uq.edu.au/view/UQ:23a1e74") - expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceType"=>"Dissertation", "resourceTypeGeneral"=>"Dissertation", "ris"=>"THES", "schemaOrg"=>"Thesis") - expect(subject.creators).to eq([{"familyName"=>"Collingwood", - "givenName"=>"Patricia Maree", - "name"=>"Collingwood, Patricia Maree", - "nameIdentifiers"=> - [{"nameIdentifier"=>"https://orcid.org/0000-0003-3086-4443", - "nameIdentifierScheme"=>"ORCID", - "schemeUri"=>"https://orcid.org"}], - "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"School truancy and financial independence during emerging adulthood: a longitudinal analysis of receipt of and reliance on cash transfers"}]) - expect(subject.id).to eq("https://doi.org/10.14264/uql.2020.791") - expect(subject.identifiers).to be_empty - expect(subject.descriptions).to be_empty - expect(subject.dates).to include({"date"=>"2020-06-08", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2020") - expect(subject.publisher).to eq("University of Queensland Library") - expect(subject.agency).to eq("crossref") + expect(subject.url).to eq('http://espace.library.uq.edu.au/view/UQ:23a1e74') + expect(subject.types).to eq('bibtex' => 'phdthesis', 'citeproc' => 'thesis', + 'resourceType' => 'Dissertation', 'resourceTypeGeneral' => 'Dissertation', 'ris' => 'THES', 'schemaOrg' => 'Thesis') + expect(subject.creators).to eq([{ 'familyName' => 'Collingwood', + 'givenName' => 'Patricia Maree', + 'name' => 'Collingwood, Patricia Maree', + 'nameIdentifiers' => + [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-3086-4443', + 'nameIdentifierScheme' => 'ORCID', + 'schemeUri' => 'https://orcid.org' }], + 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'School truancy and financial independence during emerging adulthood: a longitudinal analysis of receipt of and reliance on cash transfers' }]) + expect(subject.id).to eq('https://doi.org/10.14264/uql.2020.791') + expect(subject.identifiers.empty?).to be(true) + expect(subject.descriptions.empty?).to be(true) + expect(subject.dates).to include({ 'date' => '2020-06-08', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2020') + expect(subject.publisher).to eq('University of Queensland Library') + expect(subject.agency).to eq('crossref') end - it "DOI with SICI DOI" do - input = "https://doi.org/10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2" - subject = Briard::Metadata.new(input: input) + it 'DOI with SICI DOI' do + input = 'https://doi.org/10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1890/0012-9658(2006)87%255b2832:tiopma%255d2.0.co;2") - expect(subject.url).to eq("http://doi.wiley.com/10.1890/0012-9658(2006)87[2832:TIOPMA]2.0.CO;2") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"nameType"=>"Personal", "name"=>"Fenton, A.", "givenName"=>"A.", "familyName"=>"Fenton"}, {"nameType"=>"Personal", "name"=>"Rands, S. A.", "givenName"=>"S. A.", "familyName"=>"Rands"}]) - expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}]) - expect(subject.titles).to eq([{"title"=>"THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR???PREY COMMUNITIES"}]) - expect(subject.dates).to eq([{"date"=>"2006-11", "dateType"=>"Issued"}, {"date"=>"2019-04-28T13:51:50Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2006") - expect(subject.publisher).to eq("Wiley") + expect(subject.id).to eq('https://doi.org/10.1890/0012-9658(2006)87%255b2832:tiopma%255d2.0.co;2') + expect(subject.url).to eq('http://doi.wiley.com/10.1890/0012-9658(2006)87[2832:TIOPMA]2.0.CO;2') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([ + { 'nameType' => 'Personal', 'name' => 'Fenton, A.', 'givenName' => 'A.', + 'familyName' => 'Fenton' }, { 'nameType' => 'Personal', 'name' => 'Rands, S. A.', 'givenName' => 'S. A.', 'familyName' => 'Rands' } + ]) + expect(subject.rights_list).to eq([{ 'rightsUri' => 'http://doi.wiley.com/10.1002/tdm_license_1.1' }]) + expect(subject.titles).to eq([{ 'title' => 'THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR???PREY COMMUNITIES' }]) + expect(subject.dates).to eq([{ 'date' => '2006-11', 'dateType' => 'Issued' }, + { 'date' => '2019-04-28T13:51:50Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2006') + expect(subject.publisher).to eq('Wiley') expect(subject.related_identifiers.length).to eq(35) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"0012-9658", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1098/rspb.2002.2213", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("firstPage"=>"2832", "identifier"=>"0012-9658", "identifierType"=>"ISSN", "issue"=>"11", "lastPage"=>"2841", "title"=>"Ecology", "type"=>"Journal", "volume"=>"87") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '0012-9658', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1098/rspb.2002.2213', + 'relatedIdentifierType' => 'DOI', 'relationType' => 'References') + expect(subject.container).to eq('firstPage' => '2832', 'identifier' => '0012-9658', + 'identifierType' => 'ISSN', 'issue' => '11', 'lastPage' => '2841', 'title' => 'Ecology', 'type' => 'Journal', 'volume' => '87') + expect(subject.agency).to eq('crossref') end - it "DOI with ORCID ID" do - input = "https://doi.org/10.1155/2012/291294" - subject = Briard::Metadata.new(input: input) + it 'DOI with ORCID ID' do + input = 'https://doi.org/10.1155/2012/291294' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1155/2012/291294") - expect(subject.url).to eq("http://www.hindawi.com/journals/pm/2012/291294/") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1155/2012/291294') + expect(subject.url).to eq('http://www.hindawi.com/journals/pm/2012/291294/') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(7) - expect(subject.creators[2]).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-2043-4925", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Hernandez, Beatriz", "givenName"=>"Beatriz", "familyName"=>"Hernandez", "affiliation" => [{"name"=>"War Related Illness and Injury Study Center (WRIISC) and Mental Illness Research Education and Clinical Center (MIRECC), Department of Veterans Affairs, Palo Alto, CA 94304, USA"}, {"name"=>"Department of Psychiatry and Behavioral Sciences, Stanford University School of Medicine, Stanford, CA 94304, USA"}]) - expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported", - "rightsIdentifier"=>"cc-by-3.0", - "rightsIdentifierScheme"=>"SPDX", - "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode", - "schemeUri"=>"https://spdx.org/licenses/"}]) - expect(subject.titles).to eq([{"title"=>"Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers"}]) - expect(subject.dates).to include({"date"=>"2012", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2012") - expect(subject.publisher).to eq("Hindawi Limited") + expect(subject.creators[2]).to eq('nameType' => 'Personal', + 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-2043-4925', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Hernandez, Beatriz', 'givenName' => 'Beatriz', 'familyName' => 'Hernandez', 'affiliation' => [{ 'name' => 'War Related Illness and Injury Study Center (WRIISC) and Mental Illness Research Education and Clinical Center (MIRECC), Department of Veterans Affairs, Palo Alto, CA 94304, USA' }, { 'name' => 'Department of Psychiatry and Behavioral Sciences, Stanford University School of Medicine, Stanford, CA 94304, USA' }]) + expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 3.0 Unported', + 'rightsIdentifier' => 'cc-by-3.0', + 'rightsIdentifierScheme' => 'SPDX', + 'rightsUri' => 'https://creativecommons.org/licenses/by/3.0/legalcode', + 'schemeUri' => 'https://spdx.org/licenses/' }]) + expect(subject.titles).to eq([{ 'title' => 'Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers' }]) + expect(subject.dates).to include({ 'date' => '2012', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2012') + expect(subject.publisher).to eq('Hindawi Limited') expect(subject.related_identifiers.length).to eq(18) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2090-1844", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1378/chest.12-0045", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("firstPage"=>"1", "identifier"=>"2090-1844", "identifierType"=>"ISSN", "lastPage"=>"7", "title"=>"Pulmonary Medicine", "type"=>"Journal", "volume"=>"2012") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '2090-1844', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1378/chest.12-0045', + 'relatedIdentifierType' => 'DOI', 'relationType' => 'References') + expect(subject.container).to eq('firstPage' => '1', 'identifier' => '2090-1844', + 'identifierType' => 'ISSN', 'lastPage' => '7', 'title' => 'Pulmonary Medicine', 'type' => 'Journal', 'volume' => '2012') + expect(subject.agency).to eq('crossref') end - it "date in future" do - input = "https://doi.org/10.1016/j.ejphar.2015.03.018" - subject = Briard::Metadata.new(input: input) + it 'date in future' do + input = 'https://doi.org/10.1016/j.ejphar.2015.03.018' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1016/j.ejphar.2015.03.018") - expect(subject.identifiers).to eq([{"identifier"=>"S0014299915002332", "identifierType"=>"sequence-number"}]) - expect(subject.url).to eq("https://linkinghub.elsevier.com/retrieve/pii/S0014299915002332") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1016/j.ejphar.2015.03.018') + expect(subject.identifiers).to eq([{ 'identifier' => 'S0014299915002332', + 'identifierType' => 'sequence-number' }]) + expect(subject.url).to eq('https://linkinghub.elsevier.com/retrieve/pii/S0014299915002332') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(10) - expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Beck, Sarah E.", "givenName"=>"Sarah E.", "familyName"=>"Beck") - expect(subject.titles).to eq([{"title"=>"Paving the path to HIV neurotherapy: Predicting SIV CNS disease"}]) - expect(subject.dates).to include({"date"=>"2015-07", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2015") - expect(subject.publisher).to eq("Elsevier BV") - expect(subject.related_identifiers).to eq([{"relatedIdentifier"=>"0014-2999", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection"}, - {"relatedIdentifier"=>"10.1212/01.wnl.0000287431.88658.8b", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1182/blood-2010-09-308684", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1007/s13365-015-0313-7", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/j.jneuroim.2006.04.017", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1086/514001", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/ana.410310403", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1093/infdis/jir214", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/qad.0b013e32836010bd", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1261/rna.036863.112", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.4103/0019-5359.107389", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.3233/jad-2008-14103", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1126/science.287.5455.959", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/01.qai.0000165799.59322.f5", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/ana.410420503", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1089/ars.2012.4834", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1111/j.1600-0404.1987.tb05458.x", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/00002030-198905000-00006", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/ana.410200304", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1186/1742-6405-2-6", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1111/j.1600-0684.1993.tb00649.x", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1186/1742-6405-7-15", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1212/wnl.0b013e318200d727", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1089/aid.2006.0292", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1126/science.3646751", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/ajmg.b.32071", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1186/1756-6606-6-40", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1086/344938", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.71.8.6055-6060.1997", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/j.jneuroim.2004.08.031", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1371/journal.pone.0003603", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1093/jnen/61.1.85", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/qad.0b013e32832c4af0", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.3389/fgene.2013.00083", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1080/13550280390194109", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/ana.410420504", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1001/archneur.61.11.1687", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1212/01.wnl.0000277635.05973.55", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1038/nmeth.3014", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/qai.0000000000000048", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1093/infdis/jit278", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1007/s13365-014-0283-1", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/00002030-199905280-00010", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1097/qco.0b013e32834ef586", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.4049/jimmunol.169.6.3438", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.2174/1389200024605082", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1126/science.1546323", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/s1474-4422(14)70137-1", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/j.jns.2009.06.043", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.77.16.9029-9040.2003", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/jcp.24254", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.76.1.292-302.2002", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1182/blood-2012-03-414706", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/j.jneuroim.2013.11.004", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1038/nrg3198", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/s0140-6736(96)10178-1", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.00366-11", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1007/s13365-011-0053-2", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1083/jcb.201211138", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1111/j.1600-0684.2011.00475.x", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1038/srep05915", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1096/fj.09-143503", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1542/peds.111.2.e168", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.2174/1566524013363555", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1126/science.283.5403.857", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1212/01.wnl.0000145763.68284.15", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1002/ana.410230727", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1186/1742-4690-10-95", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.79.2.684-695.2005", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1111/j.1600-0684.2005.00126.x", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1186/1756-8722-6-6", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1016/j.jmb.2013.12.017", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1590/s0037-86822012000600002", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1080/13550280390218715", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1111/j.1468-1331.2012.03777.x", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.3233/jad-2010-090649", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1080/13550280500516484", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1080/13550280390218751", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1189/jlb.0811394", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1007/s11481-011-9330-3", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1080/13550280802074539", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1086/650743", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1371/journal.pone.0008129", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.80.10.5074-5077.2006", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1186/1742-2094-10-62", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1086/323478", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1128/jvi.73.12.10480-10488.1999", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}, - {"relatedIdentifier"=>"10.1111/hiv.12134", - "relatedIdentifierType"=>"DOI", - "relationType"=>"References"}]) - expect(subject.container).to eq("firstPage"=>"303", "identifier"=>"0014-2999", "identifierType"=>"ISSN", "lastPage"=>"312", "title"=>"European Journal of Pharmacology", "type"=>"Journal", "volume"=>"759") - expect(subject.agency).to eq("crossref") + expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Beck, Sarah E.', + 'givenName' => 'Sarah E.', 'familyName' => 'Beck') + expect(subject.titles).to eq([{ 'title' => 'Paving the path to HIV neurotherapy: Predicting SIV CNS disease' }]) + expect(subject.dates).to include({ 'date' => '2015-07', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2015') + expect(subject.publisher).to eq('Elsevier BV') + expect(subject.related_identifiers).to eq([{ 'relatedIdentifier' => '0014-2999', 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection' }, + { 'relatedIdentifier' => '10.1212/01.wnl.0000287431.88658.8b', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1182/blood-2010-09-308684', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1007/s13365-015-0313-7', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/j.jneuroim.2006.04.017', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1086/514001', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/ana.410310403', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1093/infdis/jir214', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/qad.0b013e32836010bd', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1261/rna.036863.112', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.4103/0019-5359.107389', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.3233/jad-2008-14103', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1126/science.287.5455.959', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/01.qai.0000165799.59322.f5', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/ana.410420503', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1089/ars.2012.4834', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1111/j.1600-0404.1987.tb05458.x', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/00002030-198905000-00006', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/ana.410200304', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1186/1742-6405-2-6', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1111/j.1600-0684.1993.tb00649.x', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1186/1742-6405-7-15', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1212/wnl.0b013e318200d727', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1089/aid.2006.0292', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1126/science.3646751', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/ajmg.b.32071', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1186/1756-6606-6-40', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1086/344938', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.71.8.6055-6060.1997', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/j.jneuroim.2004.08.031', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1371/journal.pone.0003603', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1093/jnen/61.1.85', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/qad.0b013e32832c4af0', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.3389/fgene.2013.00083', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1080/13550280390194109', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/ana.410420504', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1001/archneur.61.11.1687', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1212/01.wnl.0000277635.05973.55', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1038/nmeth.3014', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/qai.0000000000000048', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1093/infdis/jit278', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1007/s13365-014-0283-1', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/00002030-199905280-00010', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1097/qco.0b013e32834ef586', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.4049/jimmunol.169.6.3438', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.2174/1389200024605082', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1126/science.1546323', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/s1474-4422(14)70137-1', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/j.jns.2009.06.043', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.77.16.9029-9040.2003', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/jcp.24254', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.76.1.292-302.2002', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1182/blood-2012-03-414706', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/j.jneuroim.2013.11.004', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1038/nrg3198', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/s0140-6736(96)10178-1', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.00366-11', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1007/s13365-011-0053-2', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1083/jcb.201211138', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1111/j.1600-0684.2011.00475.x', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1038/srep05915', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1096/fj.09-143503', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1542/peds.111.2.e168', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.2174/1566524013363555', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1126/science.283.5403.857', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1212/01.wnl.0000145763.68284.15', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1002/ana.410230727', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1186/1742-4690-10-95', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.79.2.684-695.2005', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1111/j.1600-0684.2005.00126.x', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1186/1756-8722-6-6', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1016/j.jmb.2013.12.017', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1590/s0037-86822012000600002', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1080/13550280390218715', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1111/j.1468-1331.2012.03777.x', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.3233/jad-2010-090649', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1080/13550280500516484', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1080/13550280390218751', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1189/jlb.0811394', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1007/s11481-011-9330-3', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1080/13550280802074539', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1086/650743', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1371/journal.pone.0008129', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.80.10.5074-5077.2006', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1186/1742-2094-10-62', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1086/323478', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1128/jvi.73.12.10480-10488.1999', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }, + { 'relatedIdentifier' => '10.1111/hiv.12134', + 'relatedIdentifierType' => 'DOI', + 'relationType' => 'References' }]) + expect(subject.container).to eq('firstPage' => '303', 'identifier' => '0014-2999', + 'identifierType' => 'ISSN', 'lastPage' => '312', 'title' => 'European Journal of Pharmacology', 'type' => 'Journal', 'volume' => '759') + expect(subject.agency).to eq('crossref') end - it "vor with url" do - input = "https://doi.org/10.1038/hdy.2013.26" - subject = Briard::Metadata.new(input: input) + it 'vor with url' do + input = 'https://doi.org/10.1038/hdy.2013.26' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1038/hdy.2013.26") - expect(subject.url).to eq("http://www.nature.com/articles/hdy201326") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1038/hdy.2013.26') + expect(subject.url).to eq('http://www.nature.com/articles/hdy201326') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(2) - expect(subject.creators.first).to eq("familyName"=>"Gross", "givenName"=>"J B", "name"=>"Gross, J B", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Albinism in phylogenetically and geographically distinct populations of Astyanax cavefish arises through the same loss-of-function Oca2 allele"}]) - expect(subject.dates).to include({"date"=>"2013-04-10", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2013") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") + expect(subject.creators.first).to eq('familyName' => 'Gross', 'givenName' => 'J B', + 'name' => 'Gross, J B', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Albinism in phylogenetically and geographically distinct populations of Astyanax cavefish arises through the same loss-of-function Oca2 allele' }]) + expect(subject.dates).to include({ 'date' => '2013-04-10', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2013') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') expect(subject.related_identifiers.size).to eq(35) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1365-2540", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.container).to eq("firstPage"=>"122", "identifier"=>"1365-2540", "identifierType"=>"ISSN", "issue"=>"2", "lastPage"=>"130", "title"=>"Heredity", "type"=>"Journal", "volume"=>"111") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1365-2540', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.container).to eq('firstPage' => '122', 'identifier' => '1365-2540', + 'identifierType' => 'ISSN', 'issue' => '2', 'lastPage' => '130', 'title' => 'Heredity', 'type' => 'Journal', 'volume' => '111') + expect(subject.agency).to eq('crossref') end - it "dataset" do - input = "10.2210/pdb4hhb/pdb" - subject = Briard::Metadata.new(input: input) + it 'dataset' do + input = '10.2210/pdb4hhb/pdb' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.2210/pdb4hhb/pdb") - expect(subject.url).to eq("https://www.wwpdb.org/pdb?id=pdb_00004hhb") - expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"SaComponent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.2210/pdb4hhb/pdb') + expect(subject.url).to eq('https://www.wwpdb.org/pdb?id=pdb_00004hhb') + expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal', + 'resourceType' => 'SaComponent', 'resourceTypeGeneral' => 'Text', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(2) - expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Fermi, G.", "givenName"=>"G.", "familyName"=>"Fermi") - expect(subject.titles).to eq([{"title"=>"THE CRYSTAL STRUCTURE OF HUMAN DEOXYHAEMOGLOBIN AT 1.74 ANGSTROMS RESOLUTION"}]) - expect(subject.descriptions).to eq([{"description"=>"x-ray diffraction structure", "descriptionType"=>"Other"}]) - expect(subject.dates).to include({"date"=>"1984-07-17", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("1984") - expect(subject.publisher).to eq("Worldwide Protein Data Bank") - expect(subject.agency).to eq("crossref") + expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Fermi, G.', + 'givenName' => 'G.', 'familyName' => 'Fermi') + expect(subject.titles).to eq([{ 'title' => 'THE CRYSTAL STRUCTURE OF HUMAN DEOXYHAEMOGLOBIN AT 1.74 ANGSTROMS RESOLUTION' }]) + expect(subject.descriptions).to eq([{ 'description' => 'x-ray diffraction structure', + 'descriptionType' => 'Other' }]) + expect(subject.dates).to include({ 'date' => '1984-07-17', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('1984') + expect(subject.publisher).to eq('Worldwide Protein Data Bank') + expect(subject.agency).to eq('crossref') end - it "component" do - input = "10.1371/journal.pmed.0030277.g001" - subject = Briard::Metadata.new(input: input) + it 'component' do + input = '10.1371/journal.pmed.0030277.g001' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1371/journal.pmed.0030277.g001") - expect(subject.url).to eq("https://dx.plos.org/10.1371/journal.pmed.0030277.g001") - expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"SaComponent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}]) - expect(subject.titles).to eq([{"title"=>":(unav)"}]) - expect(subject.descriptions).to be_empty - expect(subject.dates).to eq([{"date"=>"2015-10-20", "dateType"=>"Issued"}, {"date"=>"2018-10-19T21:13:42Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2015") - expect(subject.publisher).to eq("Public Library of Science (PLoS)") - expect(subject.agency).to eq("crossref") + expect(subject.id).to eq('https://doi.org/10.1371/journal.pmed.0030277.g001') + expect(subject.url).to eq('https://dx.plos.org/10.1371/journal.pmed.0030277.g001') + expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal', + 'resourceType' => 'SaComponent', 'resourceTypeGeneral' => 'Text', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }]) + expect(subject.titles).to eq([{ 'title' => ':(unav)' }]) + expect(subject.descriptions.empty?).to be(true) + expect(subject.dates).to eq([{ 'date' => '2015-10-20', 'dateType' => 'Issued' }, + { 'date' => '2018-10-19T21:13:42Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2015') + expect(subject.publisher).to eq('Public Library of Science (PLoS)') + expect(subject.agency).to eq('crossref') end - it "dataset usda" do - input = "https://doi.org/10.2737/RDS-2018-0001" - subject = Briard::Metadata.new(input: input) - #expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.2737/rds-2018-0001") - expect(subject.url).to eq("https://www.fs.usda.gov/rds/archive/Catalog/RDS-2018-0001") - expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resourceType"=>"Dataset", "resourceTypeGeneral"=>"Dataset", "ris"=>"DATA", "schemaOrg"=>"Dataset") + it 'dataset usda' do + input = 'https://doi.org/10.2737/RDS-2018-0001' + subject = described_class.new(input: input) + # expect(subject.valid?).to be true + expect(subject.id).to eq('https://doi.org/10.2737/rds-2018-0001') + expect(subject.url).to eq('https://www.fs.usda.gov/rds/archive/Catalog/RDS-2018-0001') + expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'dataset', + 'resourceType' => 'Dataset', 'resourceTypeGeneral' => 'Dataset', 'ris' => 'DATA', 'schemaOrg' => 'Dataset') expect(subject.creators.length).to eq(4) - expect(subject.creators.first).to eq("familyName" => "Ribic","givenName" => "Christine A.","name" => "Ribic, Christine A.","affiliation" => [{"name"=>"U.S. Geological Survey"}],"nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-2583-1778", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],"nameType" => "Personal") - expect(subject.titles).to eq([{"title"=>"Fledging times of grassland birds"}]) - expect(subject.descriptions).to be_empty - expect(subject.dates).to eq([{"date"=>"2017-08-09", "dateType"=>"Issued"}, {"date"=>"2021-07-01T22:10:21Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2017") - expect(subject.publisher).to eq("USDA Forest Service") - expect(subject.agency).to eq("crossref") + expect(subject.creators.first).to eq('familyName' => 'Ribic', 'givenName' => 'Christine A.', + 'name' => 'Ribic, Christine A.', 'affiliation' => [{ 'name' => 'U.S. Geological Survey' }], 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-2583-1778', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Fledging times of grassland birds' }]) + expect(subject.descriptions.empty?).to be(true) + expect(subject.dates).to eq([{ 'date' => '2017-08-09', 'dateType' => 'Issued' }, + { 'date' => '2021-07-01T22:10:21Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2017') + expect(subject.publisher).to eq('USDA Forest Service') + expect(subject.agency).to eq('crossref') end - it "book chapter" do - input = "https://doi.org/10.1007/978-3-662-46370-3_13" - subject = Briard::Metadata.new(input: input) + it 'book chapter' do + input = 'https://doi.org/10.1007/978-3-662-46370-3_13' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1007/978-3-662-46370-3_13") - expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-662-46370-3_13") - expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter") + expect(subject.id).to eq('https://doi.org/10.1007/978-3-662-46370-3_13') + expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-662-46370-3_13') + expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter', + 'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter') expect(subject.creators.length).to eq(2) - expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Diercks, Ronald L.", "givenName"=>"Ronald L.", "familyName"=>"Diercks") - expect(subject.titles).to eq([{"title"=>"Clinical Symptoms and Physical Examinations"}]) - expect(subject.dates).to eq([{"date"=>"2015", "dateType"=>"Issued"}, {"date"=>"2015-04-14T02:31:13Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2015") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") - expect(subject.agency).to eq("crossref") - expect(subject.container["type"]).to eq("Book") - expect(subject.container["title"]).to eq("Shoulder Stiffness") - expect(subject.container["firstPage"]).to eq("155") - expect(subject.container["lastPage"]).to eq("158") - expect(subject.container["identifiers"]).to eq([{"identifier"=>"978-3-662-46369-7", "identifierType"=>"ISBN"}]) + expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Diercks, Ronald L.', + 'givenName' => 'Ronald L.', 'familyName' => 'Diercks') + expect(subject.titles).to eq([{ 'title' => 'Clinical Symptoms and Physical Examinations' }]) + expect(subject.dates).to eq([{ 'date' => '2015', 'dateType' => 'Issued' }, + { 'date' => '2015-04-14T02:31:13Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2015') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') + expect(subject.agency).to eq('crossref') + expect(subject.container['type']).to eq('Book') + expect(subject.container['title']).to eq('Shoulder Stiffness') + expect(subject.container['firstPage']).to eq('155') + expect(subject.container['lastPage']).to eq('158') + expect(subject.container['identifiers']).to eq([{ 'identifier' => '978-3-662-46369-7', + 'identifierType' => 'ISBN' }]) end - it "another book chapter" do - input = "https://doi.org/10.1007/978-3-319-75889-3_1" - subject = Briard::Metadata.new(input: input) + it 'another book chapter' do + input = 'https://doi.org/10.1007/978-3-319-75889-3_1' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1007/978-3-319-75889-3_1") - expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-319-75889-3_1") - expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter") - expect(subject.creators).to eq([{"familyName"=>"Jones", "givenName"=>"Hunter M.", "name"=>"Jones, Hunter M.", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Climate Change and Increasing Risk of Extreme Heat"}]) - expect(subject.dates).to include({"date"=>"2018", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") - expect(subject.agency).to eq("crossref") - expect(subject.container["type"]).to eq("Book Series") - expect(subject.container["title"]).to eq("SpringerBriefs in Medical Earth Sciences") - expect(subject.container["identifier"]).to eq("2523-3629") - expect(subject.container["identifierType"]).to eq("ISSN") + expect(subject.id).to eq('https://doi.org/10.1007/978-3-319-75889-3_1') + expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-319-75889-3_1') + expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter', + 'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter') + expect(subject.creators).to eq([{ 'familyName' => 'Jones', 'givenName' => 'Hunter M.', + 'name' => 'Jones, Hunter M.', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Climate Change and Increasing Risk of Extreme Heat' }]) + expect(subject.dates).to include({ 'date' => '2018', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') + expect(subject.agency).to eq('crossref') + expect(subject.container['type']).to eq('Book Series') + expect(subject.container['title']).to eq('SpringerBriefs in Medical Earth Sciences') + expect(subject.container['identifier']).to eq('2523-3629') + expect(subject.container['identifierType']).to eq('ISSN') end - it "yet another book chapter" do - input = "https://doi.org/10.4018/978-1-4666-1891-6.ch004" - subject = Briard::Metadata.new(input: input) + it 'yet another book chapter' do + input = 'https://doi.org/10.4018/978-1-4666-1891-6.ch004' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.4018/978-1-4666-1891-6.ch004") - expect(subject.url).to eq("http://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-1891-6.ch004") - expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter") - expect(subject.creators).to eq([{"affiliation"=>[{"name"=>"Universit?? de Lyon, France"}], "familyName"=>"Bichot", "givenName"=>"Charles-Edmond", "name"=>"Bichot, Charles-Edmond", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Unsupervised and Supervised Image Segmentation Using Graph Partitioning"}]) - expect(subject.dates).to eq([{"date"=>"2012-08-08", "dateType"=>"Issued"}, {"date"=>"2019-07-02T13:17:21Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2012") - expect(subject.publisher).to eq("IGI Global") - expect(subject.agency).to eq("crossref") - expect(subject.container["type"]).to eq("Book") - expect(subject.container["title"]).to eq("Graph-Based Methods in Computer Vision") - expect(subject.container["firstPage"]).to eq("72") - expect(subject.container["lastPage"]).to eq("94") - expect(subject.container["identifiers"]).to eq([{"identifier"=>"9781466618916", "identifierType"=>"ISBN"}]) + expect(subject.id).to eq('https://doi.org/10.4018/978-1-4666-1891-6.ch004') + expect(subject.url).to eq('http://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-1891-6.ch004') + expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter', + 'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter') + expect(subject.creators).to eq([{ 'affiliation' => [{ 'name' => 'Universit?? de Lyon, France' }], + 'familyName' => 'Bichot', 'givenName' => 'Charles-Edmond', 'name' => 'Bichot, Charles-Edmond', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Unsupervised and Supervised Image Segmentation Using Graph Partitioning' }]) + expect(subject.dates).to eq([{ 'date' => '2012-08-08', 'dateType' => 'Issued' }, + { 'date' => '2019-07-02T13:17:21Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2012') + expect(subject.publisher).to eq('IGI Global') + expect(subject.agency).to eq('crossref') + expect(subject.container['type']).to eq('Book') + expect(subject.container['title']).to eq('Graph-Based Methods in Computer Vision') + expect(subject.container['firstPage']).to eq('72') + expect(subject.container['lastPage']).to eq('94') + expect(subject.container['identifiers']).to eq([{ 'identifier' => '9781466618916', + 'identifierType' => 'ISBN' }]) end - it "missing creator" do - input = "https://doi.org/10.3390/publications6020015" - subject = Briard::Metadata.new(input: input) + it 'missing creator' do + input = 'https://doi.org/10.3390/publications6020015' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.3390/publications6020015") - expect(subject.url).to eq("https://www.mdpi.com/2304-6775/6/2/15") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"familyName"=>"Kohls", - "givenName"=>"Alexander", - "name"=>"Kohls, Alexander", - "nameIdentifiers"=> - [{"nameIdentifier"=>"https://orcid.org/0000-0002-3836-8885", - "nameIdentifierScheme"=>"ORCID", - "schemeUri"=>"https://orcid.org"}], - "nameType"=>"Personal"}, - {"familyName"=>"Mele", - "givenName"=>"Salvatore", - "name"=>"Mele, Salvatore", - "nameIdentifiers"=> - [{"nameIdentifier"=>"https://orcid.org/0000-0003-0762-2235", - "nameIdentifierScheme"=>"ORCID", - "schemeUri"=>"https://orcid.org"}], - "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics"}]) - expect(subject.dates).to eq([{"date"=>"2018-04-09", "dateType"=>"Issued"}, {"date"=>"2021-07-22T10:05:05Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("MDPI AG") - expect(subject.agency).to eq("crossref") + expect(subject.id).to eq('https://doi.org/10.3390/publications6020015') + expect(subject.url).to eq('https://www.mdpi.com/2304-6775/6/2/15') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([{ 'familyName' => 'Kohls', + 'givenName' => 'Alexander', + 'name' => 'Kohls, Alexander', + 'nameIdentifiers' => + [{ 'nameIdentifier' => 'https://orcid.org/0000-0002-3836-8885', + 'nameIdentifierScheme' => 'ORCID', + 'schemeUri' => 'https://orcid.org' }], + 'nameType' => 'Personal' }, + { 'familyName' => 'Mele', + 'givenName' => 'Salvatore', + 'name' => 'Mele, Salvatore', + 'nameIdentifiers' => + [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-0762-2235', + 'nameIdentifierScheme' => 'ORCID', + 'schemeUri' => 'https://orcid.org' }], + 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics' }]) + expect(subject.dates).to eq([{ 'date' => '2018-04-09', 'dateType' => 'Issued' }, + { 'date' => '2021-07-22T10:05:05Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('MDPI AG') + expect(subject.agency).to eq('crossref') end - it "book" do - input = "https://doi.org/10.1017/9781108348843" - subject = Briard::Metadata.new(input: input) + it 'book' do + input = 'https://doi.org/10.1017/9781108348843' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1017/9781108348843") - expect(subject.identifiers).to eq([{"identifier"=>"9781108348843", "identifierType"=>"ISBN"}]) - expect(subject.url).to eq("https://www.cambridge.org/core/product/identifier/9781108348843/type/book") - expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book") - expect(subject.creators).to eq([{"familyName"=>"Leung", "givenName"=>"Vincent S.", "name"=>"Leung, Vincent S.", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"The Politics of the Past in Early China"}]) - expect(subject.dates).to eq([{"date"=>"2019-07-01", "dateType"=>"Issued"}, {"date"=>"2021-01-08T19:18:57Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2019") - expect(subject.publisher).to eq("Cambridge University Press (CUP)") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2019-07-06T10:19:22Z") + expect(subject.id).to eq('https://doi.org/10.1017/9781108348843') + expect(subject.identifiers).to eq([{ 'identifier' => '9781108348843', + 'identifierType' => 'ISBN' }]) + expect(subject.url).to eq('https://www.cambridge.org/core/product/identifier/9781108348843/type/book') + expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book', + 'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book') + expect(subject.creators).to eq([{ 'familyName' => 'Leung', 'givenName' => 'Vincent S.', + 'name' => 'Leung, Vincent S.', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'The Politics of the Past in Early China' }]) + expect(subject.dates).to eq([{ 'date' => '2019-07-01', 'dateType' => 'Issued' }, + { 'date' => '2021-01-08T19:18:57Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2019') + expect(subject.publisher).to eq('Cambridge University Press (CUP)') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2019-07-06T10:19:22Z') end - it "another book" do - input = "https://doi.org/10.2973/odp.proc.ir.180.2000" - subject = Briard::Metadata.new(input: input) + it 'another book' do + input = 'https://doi.org/10.2973/odp.proc.ir.180.2000' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.2973/odp.proc.ir.180.2000") - expect(subject.url).to eq("http://www-odp.tamu.edu/publications/180_IR/180TOC.HTM") - expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book") - expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}]) + expect(subject.id).to eq('https://doi.org/10.2973/odp.proc.ir.180.2000') + expect(subject.url).to eq('http://www-odp.tamu.edu/publications/180_IR/180TOC.HTM') + expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book', + 'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book') + expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }]) expect(subject.contributors.size).to eq(4) - expect(subject.contributors.first).to eq("contributorType"=>"Editor", "familyName"=>"Taylor", "givenName"=>"B.", "name"=>"Taylor, B.", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Proceedings of the Ocean Drilling Program, 180 Initial Reports"}]) - expect(subject.dates).to eq([{"date"=>"2000-02-04", "dateType"=>"Issued"}, {"date"=>"2009-02-02T21:19:43Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2000") - expect(subject.publisher).to eq("International Ocean Discovery Program (IODP)") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2006-10-17T20:17:44Z") + expect(subject.contributors.first).to eq('contributorType' => 'Editor', 'familyName' => 'Taylor', + 'givenName' => 'B.', 'name' => 'Taylor, B.', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Proceedings of the Ocean Drilling Program, 180 Initial Reports' }]) + expect(subject.dates).to eq([{ 'date' => '2000-02-04', 'dateType' => 'Issued' }, + { 'date' => '2009-02-02T21:19:43Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2000') + expect(subject.publisher).to eq('International Ocean Discovery Program (IODP)') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2006-10-17T20:17:44Z') end - it "yet another book" do - input = "https://doi.org/10.1029/ar035" - subject = Briard::Metadata.new(input: input) + it 'yet another book' do + input = 'https://doi.org/10.1029/ar035' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1029/ar035") - expect(subject.identifiers).to eq([{"identifier"=>"0-87590-181-6", "identifierType"=>"ISBN"}]) - expect(subject.url).to eq("http://doi.wiley.com/10.1029/AR035") - expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book") - expect(subject.creators).to eq([{"familyName"=>"McGinnis", "givenName"=>"Richard Frank", "name"=>"McGinnis, Richard Frank", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Biogeography of Lanternfishes (Myctophidae) South of 30??S"}]) - expect(subject.dates).to eq([{"date"=>"1982", "dateType"=>"Issued"}, {"date"=>"2021-12-04T00:09:54Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("1982") - expect(subject.publisher).to eq("Wiley") + expect(subject.id).to eq('https://doi.org/10.1029/ar035') + expect(subject.identifiers).to eq([{ 'identifier' => '0-87590-181-6', + 'identifierType' => 'ISBN' }]) + expect(subject.url).to eq('http://doi.wiley.com/10.1029/AR035') + expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book', + 'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book') + expect(subject.creators).to eq([{ 'familyName' => 'McGinnis', 'givenName' => 'Richard Frank', + 'name' => 'McGinnis, Richard Frank', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Biogeography of Lanternfishes (Myctophidae) South of 30??S' }]) + expect(subject.dates).to eq([{ 'date' => '1982', 'dateType' => 'Issued' }, + { 'date' => '2021-12-04T00:09:54Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('1982') + expect(subject.publisher).to eq('Wiley') expect(subject.related_identifiers.length).to eq(46) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"10.1016/0031-0182(70)90103-3", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("identifier"=>"0066-4634", "identifierType"=>"ISSN", "title"=>"Antarctic Research Series", "type"=>"Book Series", "volume"=>"35") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to be_nil + expect(subject.related_identifiers.first).to eq( + 'relatedIdentifier' => '10.1016/0031-0182(70)90103-3', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References' + ) + expect(subject.container).to eq('identifier' => '0066-4634', 'identifierType' => 'ISSN', + 'title' => 'Antarctic Research Series', 'type' => 'Book Series', 'volume' => '35') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered.nil?).to be(true) end - it "mEDRA" do - input = "https://doi.org/10.3280/ecag2018-001005" - subject = Briard::Metadata.new(input: input) + it 'mEDRA' do + input = 'https://doi.org/10.3280/ecag2018-001005' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.3280/ecag2018-001005") - expect(subject.identifiers).to eq([{"identifier"=>"5", "identifierType"=>"article_number"}]) - expect(subject.url).to eq("http://www.francoangeli.it/riviste/Scheda_Riviste.asp?IDArticolo=61645") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.3280/ecag2018-001005') + expect(subject.identifiers).to eq([{ 'identifier' => '5', + 'identifierType' => 'article_number' }]) + expect(subject.url).to eq('http://www.francoangeli.it/riviste/Scheda_Riviste.asp?IDArticolo=61645') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(2) - expect(subject.creators.first).to eq("familyName"=>"Oh", "givenName"=>"Sohae Eve", "name"=>"Oh, Sohae Eve", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Substitutability between organic and conventional poultry products and organic price premiums"}]) - expect(subject.dates).to include({"date"=>"2018-05", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("Franco Angeli") - expect(subject.agency).to eq("crossref") + expect(subject.creators.first).to eq('familyName' => 'Oh', 'givenName' => 'Sohae Eve', + 'name' => 'Oh, Sohae Eve', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Substitutability between organic and conventional poultry products and organic price premiums' }]) + expect(subject.dates).to include({ 'date' => '2018-05', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('Franco Angeli') + expect(subject.agency).to eq('crossref') end - it "KISTI" do - input = "https://doi.org/10.5012/bkcs.2013.34.10.2889" - subject = Briard::Metadata.new(input: input) + it 'KISTI' do + input = 'https://doi.org/10.5012/bkcs.2013.34.10.2889' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.5012/bkcs.2013.34.10.2889") - expect(subject.identifiers).to eq([{"identifier"=>"JCGMCS_2013_v34n10_2889", "identifierType"=>"Publisher ID"}]) - expect(subject.url).to eq("http://koreascience.or.kr/journal/view.jsp?kj=JCGMCS&py=2013&vnc=v34n10&sp=2889") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.5012/bkcs.2013.34.10.2889') + expect(subject.identifiers).to eq([{ 'identifier' => 'JCGMCS_2013_v34n10_2889', + 'identifierType' => 'Publisher ID' }]) + expect(subject.url).to eq('http://koreascience.or.kr/journal/view.jsp?kj=JCGMCS&py=2013&vnc=v34n10&sp=2889') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(7) - expect(subject.creators.first).to eq("familyName"=>"Huang", "givenName"=>"Guimei", "name"=>"Huang, Guimei", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Synthesis, Crystal Structure and Theoretical Calculation of a Novel Nickel(II) Complex with Dibromotyrosine and 1,10-Phenanthroline"}]) - expect(subject.dates).to eq([{"date"=>"2013-10-20", "dateType"=>"Issued"}, {"date"=>"2016-12-14T21:40:52Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2013") - expect(subject.publisher).to eq("Korean Chemical Society") - expect(subject.agency).to eq("KISTI") + expect(subject.creators.first).to eq('familyName' => 'Huang', 'givenName' => 'Guimei', + 'name' => 'Huang, Guimei', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Synthesis, Crystal Structure and Theoretical Calculation of a Novel Nickel(II) Complex with Dibromotyrosine and 1,10-Phenanthroline' }]) + expect(subject.dates).to eq([{ 'date' => '2013-10-20', 'dateType' => 'Issued' }, + { 'date' => '2016-12-14T21:40:52Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2013') + expect(subject.publisher).to eq('Korean Chemical Society') + expect(subject.agency).to eq('KISTI') end - it "JaLC" do - input = "https://doi.org/10.1241/johokanri.39.979" - subject = Briard::Metadata.new(input: input) + it 'JaLC' do + input = 'https://doi.org/10.1241/johokanri.39.979' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1241/johokanri.39.979") - expect(subject.url).to eq("http://joi.jlc.jst.go.jp/JST.JSTAGE/johokanri/39.979?from=CrossRef") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"familyName"=>"KUSUMOTO", "givenName"=>"Hiroyuki", "name"=>"KUSUMOTO, Hiroyuki", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Utilizing the Internet. 12 Series. Future of the Internet."}]) - expect(subject.dates).to eq([{"date"=>"1997", "dateType"=>"Issued"}, {"date"=>"2020-03-06T06:44:36Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("1997") - expect(subject.publisher).to eq("Japan Science and Technology Agency (JST)") - expect(subject.agency).to eq("JaLC") + expect(subject.id).to eq('https://doi.org/10.1241/johokanri.39.979') + expect(subject.url).to eq('http://joi.jlc.jst.go.jp/JST.JSTAGE/johokanri/39.979?from=CrossRef') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([{ 'familyName' => 'KUSUMOTO', 'givenName' => 'Hiroyuki', + 'name' => 'KUSUMOTO, Hiroyuki', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Utilizing the Internet. 12 Series. Future of the Internet.' }]) + expect(subject.dates).to eq([{ 'date' => '1997', 'dateType' => 'Issued' }, + { 'date' => '2020-03-06T06:44:36Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('1997') + expect(subject.publisher).to eq('Japan Science and Technology Agency (JST)') + expect(subject.agency).to eq('JaLC') end - it "OP" do - input = "https://doi.org/10.2903/j.efsa.2018.5239" - subject = Briard::Metadata.new(input: input) + it 'OP' do + input = 'https://doi.org/10.2903/j.efsa.2018.5239' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.2903/j.efsa.2018.5239") - expect(subject.url).to eq("http://doi.wiley.com/10.2903/j.efsa.2018.5239") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.2903/j.efsa.2018.5239') + expect(subject.url).to eq('http://doi.wiley.com/10.2903/j.efsa.2018.5239') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(28) - expect(subject.creators.first).to eq("familyName"=>"Younes", "givenName"=>"Maged", "name"=>"Younes, Maged", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Scientific opinion on the safety of green tea catechins"}]) - expect(subject.dates).to include({"date"=>"2018-04", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("Wiley") - expect(subject.agency).to eq("OP") + expect(subject.creators.first).to eq('familyName' => 'Younes', 'givenName' => 'Maged', + 'name' => 'Younes, Maged', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Scientific opinion on the safety of green tea catechins' }]) + expect(subject.dates).to include({ 'date' => '2018-04', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('Wiley') + expect(subject.agency).to eq('OP') end - it "multiple titles" do - input = "https://doi.org/10.4000/dms.865" - subject = Briard::Metadata.new(input: input) + it 'multiple titles' do + input = 'https://doi.org/10.4000/dms.865' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.4000/dms.865") - expect(subject.url).to eq("http://journals.openedition.org/dms/865") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"familyName"=>"Peraya", "givenName"=>"Daniel", "name"=>"Peraya, Daniel", "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Distances, absence, proximit??s et pr??sences??: des concepts en d??placement"}, {"title"=>"Distance(s), proximity and presence(s): evolving concepts"}]) - expect(subject.dates).to include({"date"=>"2014-12-14", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2014") - expect(subject.publisher).to eq("OpenEdition") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to be_nil + expect(subject.id).to eq('https://doi.org/10.4000/dms.865') + expect(subject.url).to eq('http://journals.openedition.org/dms/865') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([{ 'familyName' => 'Peraya', 'givenName' => 'Daniel', + 'name' => 'Peraya, Daniel', 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([ + { 'title' => 'Distances, absence, proximit??s et pr??sences??: des concepts en d??placement' }, { 'title' => 'Distance(s), proximity and presence(s): evolving concepts' } + ]) + expect(subject.dates).to include({ 'date' => '2014-12-14', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2014') + expect(subject.publisher).to eq('OpenEdition') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered.nil?).to be(true) end - it "multiple titles with missing" do - input = "https://doi.org/10.1186/1471-2164-7-187" - subject = Briard::Metadata.new(input: input) + it 'multiple titles with missing' do + input = 'https://doi.org/10.1186/1471-2164-7-187' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1186/1471-2164-7-187") - expect(subject.url).to eq("https://bmcgenomics.biomedcentral.com/articles/10.1186/1471-2164-7-187") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") - expect(subject.creators).to eq([{"familyName"=>"Myers", - "givenName"=>"Chad L", - "name"=>"Myers, Chad L", - "nameType"=>"Personal"}, - {"familyName"=>"Barrett", - "givenName"=>"Daniel R", - "name"=>"Barrett, Daniel R", - "nameType"=>"Personal"}, - {"familyName"=>"Hibbs", - "givenName"=>"Matthew A", - "name"=>"Hibbs, Matthew A", - "nameType"=>"Personal"}, - {"familyName"=>"Huttenhower", - "givenName"=>"Curtis", - "name"=>"Huttenhower, Curtis", - "nameType"=>"Personal"}, - {"familyName"=>"Troyanskaya", - "givenName"=>"Olga G", - "name"=>"Troyanskaya, Olga G", - "nameType"=>"Personal"}]) - expect(subject.titles).to eq([{"title"=>"Finding function: evaluation methods for functional genomic data"}]) - expect(subject.dates).to include({"date"=>"2006-07-25", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2006") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2021-08-31T17:31:49Z") + expect(subject.id).to eq('https://doi.org/10.1186/1471-2164-7-187') + expect(subject.url).to eq('https://bmcgenomics.biomedcentral.com/articles/10.1186/1471-2164-7-187') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') + expect(subject.creators).to eq([{ 'familyName' => 'Myers', + 'givenName' => 'Chad L', + 'name' => 'Myers, Chad L', + 'nameType' => 'Personal' }, + { 'familyName' => 'Barrett', + 'givenName' => 'Daniel R', + 'name' => 'Barrett, Daniel R', + 'nameType' => 'Personal' }, + { 'familyName' => 'Hibbs', + 'givenName' => 'Matthew A', + 'name' => 'Hibbs, Matthew A', + 'nameType' => 'Personal' }, + { 'familyName' => 'Huttenhower', + 'givenName' => 'Curtis', + 'name' => 'Huttenhower, Curtis', + 'nameType' => 'Personal' }, + { 'familyName' => 'Troyanskaya', + 'givenName' => 'Olga G', + 'name' => 'Troyanskaya, Olga G', + 'nameType' => 'Personal' }]) + expect(subject.titles).to eq([{ 'title' => 'Finding function: evaluation methods for functional genomic data' }]) + expect(subject.dates).to include({ 'date' => '2006-07-25', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2006') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2021-08-31T17:31:49Z') end - it "markup" do - input = "https://doi.org/10.1098/rspb.2017.0132" - subject = Briard::Metadata.new(input: input) + it 'markup' do + input = 'https://doi.org/10.1098/rspb.2017.0132' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1098/rspb.2017.0132") - expect(subject.url).to eq("https://royalsocietypublishing.org/doi/10.1098/rspb.2017.0132") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1098/rspb.2017.0132') + expect(subject.url).to eq('https://royalsocietypublishing.org/doi/10.1098/rspb.2017.0132') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.size).to eq(6) - expect(subject.creators.first).to eq("affiliation" => [{"name"=>"School of Biological Sciences, Centre for Evolutionary Biology, University of Western Australia, Crawley, WA 6009, Australia"}], "familyName" => "Dougherty","givenName" => "Liam R.","name" => "Dougherty, Liam R.","nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1406-0680", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],"nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Sexual conflict and correlated evolution between male persistence and female resistance traits in the seed beetle <i>Callosobruchus maculatus</i>"}]) - expect(subject.dates).to include({"date"=>"2017-05-24", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2017") - expect(subject.publisher).to eq("The Royal Society") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2021-02-14T10:36:45Z") + expect(subject.creators.first).to eq( + 'affiliation' => [{ 'name' => 'School of Biological Sciences, Centre for Evolutionary Biology, University of Western Australia, Crawley, WA 6009, Australia' }], 'familyName' => 'Dougherty', 'givenName' => 'Liam R.', 'name' => 'Dougherty, Liam R.', 'nameIdentifiers' => [{ + 'nameIdentifier' => 'https://orcid.org/0000-0003-1406-0680', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' + }], 'nameType' => 'Personal' + ) + expect(subject.titles).to eq([{ 'title' => 'Sexual conflict and correlated evolution between male persistence and female resistance traits in the seed beetle <i>Callosobruchus maculatus</i>' }]) + expect(subject.dates).to include({ 'date' => '2017-05-24', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2017') + expect(subject.publisher).to eq('The Royal Society') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2021-02-14T10:36:45Z') end - it "empty given name" do - input = "https://doi.org/10.1111/J.1865-1682.2010.01171.X" - subject = Briard::Metadata.new(input: input) + it 'empty given name' do + input = 'https://doi.org/10.1111/J.1865-1682.2010.01171.X' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1111/j.1865-1682.2010.01171.x") - expect(subject.url).to eq("https://onlinelibrary.wiley.com/doi/10.1111/j.1865-1682.2010.01171.x") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1111/j.1865-1682.2010.01171.x') + expect(subject.url).to eq('https://onlinelibrary.wiley.com/doi/10.1111/j.1865-1682.2010.01171.x') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(5) - expect(subject.creators[3]).to eq("familyName"=>"Ehtisham-ul-Haq", "givenName"=>"???", "name"=>"Ehtisham-ul-Haq, ???", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Serological Evidence of Brucella abortus Prevalence in Punjab Province, Pakistan - A Cross-Sectional Study"}]) - expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}]) - expect(subject.dates).to eq([{"date"=>"2010-12", "dateType"=>"Issued"}, {"date"=>"2021-07-07T02:32:16Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2010") - expect(subject.publisher).to eq("Wiley") + expect(subject.creators[3]).to eq('familyName' => 'Ehtisham-ul-Haq', 'givenName' => '???', + 'name' => 'Ehtisham-ul-Haq, ???', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Serological Evidence of Brucella abortus Prevalence in Punjab Province, Pakistan - A Cross-Sectional Study' }]) + expect(subject.rights_list).to eq([{ 'rightsUri' => 'http://doi.wiley.com/10.1002/tdm_license_1.1' }]) + expect(subject.dates).to eq([{ 'date' => '2010-12', 'dateType' => 'Issued' }, + { 'date' => '2021-07-07T02:32:16Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2010') + expect(subject.publisher).to eq('Wiley') end - it "invalid date" do - input = "https://doi.org/10.1055/s-0039-1690894" - subject = Briard::Metadata.new(input: input) + it 'invalid date' do + input = 'https://doi.org/10.1055/s-0039-1690894' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1055/s-0039-1690894") - expect(subject.identifiers).to eq([{"identifier"=>"s-0039-1690894", "identifierType"=>"sequence-number"}]) - expect(subject.url).to eq("http://www.thieme-connect.de/DOI/DOI?10.1055/s-0039-1690894") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1055/s-0039-1690894') + expect(subject.identifiers).to eq([{ 'identifier' => 's-0039-1690894', + 'identifierType' => 'sequence-number' }]) + expect(subject.url).to eq('http://www.thieme-connect.de/DOI/DOI?10.1055/s-0039-1690894') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(4) - expect(subject.creators[3]).to eq("affiliation" => [{"name"=>"Department of Chemistry, Tianjin Key Laboratory of Molecular Optoelectronic Sciences, and Tianjin Collaborative Innovation Centre of Chemical Science and Engineering, Tianjin University"}, {"name"=>"Joint School of National University of Singapore and Tianjin University, International Campus of Tianjin University"}], - "familyName" => "Ma", - "givenName" => "Jun-An", - "name" => "Ma, Jun-An", - "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-3902-6799", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], - "nameType" => "Personal") - expect(subject.titles).to eq([{"title"=>"Silver-Catalyzed [3+3] Annulation of Glycine Imino Esters with Seyferth???Gilbert Reagent To Access Tetrahydro-1,2,4-triazinecarboxylate Esters"}]) - expect(subject.dates).to eq([{"date"=>"2020-04-08", "dateType"=>"Issued"}, {"date"=>"2020-06-16T23:13:36Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2020") - expect(subject.publisher).to eq("Georg Thieme Verlag KG") + expect(subject.creators[3]).to eq('affiliation' => [{ 'name' => 'Department of Chemistry, Tianjin Key Laboratory of Molecular Optoelectronic Sciences, and Tianjin Collaborative Innovation Centre of Chemical Science and Engineering, Tianjin University' }, { 'name' => 'Joint School of National University of Singapore and Tianjin University, International Campus of Tianjin University' }], + 'familyName' => 'Ma', + 'givenName' => 'Jun-An', + 'name' => 'Ma, Jun-An', + 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0002-3902-6799', + 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], + 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Silver-Catalyzed [3+3] Annulation of Glycine Imino Esters with Seyferth???Gilbert Reagent To Access Tetrahydro-1,2,4-triazinecarboxylate Esters' }]) + expect(subject.dates).to eq([{ 'date' => '2020-04-08', 'dateType' => 'Issued' }, + { 'date' => '2020-06-16T23:13:36Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2020') + expect(subject.publisher).to eq('Georg Thieme Verlag KG') end - it "journal article with" do - input = "https://doi.org/10.1111/nph.14619" - subject = Briard::Metadata.new(input: input) + it 'journal article with' do + input = 'https://doi.org/10.1111/nph.14619' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1111/nph.14619") - expect(subject.url).to eq("https://onlinelibrary.wiley.com/doi/10.1111/nph.14619") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1111/nph.14619') + expect(subject.url).to eq('https://onlinelibrary.wiley.com/doi/10.1111/nph.14619') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(3) - expect(subject.creators.first).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-4156-3761", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Dissmeyer, Nico", "givenName"=>"Nico", "familyName"=>"Dissmeyer", "affiliation" => [{"name"=>"Independent Junior Research Group on Protein Recognition and Degradation; Leibniz Institute of Plant Biochemistry (IPB); Weinberg 3 Halle (Saale) D-06120 Germany"}, {"name"=>"ScienceCampus Halle - Plant-based Bioeconomy; Betty-Heimann-Strasse 3 Halle (Saale) D-06120 Germany"}]) - expect(subject.titles).to eq([{"title"=>"Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway"}]) - expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}, {"rightsUri"=>"http://onlinelibrary.wiley.com/termsAndConditions#vor"}]) - expect(subject.dates).to include({"date"=>"2018-05", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("Wiley") + expect(subject.creators.first).to eq('nameType' => 'Personal', + 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0002-4156-3761', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Dissmeyer, Nico', 'givenName' => 'Nico', 'familyName' => 'Dissmeyer', 'affiliation' => [{ 'name' => 'Independent Junior Research Group on Protein Recognition and Degradation; Leibniz Institute of Plant Biochemistry (IPB); Weinberg 3 Halle (Saale) D-06120 Germany' }, { 'name' => 'ScienceCampus Halle - Plant-based Bioeconomy; Betty-Heimann-Strasse 3 Halle (Saale) D-06120 Germany' }]) + expect(subject.titles).to eq([{ 'title' => 'Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway' }]) + expect(subject.rights_list).to eq([ + { 'rightsUri' => 'http://doi.wiley.com/10.1002/tdm_license_1.1' }, { 'rightsUri' => 'http://onlinelibrary.wiley.com/termsAndConditions#vor' } + ]) + expect(subject.dates).to include({ 'date' => '2018-05', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('Wiley') expect(subject.related_identifiers.length).to eq(49) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"0028-646X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1002/pmic.201400530", "relatedIdentifierType"=>"DOI", "relationType"=>"References") - expect(subject.container).to eq("firstPage"=>"929", "identifier"=>"0028-646X", "identifierType"=>"ISSN", "issue"=>"3", "lastPage"=>"935", "title"=>"New Phytologist", "type"=>"Journal", "volume"=>"218") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2018-08-03T11:45:49Z") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '0028-646X', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1002/pmic.201400530', + 'relatedIdentifierType' => 'DOI', 'relationType' => 'References') + expect(subject.container).to eq('firstPage' => '929', 'identifier' => '0028-646X', + 'identifierType' => 'ISSN', 'issue' => '3', 'lastPage' => '935', 'title' => 'New Phytologist', 'type' => 'Journal', 'volume' => '218') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2018-08-03T11:45:49Z') end - it "author literal" do - input = "https://doi.org/10.1038/ng.3834" - subject = Briard::Metadata.new(input: input) + it 'author literal' do + input = 'https://doi.org/10.1038/ng.3834' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1038/ng.3834") - expect(subject.url).to eq("http://www.nature.com/articles/ng.3834") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1038/ng.3834') + expect(subject.url).to eq('http://www.nature.com/articles/ng.3834') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(14) - expect(subject.creators.last).to eq("name"=>"GTEx Consortium", "nameType"=>"Organizational") - expect(subject.titles).to eq([{"title"=>"The impact of structural variation on human gene expression"}]) - expect(subject.dates).to include({"date"=>"2017-04-03", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2017") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2019-11-02T09:30:06Z") + expect(subject.creators.last).to eq('name' => 'GTEx Consortium', + 'nameType' => 'Organizational') + expect(subject.titles).to eq([{ 'title' => 'The impact of structural variation on human gene expression' }]) + expect(subject.dates).to include({ 'date' => '2017-04-03', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2017') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2019-11-02T09:30:06Z') end - it "affiliation is space" do - input = "https://doi.org/10.1177/0042098011428175" - subject = Briard::Metadata.new(input: input) + it 'affiliation is space' do + input = 'https://doi.org/10.1177/0042098011428175' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1177/0042098011428175") - expect(subject.url).to eq("http://journals.sagepub.com/doi/10.1177/0042098011428175") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1177/0042098011428175') + expect(subject.url).to eq('http://journals.sagepub.com/doi/10.1177/0042098011428175') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(1) - expect(subject.creators.first).to eq("affiliation"=>[{"name"=>"??"}], "familyName"=>"Petrovici", "givenName"=>"Norbert", "name"=>"Petrovici, Norbert", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Workers and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation"}]) - expect(subject.dates).to include({"date"=>"2011-12-22", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2011") - expect(subject.publisher).to eq("SAGE Publications") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2021-05-16T02:02:38Z") + expect(subject.creators.first).to eq('affiliation' => [{ 'name' => '??' }], + 'familyName' => 'Petrovici', 'givenName' => 'Norbert', 'name' => 'Petrovici, Norbert', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Workers and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation' }]) + expect(subject.dates).to include({ 'date' => '2011-12-22', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2011') + expect(subject.publisher).to eq('SAGE Publications') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2021-05-16T02:02:38Z') end - it "multiple issn" do - input = "https://doi.org/10.1007/978-3-642-34922-5_19" - subject = Briard::Metadata.new(input: input) + it 'multiple issn' do + input = 'https://doi.org/10.1007/978-3-642-34922-5_19' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1007/978-3-642-34922-5_19") - expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-34922-5_19") - expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter") + expect(subject.id).to eq('https://doi.org/10.1007/978-3-642-34922-5_19') + expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-642-34922-5_19') + expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter', + 'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter') expect(subject.creators.length).to eq(3) - expect(subject.creators.first).to eq("familyName"=>"Razib", "givenName"=>"Ali", "name"=>"Razib, Ali", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Log-Domain Arithmetic for High-Speed Fuzzy Control on a Field-Programmable Gate Array"}]) - expect(subject.dates).to include({"date"=>"2013", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2013") - expect(subject.publisher).to eq("Springer Science and Business Media LLC") - expect(subject.container).to eq("identifier"=>"1860-0808", "identifierType"=>"ISSN", "title"=>"Studies in Fuzziness and Soft Computing", "type"=>"Book Series") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2012-10-31T16:15:44Z") + expect(subject.creators.first).to eq('familyName' => 'Razib', 'givenName' => 'Ali', + 'name' => 'Razib, Ali', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Log-Domain Arithmetic for High-Speed Fuzzy Control on a Field-Programmable Gate Array' }]) + expect(subject.dates).to include({ 'date' => '2013', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2013') + expect(subject.publisher).to eq('Springer Science and Business Media LLC') + expect(subject.container).to eq('identifier' => '1860-0808', 'identifierType' => 'ISSN', + 'title' => 'Studies in Fuzziness and Soft Computing', 'type' => 'Book Series') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2012-10-31T16:15:44Z') end - it "article id as page number" do - input = "https://doi.org/10.1103/physrevlett.120.117701" - subject = Briard::Metadata.new(input: input) + it 'article id as page number' do + input = 'https://doi.org/10.1103/physrevlett.120.117701' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.1103/physrevlett.120.117701") - expect(subject.url).to eq("https://link.aps.org/doi/10.1103/PhysRevLett.120.117701") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.id).to eq('https://doi.org/10.1103/physrevlett.120.117701') + expect(subject.url).to eq('https://link.aps.org/doi/10.1103/PhysRevLett.120.117701') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.length).to eq(5) - expect(subject.creators.first).to eq("familyName"=>"Marrazzo", "givenName"=>"Antimo", "name"=>"Marrazzo, Antimo", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator"}]) - expect(subject.dates).to include({"date"=>"2018-03-13", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("American Physical Society (APS)") - expect(subject.container).to eq("firstPage" => "117701", "identifier"=>"1079-7114", "identifierType"=>"ISSN", "issue"=>"11", "title"=>"Physical Review Letters", "type"=>"Journal", "volume"=>"120") - expect(subject.agency).to eq("crossref") - expect(subject.date_registered).to eq("2018-03-13T15:18:48Z") + expect(subject.creators.first).to eq('familyName' => 'Marrazzo', 'givenName' => 'Antimo', + 'name' => 'Marrazzo, Antimo', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator' }]) + expect(subject.dates).to include({ 'date' => '2018-03-13', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('American Physical Society (APS)') + expect(subject.container).to eq('firstPage' => '117701', 'identifier' => '1079-7114', + 'identifierType' => 'ISSN', 'issue' => '11', 'title' => 'Physical Review Letters', 'type' => 'Journal', 'volume' => '120') + expect(subject.agency).to eq('crossref') + expect(subject.date_registered).to eq('2018-03-13T15:18:48Z') end - it "posted content copernicus" do - input = "https://doi.org/10.5194/CP-2020-95" - subject = Briard::Metadata.new(input: input) + it 'posted content copernicus' do + input = 'https://doi.org/10.5194/CP-2020-95' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.url).to eq("https://cp.copernicus.org/preprints/cp-2020-95/cp-2020-95.pdf") - expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Preprint", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle") + expect(subject.url).to eq('https://cp.copernicus.org/preprints/cp-2020-95/cp-2020-95.pdf') + expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal', + 'resourceType' => 'PostedContent', 'resourceTypeGeneral' => 'Preprint', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle') expect(subject.creators.count).to eq(6) - expect(subject.creators.first).to eq("nameType" => "Personal", "familyName" => "Shao", - "givenName" => "Jun", - "name" => "Shao, Jun", - "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0001-6130-6474", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}]) - expect(subject.titles).to eq([{"title"=>"The Atmospheric Bridge Communicated the ??&lt;sup&gt;13&lt;/sup&gt;C Decline during the Last Deglaciation to the Global Upper Ocean"}]) - expect(subject.id).to eq("https://doi.org/10.5194/cp-2020-95") - expect(subject.identifiers).to be_empty - expect(subject.descriptions.first["description"]).to start_with("Abstract. During the early last glacial termination") - expect(subject.dates).to include({"date"=>"2020-07-28", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2020") - expect(subject.publisher).to eq("Copernicus GmbH") - expect(subject.agency).to eq("crossref") + expect(subject.creators.first).to eq('nameType' => 'Personal', 'familyName' => 'Shao', + 'givenName' => 'Jun', + 'name' => 'Shao, Jun', + 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0001-6130-6474', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }]) + expect(subject.titles).to eq([{ 'title' => 'The Atmospheric Bridge Communicated the ??&lt;sup&gt;13&lt;/sup&gt;C Decline during the Last Deglaciation to the Global Upper Ocean' }]) + expect(subject.id).to eq('https://doi.org/10.5194/cp-2020-95') + expect(subject.identifiers.empty?).to be(true) + expect(subject.descriptions.first['description']).to start_with('Abstract. During the early last glacial termination') + expect(subject.dates).to include({ 'date' => '2020-07-28', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2020') + expect(subject.publisher).to eq('Copernicus GmbH') + expect(subject.agency).to eq('crossref') end - it "book oup" do - input = "10.1093/oxfordhb/9780198746140.013.5" - subject = Briard::Metadata.new(input: input) + it 'book oup' do + input = '10.1093/oxfordhb/9780198746140.013.5' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.url).to eq("https://academic.oup.com/edited-volume/28081/chapter/212116415") - expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book") + expect(subject.url).to eq('https://academic.oup.com/edited-volume/28081/chapter/212116415') + expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book', + 'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book') expect(subject.creators.count).to eq(1) - expect(subject.creators.first).to eq("familyName"=>"Clayton", "givenName"=>"Barbra R.", "name"=>"Clayton, Barbra R.", "nameType"=>"Personal") + expect(subject.creators.first).to eq('familyName' => 'Clayton', 'givenName' => 'Barbra R.', + 'name' => 'Clayton, Barbra R.', 'nameType' => 'Personal') expect(subject.contributors.count).to eq(2) - expect(subject.contributors.first).to eq("contributorType"=>"Editor", "familyName"=>"Cozort", "givenName"=>"Daniel", "name"=>"Cozort, Daniel", "nameType"=>"Personal") - expect(subject.titles).to eq([{"title"=>"The Changing Way of the Bodhisattva"}]) - expect(subject.id).to eq("https://doi.org/10.1093/oxfordhb/9780198746140.013.5") - expect(subject.identifiers).to be_empty - expect(subject.descriptions.first["description"]).to start_with("This chapter explores the nature of the connections") - expect(subject.dates).to include({"date"=>"2018-04-05", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("Oxford University Press (OUP)") - expect(subject.agency).to eq("crossref") + expect(subject.contributors.first).to eq('contributorType' => 'Editor', 'familyName' => 'Cozort', + 'givenName' => 'Daniel', 'name' => 'Cozort, Daniel', 'nameType' => 'Personal') + expect(subject.titles).to eq([{ 'title' => 'The Changing Way of the Bodhisattva' }]) + expect(subject.id).to eq('https://doi.org/10.1093/oxfordhb/9780198746140.013.5') + expect(subject.identifiers.empty?).to be(true) + expect(subject.descriptions.first['description']).to start_with('This chapter explores the nature of the connections') + expect(subject.dates).to include({ 'date' => '2018-04-05', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('Oxford University Press (OUP)') + expect(subject.agency).to eq('crossref') end - it "report osti" do - input = "10.2172/972169" - subject = Briard::Metadata.new(input: input) + it 'report osti' do + input = '10.2172/972169' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.url).to eq("http://www.osti.gov/servlets/purl/972169-1QXROM/") - expect(subject.types).to eq("bibtex"=>"techreport", "citeproc"=>"report", "resourceType"=>"Report", "resourceTypeGeneral"=>"Report", "ris"=>"RPRT", "schemaOrg"=>"Report") + expect(subject.url).to eq('http://www.osti.gov/servlets/purl/972169-1QXROM/') + expect(subject.types).to eq('bibtex' => 'techreport', 'citeproc' => 'report', + 'resourceType' => 'Report', 'resourceTypeGeneral' => 'Report', 'ris' => 'RPRT', 'schemaOrg' => 'Report') expect(subject.creators.count).to eq(4) - expect(subject.creators.first).to eq("familyName"=>"Denholm", "givenName"=>"P.", "name"=>"Denholm, P.", "nameType"=>"Personal") + expect(subject.creators.first).to eq('familyName' => 'Denholm', 'givenName' => 'P.', + 'name' => 'Denholm, P.', 'nameType' => 'Personal') expect(subject.contributors.count).to eq(0) - expect(subject.titles).to eq([{"title"=>"Role of Energy Storage with Renewable Electricity Generation"}]) - expect(subject.id).to eq("https://doi.org/10.2172/972169") - expect(subject.identifiers).to eq( [{"identifier"=>"NREL/TP-6A2-47187", "identifierType"=>"report-number"}, {"identifier"=>"972169", "identifierType"=>"sequence-number"}]) - expect(subject.descriptions).to be_empty - expect(subject.dates).to include({"date"=>"2010-01-01", "dateType"=>"Issued"}) - expect(subject.publication_year).to eq("2010") - expect(subject.publisher).to eq("Office of Scientific and Technical Information (OSTI)") - expect(subject.agency).to eq("crossref") + expect(subject.titles).to eq([{ 'title' => 'Role of Energy Storage with Renewable Electricity Generation' }]) + expect(subject.id).to eq('https://doi.org/10.2172/972169') + expect(subject.identifiers).to eq([ + { 'identifier' => 'NREL/TP-6A2-47187', + 'identifierType' => 'report-number' }, { 'identifier' => '972169', 'identifierType' => 'sequence-number' } + ]) + expect(subject.descriptions.empty?).to be(true) + expect(subject.dates).to include({ 'date' => '2010-01-01', 'dateType' => 'Issued' }) + expect(subject.publication_year).to eq('2010') + expect(subject.publisher).to eq('Office of Scientific and Technical Information (OSTI)') + expect(subject.agency).to eq('crossref') end - it "journal issue" do - input = "https://doi.org/10.6002/ect.2015.0371" - subject = Briard::Metadata.new(input: input) + it 'journal issue' do + input = 'https://doi.org/10.6002/ect.2015.0371' + subject = described_class.new(input: input) expect(subject.valid?).to be true - expect(subject.id).to eq("https://doi.org/10.6002/ect.2015.0371") - expect(subject.url).to eq("http://ectrx.org/forms/ectrxcontentshow.php?doi_id=10.6002/ect.2015.0371") - expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"JournalIssue", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"PublicationIssue") - expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}]) - expect(subject.titles).to eq([{"title"=>":(unav)"}]) - expect(subject.dates).to eq([{"date"=>"2018-10", "dateType"=>"Issued"}, {"date"=>"2018-10-03T12:09:12Z", "dateType"=>"Updated"}]) - expect(subject.publication_year).to eq("2018") - expect(subject.publisher).to eq("Baskent University") + expect(subject.id).to eq('https://doi.org/10.6002/ect.2015.0371') + expect(subject.url).to eq('http://ectrx.org/forms/ectrxcontentshow.php?doi_id=10.6002/ect.2015.0371') + expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal', + 'resourceType' => 'JournalIssue', 'resourceTypeGeneral' => 'Text', 'ris' => 'JOUR', 'schemaOrg' => 'PublicationIssue') + expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }]) + expect(subject.titles).to eq([{ 'title' => ':(unav)' }]) + expect(subject.dates).to eq([{ 'date' => '2018-10', 'dateType' => 'Issued' }, + { 'date' => '2018-10-03T12:09:12Z', 'dateType' => 'Updated' }]) + expect(subject.publication_year).to eq('2018') + expect(subject.publisher).to eq('Baskent University') expect(subject.related_identifiers.length).to eq(2) - expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2146-8427", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection") - expect(subject.container).to eq("identifier"=>"2146-8427", "identifierType"=>"ISSN", "issue"=>"5", "title"=>"Experimental and Clinical Transplantation", "type"=>"Journal", "volume"=>"16") - expect(subject.agency).to eq("crossref") + expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '2146-8427', + 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection') + expect(subject.container).to eq('identifier' => '2146-8427', 'identifierType' => 'ISSN', + 'issue' => '5', 'title' => 'Experimental and Clinical Transplantation', 'type' => 'Journal', 'volume' => '16') + expect(subject.agency).to eq('crossref') end - it "not found error" do - input = "https://doi.org/10.7554/elife.01567x" - subject = Briard::Metadata.new(input: input) + it 'not found error' do + input = 'https://doi.org/10.7554/elife.01567x' + subject = described_class.new(input: input) expect(subject.valid?).to be false - expect(subject.id).to eq("https://doi.org/10.7554/elife.01567x") - expect(subject.doi).to eq("10.7554/elife.01567x") - expect(subject.agency).to eq("crossref") - expect(subject.state).to eq("not_found") + expect(subject.id).to eq('https://doi.org/10.7554/elife.01567x') + expect(subject.doi).to eq('10.7554/elife.01567x') + expect(subject.agency).to eq('crossref') + expect(subject.state).to eq('not_found') end end end