briard 2.4.2 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +72 -0
  3. data/.github/workflows/rubocop.yml +50 -0
  4. data/.rubocop.yml +144 -620
  5. data/.rubocop_todo.yml +76 -0
  6. data/CHANGELOG.md +18 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +40 -6
  9. data/Rakefile +1 -1
  10. data/{bolognese.gemspec → briard.gemspec} +46 -39
  11. data/lib/briard/array.rb +2 -2
  12. data/lib/briard/author_utils.rb +79 -71
  13. data/lib/briard/cli.rb +12 -13
  14. data/lib/briard/crossref_utils.rb +73 -61
  15. data/lib/briard/datacite_utils.rb +132 -106
  16. data/lib/briard/doi_utils.rb +10 -10
  17. data/lib/briard/metadata.rb +96 -106
  18. data/lib/briard/metadata_utils.rb +87 -78
  19. data/lib/briard/readers/bibtex_reader.rb +65 -65
  20. data/lib/briard/readers/cff_reader.rb +88 -70
  21. data/lib/briard/readers/citeproc_reader.rb +90 -84
  22. data/lib/briard/readers/codemeta_reader.rb +68 -50
  23. data/lib/briard/readers/crosscite_reader.rb +2 -2
  24. data/lib/briard/readers/crossref_reader.rb +249 -210
  25. data/lib/briard/readers/datacite_json_reader.rb +3 -3
  26. data/lib/briard/readers/datacite_reader.rb +225 -189
  27. data/lib/briard/readers/npm_reader.rb +49 -42
  28. data/lib/briard/readers/ris_reader.rb +82 -80
  29. data/lib/briard/readers/schema_org_reader.rb +182 -159
  30. data/lib/briard/string.rb +1 -1
  31. data/lib/briard/utils.rb +4 -4
  32. data/lib/briard/version.rb +3 -1
  33. data/lib/briard/whitelist_scrubber.rb +11 -4
  34. data/lib/briard/writers/bibtex_writer.rb +14 -8
  35. data/lib/briard/writers/cff_writer.rb +33 -26
  36. data/lib/briard/writers/codemeta_writer.rb +19 -15
  37. data/lib/briard/writers/csv_writer.rb +6 -4
  38. data/lib/briard/writers/datacite_json_writer.rb +8 -2
  39. data/lib/briard/writers/jats_writer.rb +33 -28
  40. data/lib/briard/writers/rdf_xml_writer.rb +1 -1
  41. data/lib/briard/writers/ris_writer.rb +30 -18
  42. data/lib/briard/writers/turtle_writer.rb +1 -1
  43. data/lib/briard.rb +6 -6
  44. data/rubocop.sarif +0 -0
  45. data/spec/array_spec.rb +5 -5
  46. data/spec/author_utils_spec.rb +151 -132
  47. data/spec/datacite_utils_spec.rb +135 -83
  48. data/spec/doi_utils_spec.rb +168 -164
  49. data/spec/find_from_format_spec.rb +69 -69
  50. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/onlies_keep_specific_tags.yml +65 -0
  51. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/removes_a_tags.yml +65 -0
  52. data/spec/metadata_spec.rb +91 -90
  53. data/spec/readers/bibtex_reader_spec.rb +43 -38
  54. data/spec/readers/cff_reader_spec.rb +165 -153
  55. data/spec/readers/citeproc_reader_spec.rb +45 -40
  56. data/spec/readers/codemeta_reader_spec.rb +128 -115
  57. data/spec/readers/crosscite_reader_spec.rb +34 -24
  58. data/spec/readers/crossref_reader_spec.rb +1098 -939
  59. data/spec/readers/datacite_json_reader_spec.rb +53 -40
  60. data/spec/readers/datacite_reader_spec.rb +1541 -1337
  61. data/spec/readers/npm_reader_spec.rb +48 -43
  62. data/spec/readers/ris_reader_spec.rb +53 -47
  63. data/spec/readers/schema_org_reader_spec.rb +329 -267
  64. data/spec/spec_helper.rb +6 -5
  65. data/spec/utils_spec.rb +371 -347
  66. data/spec/writers/bibtex_writer_spec.rb +143 -143
  67. data/spec/writers/cff_writer_spec.rb +96 -90
  68. data/spec/writers/citation_writer_spec.rb +34 -33
  69. data/spec/writers/citeproc_writer_spec.rb +226 -224
  70. data/spec/writers/codemeta_writer_spec.rb +18 -16
  71. data/spec/writers/crosscite_writer_spec.rb +91 -73
  72. data/spec/writers/crossref_writer_spec.rb +99 -91
  73. data/spec/writers/csv_writer_spec.rb +70 -70
  74. data/spec/writers/datacite_json_writer_spec.rb +78 -68
  75. data/spec/writers/datacite_writer_spec.rb +417 -322
  76. data/spec/writers/jats_writer_spec.rb +177 -161
  77. data/spec/writers/rdf_xml_writer_spec.rb +68 -63
  78. data/spec/writers/ris_writer_spec.rb +162 -162
  79. data/spec/writers/turtle_writer_spec.rb +47 -47
  80. metadata +242 -166
  81. data/.github/workflows/release.yml +0 -47
@@ -3,92 +3,92 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Briard::Metadata, vcr: true do
6
- context "write metadata as csv" do
7
- it "with data citation" do
8
- input = "10.7554/eLife.01567"
9
- subject = Briard::Metadata.new(input: input, from: "crossref")
10
- csv = (subject.csv).parse_csv
6
+ context 'write metadata as csv' do
7
+ it 'with data citation' do
8
+ input = '10.7554/eLife.01567'
9
+ subject = described_class.new(input: input, from: 'crossref')
10
+ csv = subject.csv.parse_csv
11
11
 
12
- expect(csv[0]).to eq("10.7554/elife.01567")
13
- expect(csv[1]).to eq("https://elifesciences.org/articles/01567")
14
- expect(csv[2]).to eq("2018-08-23")
15
- expect(csv[3]).to eq("findable")
16
- expect(csv[4]).to eq("JournalArticle")
17
- expect(csv[5]).to eq("JournalArticle")
18
- expect(csv[6]).to eq("Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth")
19
- expect(csv[7]).to eq("Sankar, Martial and Nieminen, Kaisa and Ragni, Laura and Xenarios, Ioannis and Hardtke, Christian S")
20
- expect(csv[8]).to eq("eLife Sciences Publications, Ltd")
21
- expect(csv[9]).to eq("2014")
12
+ expect(csv[0]).to eq('10.7554/elife.01567')
13
+ expect(csv[1]).to eq('https://elifesciences.org/articles/01567')
14
+ expect(csv[2]).to eq('2018-08-23')
15
+ expect(csv[3]).to eq('findable')
16
+ expect(csv[4]).to eq('JournalArticle')
17
+ expect(csv[5]).to eq('JournalArticle')
18
+ expect(csv[6]).to eq('Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth')
19
+ expect(csv[7]).to eq('Sankar, Martial and Nieminen, Kaisa and Ragni, Laura and Xenarios, Ioannis and Hardtke, Christian S')
20
+ expect(csv[8]).to eq('eLife Sciences Publications, Ltd')
21
+ expect(csv[9]).to eq('2014')
22
22
  end
23
23
 
24
- it "with pages" do
25
- input = "https://doi.org/10.1155/2012/291294"
26
- subject = Briard::Metadata.new(input: input, from: "crossref")
27
- csv = (subject.csv).parse_csv
24
+ it 'with pages' do
25
+ input = 'https://doi.org/10.1155/2012/291294'
26
+ subject = described_class.new(input: input, from: 'crossref')
27
+ csv = subject.csv.parse_csv
28
28
 
29
- expect(csv[0]).to eq("10.1155/2012/291294")
30
- expect(csv[1]).to eq("http://www.hindawi.com/journals/pm/2012/291294/")
31
- expect(csv[2]).to eq("2016-08-02")
32
- expect(csv[3]).to eq("findable")
33
- expect(csv[4]).to eq("JournalArticle")
34
- expect(csv[5]).to eq("JournalArticle")
35
- expect(csv[6]).to eq("Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers")
36
- expect(csv[7]).to eq("Thanassi, Wendy and Noda, Art and Hernandez, Beatriz and Newell, Jeffery and Terpeluk, Paul and Marder, David and Yesavage, Jerome A.")
37
- expect(csv[8]).to eq("Hindawi Limited")
38
- expect(csv[9]).to eq("2012")
29
+ expect(csv[0]).to eq('10.1155/2012/291294')
30
+ expect(csv[1]).to eq('http://www.hindawi.com/journals/pm/2012/291294/')
31
+ expect(csv[2]).to eq('2016-08-02')
32
+ expect(csv[3]).to eq('findable')
33
+ expect(csv[4]).to eq('JournalArticle')
34
+ expect(csv[5]).to eq('JournalArticle')
35
+ expect(csv[6]).to eq('Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers')
36
+ expect(csv[7]).to eq('Thanassi, Wendy and Noda, Art and Hernandez, Beatriz and Newell, Jeffery and Terpeluk, Paul and Marder, David and Yesavage, Jerome A.')
37
+ expect(csv[8]).to eq('Hindawi Limited')
38
+ expect(csv[9]).to eq('2012')
39
39
  end
40
40
 
41
- it "text" do
42
- input = "https://doi.org/10.3204/desy-2014-01645"
43
- subject = Briard::Metadata.new(input: input, from: "datacite")
41
+ it 'text' do
42
+ input = 'https://doi.org/10.3204/desy-2014-01645'
43
+ subject = described_class.new(input: input, from: 'datacite')
44
44
 
45
45
  expect(subject.valid?).to be true
46
- csv = (subject.csv).parse_csv
46
+ csv = subject.csv.parse_csv
47
47
 
48
- expect(csv[0]).to eq("10.3204/desy-2014-01645")
49
- expect(csv[1]).to eq("http://bib-pubdb1.desy.de/record/166827")
50
- expect(csv[2]).to eq("2018-01-25")
51
- expect(csv[3]).to eq("findable")
52
- expect(csv[4]).to eq("Text")
53
- expect(csv[5]).to eq("Dissertation")
54
- expect(csv[6]).to eq("Dynamics of colloids in molecular glass forming liquids studied via X-ray photon correlation spectroscopy")
55
- expect(csv[7]).to eq("Conrad, Heiko")
56
- expect(csv[9]).to eq("2014")
48
+ expect(csv[0]).to eq('10.3204/desy-2014-01645')
49
+ expect(csv[1]).to eq('http://bib-pubdb1.desy.de/record/166827')
50
+ expect(csv[2]).to eq('2018-01-25')
51
+ expect(csv[3]).to eq('findable')
52
+ expect(csv[4]).to eq('Text')
53
+ expect(csv[5]).to eq('Dissertation')
54
+ expect(csv[6]).to eq('Dynamics of colloids in molecular glass forming liquids studied via X-ray photon correlation spectroscopy')
55
+ expect(csv[7]).to eq('Conrad, Heiko')
56
+ expect(csv[9]).to eq('2014')
57
57
  end
58
58
 
59
- it "climate data" do
60
- input = "https://doi.org/10.5067/altcy-tj122"
61
- subject = Briard::Metadata.new(input: input, from: "datacite")
59
+ it 'climate data' do
60
+ input = 'https://doi.org/10.5067/altcy-tj122'
61
+ subject = described_class.new(input: input, from: 'datacite')
62
62
  expect(subject.valid?).to be true
63
- csv = (subject.csv).parse_csv
63
+ csv = subject.csv.parse_csv
64
64
 
65
- expect(csv[0]).to eq("10.5067/altcy-tj122")
66
- expect(csv[1]).to eq("http://podaac.jpl.nasa.gov/dataset/MERGED_TP_J1_OSTM_OST_CYCLES_V2")
67
- expect(csv[2]).to eq("2014-01-15")
68
- expect(csv[3]).to eq("findable")
69
- expect(csv[4]).to eq("Dataset")
70
- expect(csv[5]).to eq("Dataset")
71
- expect(csv[6]).to eq("Integrated Multi-Mission Ocean Altimeter Data for Climate Research Version 2")
72
- expect(csv[7]).to eq("{GSFC}")
73
- expect(csv[8]).to eq("NASA Physical Oceanography DAAC")
74
- expect(csv[9]).to eq("2012")
65
+ expect(csv[0]).to eq('10.5067/altcy-tj122')
66
+ expect(csv[1]).to eq('http://podaac.jpl.nasa.gov/dataset/MERGED_TP_J1_OSTM_OST_CYCLES_V2')
67
+ expect(csv[2]).to eq('2014-01-15')
68
+ expect(csv[3]).to eq('findable')
69
+ expect(csv[4]).to eq('Dataset')
70
+ expect(csv[5]).to eq('Dataset')
71
+ expect(csv[6]).to eq('Integrated Multi-Mission Ocean Altimeter Data for Climate Research Version 2')
72
+ expect(csv[7]).to eq('{GSFC}')
73
+ expect(csv[8]).to eq('NASA Physical Oceanography DAAC')
74
+ expect(csv[9]).to eq('2012')
75
75
  end
76
76
 
77
- it "maremma" do
78
- input = "https://github.com/datacite/maremma"
79
- subject = Briard::Metadata.new(input: input, from: "codemeta")
80
- csv = (subject.csv).parse_csv
77
+ it 'maremma' do
78
+ input = 'https://github.com/datacite/maremma'
79
+ subject = described_class.new(input: input, from: 'codemeta')
80
+ csv = subject.csv.parse_csv
81
81
 
82
- expect(csv[0]).to eq("10.5438/qeg0-3gm3")
83
- expect(csv[1]).to eq("https://github.com/datacite/maremma")
84
- expect(csv[2]).to be_nil
85
- expect(csv[3]).to eq("findable")
86
- expect(csv[4]).to eq("Software")
87
- expect(csv[5]).to be_nil
88
- expect(csv[6]).to eq("Maremma: a Ruby library for simplified network calls")
89
- expect(csv[7]).to eq("Fenner, Martin")
90
- expect(csv[8]).to eq("DataCite")
91
- expect(csv[9]).to eq("2017")
82
+ expect(csv[0]).to eq('10.5438/qeg0-3gm3')
83
+ expect(csv[1]).to eq('https://github.com/datacite/maremma')
84
+ expect(csv[2].nil?).to be(true)
85
+ expect(csv[3]).to eq('findable')
86
+ expect(csv[4]).to eq('Software')
87
+ expect(csv[5].nil?).to be(true)
88
+ expect(csv[6]).to eq('Maremma: a Ruby library for simplified network calls')
89
+ expect(csv[7]).to eq('Fenner, Martin')
90
+ expect(csv[8]).to eq('DataCite')
91
+ expect(csv[9]).to eq('2017')
92
92
  end
93
93
  end
94
94
  end
@@ -3,94 +3,104 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Briard::Metadata, vcr: true do
6
- context "write metadata as datacite json" do
7
- it "with data citation" do
8
- input = "10.7554/eLife.01567"
9
- subject = Briard::Metadata.new(input: input, from: "crossref")
6
+ context 'write metadata as datacite json' do
7
+ it 'with data citation' do
8
+ input = '10.7554/eLife.01567'
9
+ subject = described_class.new(input: input, from: 'crossref')
10
10
  datacite = JSON.parse(subject.datacite_json)
11
- expect(datacite.fetch("url")).to eq("https://elifesciences.org/articles/01567")
12
- expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
13
- expect(datacite.fetch("titles")).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
14
- expect(datacite.fetch("relatedIdentifiers").length).to eq(28)
15
- expect(datacite.fetch("relatedIdentifiers").first).to eq("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
16
- expect(datacite.fetch("rightsList")).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
17
- "rightsIdentifier"=>"cc-by-3.0",
18
- "rightsIdentifierScheme"=>"SPDX",
19
- "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
20
- "schemeUri"=>"https://spdx.org/licenses/"}])
11
+ expect(datacite.fetch('url')).to eq('https://elifesciences.org/articles/01567')
12
+ expect(datacite.fetch('types')).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
13
+ 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
14
+ expect(datacite.fetch('titles')).to eq([{ 'title' => 'Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth' }])
15
+ expect(datacite.fetch('relatedIdentifiers').length).to eq(28)
16
+ expect(datacite.fetch('relatedIdentifiers').first).to eq('relatedIdentifier' => '2050-084X',
17
+ 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
18
+ expect(datacite.fetch('rightsList')).to eq([{ 'rights' => 'Creative Commons Attribution 3.0 Unported',
19
+ 'rightsIdentifier' => 'cc-by-3.0',
20
+ 'rightsIdentifierScheme' => 'SPDX',
21
+ 'rightsUri' => 'https://creativecommons.org/licenses/by/3.0/legalcode',
22
+ 'schemeUri' => 'https://spdx.org/licenses/' }])
21
23
  end
22
24
 
23
- it "with ORCID ID" do
24
- input = "https://doi.org/10.1155/2012/291294"
25
- subject = Briard::Metadata.new(input: input, from: "crossref")
25
+ it 'with ORCID ID' do
26
+ input = 'https://doi.org/10.1155/2012/291294'
27
+ subject = described_class.new(input: input, from: 'crossref')
26
28
  datacite = JSON.parse(subject.datacite_json)
27
- expect(datacite.fetch("url")).to eq("http://www.hindawi.com/journals/pm/2012/291294/")
28
- expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
29
- expect(datacite.fetch("creators").length).to eq(7)
30
- expect(datacite.fetch("creators").first).to eq("nameType"=>"Personal", "name"=>"Thanassi, Wendy", "givenName"=>"Wendy", "familyName"=>"Thanassi", "affiliation" => [{"name"=>"Department of Medicine, Veterans Affairs Palo Alto Health Care System, 3801 Miranda Avenue MC-, Palo Alto, CA 94304-1207, USA"}, {"name"=>"Occupational Health Strategic Health Care Group, Office of Public Health, Veterans Health Administration, Washington, DC 20006, USA"}, {"name"=>"Division of Emergency Medicine, Stanford University School of Medicine, Stanford, CA 94304, USA"}, {"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"}])
29
+ expect(datacite.fetch('url')).to eq('http://www.hindawi.com/journals/pm/2012/291294/')
30
+ expect(datacite.fetch('types')).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
31
+ 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
32
+ expect(datacite.fetch('creators').length).to eq(7)
33
+ expect(datacite.fetch('creators').first).to eq('nameType' => 'Personal',
34
+ 'name' => 'Thanassi, Wendy', 'givenName' => 'Wendy', 'familyName' => 'Thanassi', 'affiliation' => [{ 'name' => 'Department of Medicine, Veterans Affairs Palo Alto Health Care System, 3801 Miranda Avenue MC-, Palo Alto, CA 94304-1207, USA' }, { 'name' => 'Occupational Health Strategic Health Care Group, Office of Public Health, Veterans Health Administration, Washington, DC 20006, USA' }, { 'name' => 'Division of Emergency Medicine, Stanford University School of Medicine, Stanford, CA 94304, USA' }, { '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' }])
31
35
  end
32
36
 
33
- it "Crossref DOI" do
34
- input = fixture_path + "crossref.bib"
35
- subject = Briard::Metadata.new(input: input, from: "bibtex")
37
+ it 'Crossref DOI' do
38
+ input = "#{fixture_path}crossref.bib"
39
+ subject = described_class.new(input: input, from: 'bibtex')
36
40
  datacite = JSON.parse(subject.datacite_json)
37
- expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
38
- expect(datacite.fetch("titles")).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
39
- expect(datacite.dig("descriptions", 0, "description")).to start_with("Among various advantages, their small size makes model organisms preferred subjects of investigation.")
40
- expect(datacite.fetch("creators").length).to eq(5)
41
- expect(datacite.fetch("creators").first).to eq("nameType"=>"Personal", "name"=>"Sankar, Martial", "givenName"=>"Martial", "familyName"=>"Sankar")
41
+ expect(datacite.fetch('types')).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
42
+ 'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
43
+ expect(datacite.fetch('titles')).to eq([{ 'title' => 'Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth' }])
44
+ expect(datacite.dig('descriptions', 0,
45
+ 'description')).to start_with('Among various advantages, their small size makes model organisms preferred subjects of investigation.')
46
+ expect(datacite.fetch('creators').length).to eq(5)
47
+ expect(datacite.fetch('creators').first).to eq('nameType' => 'Personal',
48
+ 'name' => 'Sankar, Martial', 'givenName' => 'Martial', 'familyName' => 'Sankar')
42
49
  end
43
50
 
44
- it "BlogPosting Citeproc JSON" do
45
- input = fixture_path + "citeproc.json"
46
- subject = Briard::Metadata.new(input: input, from: "citeproc")
51
+ it 'BlogPosting Citeproc JSON' do
52
+ input = "#{fixture_path}citeproc.json"
53
+ subject = described_class.new(input: input, from: 'citeproc')
47
54
  datacite = JSON.parse(subject.datacite_json)
48
- expect(datacite.fetch("types")).to eq("bibtex"=>"article", "citeproc"=>"post-weblog", "resourceTypeGeneral"=>"Text", "ris"=>"GEN", "schemaOrg"=>"BlogPosting")
49
- expect(datacite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
50
- expect(datacite.dig("descriptions", 0, "description")).to start_with("Eating your own dog food")
51
- expect(datacite.fetch("creators")).to eq([{"familyName"=>"Fenner", "givenName"=>"Martin", "name"=>"Fenner, Martin"}])
55
+ expect(datacite.fetch('types')).to eq('bibtex' => 'article', 'citeproc' => 'post-weblog',
56
+ 'resourceTypeGeneral' => 'Text', 'ris' => 'GEN', 'schemaOrg' => 'BlogPosting')
57
+ expect(datacite.fetch('titles')).to eq([{ 'title' => 'Eating your own Dog Food' }])
58
+ expect(datacite.dig('descriptions', 0,
59
+ 'description')).to start_with('Eating your own dog food')
60
+ expect(datacite.fetch('creators')).to eq([{ 'familyName' => 'Fenner', 'givenName' => 'Martin',
61
+ 'name' => 'Fenner, Martin' }])
52
62
  end
53
63
 
54
- it "rdataone" do
55
- input = fixture_path + 'codemeta.json'
56
- subject = Briard::Metadata.new(input: input, from: "codemeta")
64
+ it 'rdataone' do
65
+ input = "#{fixture_path}codemeta.json"
66
+ subject = described_class.new(input: input, from: 'codemeta')
57
67
  datacite = JSON.parse(subject.datacite_json)
58
- expect(datacite.fetch("titles")).to eq([{"title"=>"R Interface to the DataONE REST API"}])
59
- expect(datacite.fetch("creators").length).to eq(3)
60
- expect(datacite.fetch("creators").first).to eq("affiliation"=>[{"name"=>"NCEAS"}], "nameType"=>"Personal", "name" => "Jones, Matt",
61
- "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "givenName"=>"Matt", "familyName"=>"Jones")
62
- expect(datacite.fetch("version")).to eq("2.0.0")
68
+ expect(datacite.fetch('titles')).to eq([{ 'title' => 'R Interface to the DataONE REST API' }])
69
+ expect(datacite.fetch('creators').length).to eq(3)
70
+ expect(datacite.fetch('creators').first).to eq('affiliation' => [{ 'name' => 'NCEAS' }], 'nameType' => 'Personal', 'name' => 'Jones, Matt',
71
+ 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-0077-4738', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'givenName' => 'Matt', 'familyName' => 'Jones')
72
+ expect(datacite.fetch('version')).to eq('2.0.0')
63
73
  end
64
74
 
65
- it "maremma" do
66
- input = "https://github.com/datacite/maremma"
67
- subject = Briard::Metadata.new(input: input, from: "codemeta")
75
+ it 'maremma' do
76
+ input = 'https://github.com/datacite/maremma'
77
+ subject = described_class.new(input: input, from: 'codemeta')
68
78
  datacite = JSON.parse(subject.datacite_json)
69
- expect(datacite.fetch("titles")).to eq([{"title"=>"Maremma: a Ruby library for simplified network calls"}])
70
- expect(datacite.fetch("creators")).to eq([{"affiliation"=>[{"name"=>"DataCite"}],
71
- "familyName"=>"Fenner",
72
- "givenName"=>"Martin",
73
- "name"=>"Fenner, Martin",
74
- "nameIdentifiers"=>
75
- [{"nameIdentifier"=>"https://orcid.org/0000-0003-0077-4738",
76
- "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],
77
- "nameType"=>"Personal"}])
79
+ expect(datacite.fetch('titles')).to eq([{ 'title' => 'Maremma: a Ruby library for simplified network calls' }])
80
+ expect(datacite.fetch('creators')).to eq([{ 'affiliation' => [{ 'name' => 'DataCite' }],
81
+ 'familyName' => 'Fenner',
82
+ 'givenName' => 'Martin',
83
+ 'name' => 'Fenner, Martin',
84
+ 'nameIdentifiers' =>
85
+ [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-0077-4738',
86
+ 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }],
87
+ 'nameType' => 'Personal' }])
78
88
  end
79
89
 
80
- it "from schema.org" do
81
- input = "https://blog.front-matter.io/posts/eating-your-own-dog-food/"
82
- subject = Briard::Metadata.new(input: input, from: "schema_org")
90
+ it 'from schema.org' do
91
+ input = 'https://blog.front-matter.io/posts/eating-your-own-dog-food/'
92
+ subject = described_class.new(input: input, from: 'schema_org')
83
93
  expect(subject.valid?).to be true
84
94
  datacite = JSON.parse(subject.datacite_json)
85
- expect(datacite.fetch("titles")).to eq([{"title"=>"Eating your own Dog Food"}])
86
- expect(datacite.fetch("creators")).to eq([{"affiliation"=>[],
87
- "familyName"=>"Fenner",
88
- "givenName"=>"Martin",
89
- "name"=>"Fenner, Martin",
90
- "nameIdentifiers"=>
91
- [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405",
92
- "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],
93
- "nameType"=>"Personal"}])
95
+ expect(datacite.fetch('titles')).to eq([{ 'title' => 'Eating your own Dog Food' }])
96
+ expect(datacite.fetch('creators')).to eq([{ 'affiliation' => [],
97
+ 'familyName' => 'Fenner',
98
+ 'givenName' => 'Martin',
99
+ 'name' => 'Fenner, Martin',
100
+ 'nameIdentifiers' =>
101
+ [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-1419-2405',
102
+ 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }],
103
+ 'nameType' => 'Personal' }])
94
104
  end
95
105
  end
96
106
  end