commonmeta-ruby 3.3.18 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +33 -29
- data/lib/commonmeta/crossref_utils.rb +20 -0
- data/lib/commonmeta/readers/json_feed_reader.rb +19 -1
- data/lib/commonmeta/schema_utils.rb +1 -1
- data/lib/commonmeta/version.rb +1 -1
- data/resources/{commonmeta_v0.9.2.json → commonmeta_v0.9.3.json} +32 -2
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blog_post_with_non-url_id.yml +84 -18
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blogger_post.yml +42 -14
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_author_name_suffix.yml +184 -55
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_doi.yml +76 -15
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_institutional_author.yml +33 -12
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_organizational_author.yml +44 -11
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_related_identifiers.yml +366 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_without_doi.yml +144 -11
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post.yml +42 -13
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post_with_anonymous_author.yml +17 -13
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/substack_post_with_broken_reference.yml +557 -262
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/syldavia_gazette_post_with_references.yml +76 -47
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/upstream_post_with_references.yml +303 -123
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post.yml +108 -12
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post_with_many_references.yml +3048 -441
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post_with_references.yml +178 -31
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post_with_tracking_code_on_url.yml +139 -17
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/another_schema_org_from_front-matter.yml +47 -48
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/journal_article.yml +5 -5
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml +7 -7
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_anonymous_author.yml +17 -13
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_doi.yml +108 -12
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_organizational_author.yml +44 -11
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_rogue_scholar_with_relations.yml +366 -0
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_from_upstream_blog.yml +200 -11
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_feed_item_with_references.yml +303 -123
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/posted_content.yml +16 -16
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/schema_org_from_another_science_blog.yml +17 -17
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/schema_org_from_front_matter.yml +111 -113
- data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/schema_org_from_upstream_blog.yml +64 -57
- data/spec/readers/json_feed_reader_spec.rb +85 -57
- data/spec/writers/crossref_xml_writer_spec.rb +76 -40
- metadata +6 -4
@@ -19,15 +19,15 @@ describe Commonmeta::Metadata, vcr: true do
|
|
19
19
|
expect(subject.titles).to eq([{ "title" => "Ten years and a million links" }])
|
20
20
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
21
21
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
22
|
-
expect(subject.date).to eq("published"=>"2023-05-31", "updated"=>"2023-05-31")
|
22
|
+
expect(subject.date).to eq("published" => "2023-05-31", "updated" => "2023-05-31")
|
23
23
|
expect(subject.descriptions.first["description"]).to start_with("As trailed on a Twitter thread last week I’ve been working on a manuscript describing the efforts to map taxonomic names to their original descriptions in the taxonomic literature.")
|
24
24
|
expect(subject.publisher).to eq("name" => "iPhylo")
|
25
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
25
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
26
26
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
27
|
-
"subject" => "FOS:
|
27
|
+
"subject" => "FOS: Computer and information sciences",
|
28
28
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
29
29
|
expect(subject.language).to eq("en")
|
30
|
-
expect(subject.container).to eq("identifier" => "https://iphylo.blogspot.com
|
30
|
+
expect(subject.container).to eq("identifier" => "https://iphylo.blogspot.com", "identifierType" => "URL", "title" => "iPhylo", "type" => "Periodical")
|
31
31
|
end
|
32
32
|
|
33
33
|
it "ghost post with doi" do
|
@@ -43,12 +43,37 @@ describe Commonmeta::Metadata, vcr: true do
|
|
43
43
|
expect(subject.titles).to eq([{ "title" => "Does it compose?" }])
|
44
44
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
45
45
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
46
|
-
expect(subject.date).to eq("published"=>"2023-05-16", "updated"=>"2023-06-18")
|
46
|
+
expect(subject.date).to eq("published" => "2023-05-16", "updated" => "2023-06-18")
|
47
47
|
expect(subject.descriptions.first["description"]).to start_with("One question I have increasingly asked myself in the past few years. Meaning Can I run this open source software using Docker containers and a Docker Compose file?")
|
48
48
|
expect(subject.publisher).to eq("name" => "Front Matter")
|
49
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
49
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
50
50
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
51
|
-
"subject" => "FOS:
|
51
|
+
"subject" => "FOS: Computer and information sciences",
|
52
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
53
|
+
expect(subject.language).to eq("en")
|
54
|
+
expect(subject.container).to eq("identifier" => "https://blog.front-matter.io", "identifierType" => "URL", "title" => "Front Matter", "type" => "Periodical")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "ghost post with related_identifiers" do
|
58
|
+
input = "https://rogue-scholar.org/api/posts/8a4de443-3347-4b82-b57d-e3c82b6485fc"
|
59
|
+
subject = described_class.new(input: input)
|
60
|
+
expect(subject.valid?).to be true
|
61
|
+
expect(subject.id).to eq("https://doi.org/10.53731/r79v4e1-97aq74v-ag578")
|
62
|
+
expect(subject.url).to eq("https://blog.front-matter.io/posts/differences-between-orcid-and-datacite-metadata")
|
63
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "8a4de443-3347-4b82-b57d-e3c82b6485fc", "alternateIdentifierType" => "UUID" }])
|
64
|
+
expect(subject.type).to eq("Article")
|
65
|
+
expect(subject.creators.length).to eq(1)
|
66
|
+
expect(subject.creators.first).to eq("id" => "https://orcid.org/0000-0003-1419-2405", "familyName" => "Fenner", "givenName" => "Martin", "type" => "Person")
|
67
|
+
expect(subject.titles).to eq([{ "title" => "Differences between ORCID and DataCite Metadata" }])
|
68
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
69
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
70
|
+
expect(subject.date).to eq("published" => "2015-09-18", "updated" => "2023-09-05")
|
71
|
+
expect(subject.descriptions.first["description"]).to start_with("One of the first tasks for DataCite in the European Commission-funded THOR project")
|
72
|
+
expect(subject.publisher).to eq("name" => "Front Matter")
|
73
|
+
expect(subject.related_identifiers).to eq([{ "id" => "https://doi.org/10.5438/bc11-cqw1", "type" => "IsIdenticalTo" }])
|
74
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
75
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
76
|
+
"subject" => "FOS: Computer and information sciences",
|
52
77
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
53
78
|
expect(subject.language).to eq("en")
|
54
79
|
expect(subject.container).to eq("identifier" => "https://blog.front-matter.io", "identifierType" => "URL", "title" => "Front Matter", "type" => "Periodical")
|
@@ -63,19 +88,20 @@ describe Commonmeta::Metadata, vcr: true do
|
|
63
88
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "c3095752-2af0-40a4-a229-3ceb7424bce2", "alternateIdentifierType" => "UUID" }])
|
64
89
|
expect(subject.type).to eq("Article")
|
65
90
|
expect(subject.creators.length).to eq(1)
|
66
|
-
expect(subject.creators.first).to eq("familyName" => "Sathe", "givenName" => "Tejas S.",
|
91
|
+
expect(subject.creators.first).to eq("familyName" => "Sathe", "givenName" => "Tejas S.",
|
92
|
+
"id" => "https://orcid.org/0000-0003-0449-4469", "type" => "Person")
|
67
93
|
expect(subject.titles).to eq([{ "title" => "The Residency Visual Abstract" }])
|
68
94
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
69
95
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
70
|
-
expect(subject.date).to eq("published"=>"2023-04-08", "updated"=>"2023-04-08")
|
96
|
+
expect(subject.date).to eq("published" => "2023-04-08", "updated" => "2023-04-08")
|
71
97
|
expect(subject.descriptions.first["description"]).to start_with("My prototype for a Residency Visual Abstract")
|
72
98
|
expect(subject.publisher).to eq("name" => "I.D.E.A.S.")
|
73
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
99
|
+
expect(subject.subjects).to eq([{ "subject" => "Clinical medicine" },
|
74
100
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
75
|
-
"subject" => "FOS:
|
101
|
+
"subject" => "FOS: Clinical medicine",
|
76
102
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
77
103
|
expect(subject.language).to eq("en")
|
78
|
-
expect(subject.container).to eq("identifier" => "https://www.ideasurg.pub
|
104
|
+
expect(subject.container).to eq("identifier" => "https://www.ideasurg.pub", "identifierType" => "URL", "title" => "I.D.E.A.S.", "type" => "Periodical")
|
79
105
|
end
|
80
106
|
|
81
107
|
it "ghost post with author name suffix" do
|
@@ -87,19 +113,20 @@ describe Commonmeta::Metadata, vcr: true do
|
|
87
113
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "153d65e1-f0e4-49a6-a969-33d2129800ba", "alternateIdentifierType" => "UUID" }])
|
88
114
|
expect(subject.type).to eq("Article")
|
89
115
|
expect(subject.creators.length).to eq(1)
|
90
|
-
expect(subject.creators.first).to eq("familyName" => "Sathe", "givenName" => "Tejas S.", "type" => "Person"
|
116
|
+
expect(subject.creators.first).to eq("familyName" => "Sathe", "givenName" => "Tejas S.", "type" => "Person",
|
117
|
+
"id" => "https://orcid.org/0000-0003-0449-4469")
|
91
118
|
expect(subject.titles).to eq([{ "title" => "How to Build an Academic Powerhouse: Let's Study Who's Doing it" }])
|
92
119
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
93
120
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
94
|
-
expect(subject.date).to eq("published"=>"2023-06-03", "updated"=>"2023-06-03")
|
121
|
+
expect(subject.date).to eq("published" => "2023-06-03", "updated" => "2023-06-03")
|
95
122
|
expect(subject.descriptions.first["description"]).to start_with("Students and residents aspiring for a career in academic surgery")
|
96
123
|
expect(subject.publisher).to eq("name" => "I.D.E.A.S.")
|
97
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
124
|
+
expect(subject.subjects).to eq([{ "subject" => "Clinical medicine" },
|
98
125
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
99
|
-
"subject" => "FOS:
|
126
|
+
"subject" => "FOS: Clinical medicine",
|
100
127
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
101
128
|
expect(subject.language).to eq("en")
|
102
|
-
expect(subject.container).to eq("identifier" => "https://www.ideasurg.pub
|
129
|
+
expect(subject.container).to eq("identifier" => "https://www.ideasurg.pub", "identifierType" => "URL", "title" => "I.D.E.A.S.", "type" => "Periodical")
|
103
130
|
expect(subject.references).to be_nil
|
104
131
|
end
|
105
132
|
|
@@ -117,13 +144,13 @@ describe Commonmeta::Metadata, vcr: true do
|
|
117
144
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
118
145
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
119
146
|
expect(subject.date).to eq("published" => "2023-02-01", "updated" => "2023-04-13")
|
120
|
-
expect(subject.descriptions.first["description"]).to start_with("Guinea worm disease reaches all-time low: only 13* human cases
|
147
|
+
expect(subject.descriptions.first["description"]).to start_with("<strong>Guinea worm disease reaches all-time low: only 13* human cases")
|
121
148
|
expect(subject.publisher).to eq("name" => "Syldavia Gazette")
|
122
149
|
expect(subject.subjects).to eq([{ "subject" => "Humanities" }, { "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf", "subject" => "FOS: Humanities", "subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
123
150
|
expect(subject.language).to eq("en")
|
124
151
|
expect(subject.container).to eq("identifier" => "https://syldavia-gazette.org", "identifierType" => "URL", "title" => "Syldavia Gazette", "type" => "Periodical")
|
125
152
|
expect(subject.references.length).to eq(5)
|
126
|
-
expect(subject.references[1]).to eq("doi"=>"https://doi.org/10.1126/science.adg7879", "key"=>"ref2", "publicationYear"=>"2023", "title"=>"ChatGPT is fun, but not an author")
|
153
|
+
expect(subject.references[1]).to eq("doi" => "https://doi.org/10.1126/science.adg7879", "key" => "ref2", "publicationYear" => "2023", "title" => "ChatGPT is fun, but not an author")
|
127
154
|
end
|
128
155
|
|
129
156
|
it "wordpress post" do
|
@@ -142,9 +169,9 @@ describe Commonmeta::Metadata, vcr: true do
|
|
142
169
|
expect(subject.date).to eq("published" => "2023-05-23", "updated" => "2023-05-23")
|
143
170
|
expect(subject.descriptions.first["description"]).to start_with("Die EU-Wissenschaftsministerien haben sich auf ihrer heutigen Sitzung in Brüssel unter dem Titel “Council conclusions on high-quality, transparent, open, trustworthy and equitable scholarly publishing”")
|
144
171
|
expect(subject.publisher).to eq("name" => "wisspub.net")
|
145
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
172
|
+
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
146
173
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
147
|
-
"subject" => "FOS:
|
174
|
+
"subject" => "FOS: Social sciences",
|
148
175
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
149
176
|
expect(subject.language).to eq("de")
|
150
177
|
expect(subject.container).to eq("identifier" => "https://wisspub.net", "identifierType" => "URL", "title" => "wisspub.net", "type" => "Periodical")
|
@@ -163,18 +190,18 @@ describe Commonmeta::Metadata, vcr: true do
|
|
163
190
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
164
191
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
165
192
|
expect(subject.date).to eq("published" => "2023-06-09", "updated" => "2023-06-09")
|
166
|
-
expect(subject.descriptions.first["description"]).to start_with("Haplocanthosaurus tibiae and dorsal vertebrae.")
|
193
|
+
expect(subject.descriptions.first["description"]).to start_with("<em>Haplocanthosaurus</em> tibiae and dorsal vertebrae.")
|
167
194
|
expect(subject.publisher).to eq("name" => "Sauropod Vertebra Picture of the Week")
|
168
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
195
|
+
expect(subject.subjects).to eq([{ "subject" => "Earth and related environmental sciences" },
|
169
196
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
170
|
-
"subject" => "FOS:
|
197
|
+
"subject" => "FOS: Earth and related environmental sciences",
|
171
198
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
172
199
|
expect(subject.language).to eq("en")
|
173
200
|
expect(subject.container).to eq("identifier" => "https://svpow.com", "identifierType" => "URL", "title" => "Sauropod Vertebra Picture of the Week", "type" => "Periodical")
|
174
201
|
expect(subject.references.length).to eq(3)
|
175
202
|
expect(subject.references.first).to eq("key" => "ref1", "url" => "https://sauroposeidon.files.wordpress.com/2010/04/foster-and-wedel-2014-haplocanthosaurus-from-snowmass-colorado.pdf")
|
176
203
|
end
|
177
|
-
|
204
|
+
|
178
205
|
it "wordpress post with tracking code on url" do
|
179
206
|
input = "https://rogue-scholar.org/api/posts/5d95d90d-ff59-4c8b-b7f8-44e6b45fd593"
|
180
207
|
subject = described_class.new(input: input)
|
@@ -183,19 +210,19 @@ describe Commonmeta::Metadata, vcr: true do
|
|
183
210
|
expect(subject.url).to eq("https://www.samuelmoore.org/2023/04/20/how-to-cultivate-good-closures-scaling-small-and-the-limits-of-openness")
|
184
211
|
expect(subject.type).to eq("Article")
|
185
212
|
expect(subject.creators.length).to eq(1)
|
186
|
-
expect(subject.creators.first).to eq("familyName"=>"Moore", "givenName"=>"Samuel", "id"=>"https://orcid.org/0000-0002-0504-2897", "type"=>"Person")
|
213
|
+
expect(subject.creators.first).to eq("familyName" => "Moore", "givenName" => "Samuel", "id" => "https://orcid.org/0000-0002-0504-2897", "type" => "Person")
|
187
214
|
expect(subject.titles).to eq([{ "title" => "How to cultivate good closures: ‘scaling small’ and the limits of openness" }])
|
188
215
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
189
216
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
190
|
-
expect(subject.date).to eq("published"=>"2023-04-20", "updated"=>"2023-06-19")
|
191
|
-
expect(subject.descriptions.first["description"]).to start_with("Text of a talk given to the COPIM end-of-project conference")
|
217
|
+
expect(subject.date).to eq("published" => "2023-04-20", "updated" => "2023-06-19")
|
218
|
+
expect(subject.descriptions.first["description"]).to start_with("<em>Text of a talk given to the COPIM end-of-project conference:")
|
192
219
|
expect(subject.publisher).to eq("name" => "Samuel Moore")
|
193
220
|
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
194
221
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
195
222
|
"subject" => "FOS: Social sciences",
|
196
223
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
197
224
|
expect(subject.language).to eq("en")
|
198
|
-
expect(subject.container).to eq("identifier" => "https://www.samuelmoore.org
|
225
|
+
expect(subject.container).to eq("identifier" => "https://www.samuelmoore.org", "identifierType" => "URL", "title" => "Samuel Moore", "type" => "Periodical")
|
199
226
|
expect(subject.references).to be_nil
|
200
227
|
end
|
201
228
|
|
@@ -207,19 +234,19 @@ describe Commonmeta::Metadata, vcr: true do
|
|
207
234
|
expect(subject.url).to eq("https://blog.oa.works/nature-features-oa-reports-work-putting-oa-policy-into-practice")
|
208
235
|
expect(subject.type).to eq("Article")
|
209
236
|
expect(subject.creators.length).to eq(1)
|
210
|
-
expect(subject.creators.first).to eq("name"=>"OA.Works", "type"=>"Organization")
|
237
|
+
expect(subject.creators.first).to eq("name" => "OA.Works", "type" => "Organization")
|
211
238
|
expect(subject.titles).to eq([{ "title" => "Nature features OA.Report's work putting OA policy into practice!" }])
|
212
239
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
213
240
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
214
|
-
expect(subject.date).to eq("published"=>"2023-01-24", "updated"=>"2023-01-24")
|
241
|
+
expect(subject.date).to eq("published" => "2023-01-24", "updated" => "2023-01-24")
|
215
242
|
expect(subject.descriptions.first["description"]).to start_with("After a couple of years of working to support institutions implementing their OA policies")
|
216
243
|
expect(subject.publisher).to eq("name" => "OA.Works Blog")
|
217
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
244
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
218
245
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
219
|
-
"subject" => "FOS:
|
246
|
+
"subject" => "FOS: Computer and information sciences",
|
220
247
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
221
248
|
expect(subject.language).to eq("en")
|
222
|
-
expect(subject.container).to eq("identifier" => "https://blog.oa.works
|
249
|
+
expect(subject.container).to eq("identifier" => "https://blog.oa.works", "identifierType" => "URL", "title" => "OA.Works Blog", "type" => "Periodical")
|
223
250
|
end
|
224
251
|
|
225
252
|
it "upstream post with references" do
|
@@ -236,7 +263,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
236
263
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
237
264
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
238
265
|
expect(subject.date).to eq("published" => "2023-04-18", "updated" => "2023-04-18")
|
239
|
-
expect(subject.descriptions.first["description"]).to start_with("Research software is a key part of most research today.
|
266
|
+
expect(subject.descriptions.first["description"]).to start_with("Research software is a key part of most research today.")
|
240
267
|
expect(subject.publisher).to eq("name" => "Upstream")
|
241
268
|
expect(subject.subjects).to eq([{ "subject" => "Humanities" },
|
242
269
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
@@ -257,19 +284,20 @@ describe Commonmeta::Metadata, vcr: true do
|
|
257
284
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "efdacb04-bcec-49d7-b689-ab3eab0634bf", "alternateIdentifierType" => "UUID" }])
|
258
285
|
expect(subject.type).to eq("Article")
|
259
286
|
expect(subject.creators.length).to eq(1)
|
260
|
-
expect(subject.creators.first).to eq("familyName" => "Karcher", "givenName" => "Sebastian",
|
287
|
+
expect(subject.creators.first).to eq("familyName" => "Karcher", "givenName" => "Sebastian",
|
288
|
+
"id" => "https://orcid.org/0000-0001-8249-7388", "type" => "Person")
|
261
289
|
expect(subject.titles).to eq([{ "title" => "Seeking Public Comment on CSL 1.0.2 Release" }])
|
262
290
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
263
291
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
264
292
|
expect(subject.date).to eq("published" => "2020-07-11", "updated" => "2020-07-11")
|
265
293
|
expect(subject.descriptions.first["description"]).to start_with("Over the past few months, Citation Style Language developers have worked to address a backlog of feature requests. This work will be reflected in two upcoming releases.")
|
266
294
|
expect(subject.publisher).to eq("name" => "Citation Style Language")
|
267
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
295
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
268
296
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
269
|
-
"subject" => "FOS:
|
297
|
+
"subject" => "FOS: Computer and information sciences",
|
270
298
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
271
299
|
expect(subject.language).to eq("en")
|
272
|
-
expect(subject.container).to eq("identifier" => "https://citationstyles.org
|
300
|
+
expect(subject.container).to eq("identifier" => "https://citationstyles.org", "identifierType" => "URL", "title" => "Citation Style Language", "type" => "Periodical")
|
273
301
|
end
|
274
302
|
|
275
303
|
it "ghost post with organizational author" do
|
@@ -281,11 +309,11 @@ describe Commonmeta::Metadata, vcr: true do
|
|
281
309
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "5561f8e4-2ff1-4186-a8d5-8dacb3afe414", "alternateIdentifierType" => "UUID" }])
|
282
310
|
expect(subject.type).to eq("Article")
|
283
311
|
expect(subject.creators.length).to eq(1)
|
284
|
-
expect(subject.creators.first).to eq("id"=>"https://ror.org/0342dzm54", "name"=>"Liberate Science", "type"=>"Organization")
|
312
|
+
expect(subject.creators.first).to eq("id" => "https://ror.org/0342dzm54", "name" => "Liberate Science", "type" => "Organization")
|
285
313
|
expect(subject.titles).to eq([{ "title" => "KU Leuven supports ResearchEquals" }])
|
286
314
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
287
315
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
288
|
-
expect(subject.date).to eq("published"=>"2023-05-09", "updated"=>"2023-05-09")
|
316
|
+
expect(subject.date).to eq("published" => "2023-05-09", "updated" => "2023-05-09")
|
289
317
|
expect(subject.descriptions.first["description"]).to start_with("KU Leuven is now an inaugural supporting member of ResearchEquals")
|
290
318
|
expect(subject.publisher).to eq("name" => "Liberate Science")
|
291
319
|
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
@@ -293,7 +321,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
293
321
|
"subject" => "FOS: Social sciences",
|
294
322
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
295
323
|
expect(subject.language).to eq("en")
|
296
|
-
expect(subject.container).to eq("identifier" => "https://libscie.org
|
324
|
+
expect(subject.container).to eq("identifier" => "https://libscie.org", "identifierType" => "URL", "title" => "Liberate Science", "type" => "Periodical")
|
297
325
|
expect(subject.references).to be_nil
|
298
326
|
end
|
299
327
|
|
@@ -306,19 +334,19 @@ describe Commonmeta::Metadata, vcr: true do
|
|
306
334
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "a163e340-5b3c-4736-9ab0-8c54fdff6a3c", "alternateIdentifierType" => "UUID" }])
|
307
335
|
expect(subject.type).to eq("Article")
|
308
336
|
expect(subject.creators.length).to eq(1)
|
309
|
-
expect(subject.creators.first).to eq("familyName"=>"Göbel", "givenName"=>"Mathias", "type"=>"Person")
|
337
|
+
expect(subject.creators.first).to eq("familyName" => "Göbel", "givenName" => "Mathias", "type" => "Person")
|
310
338
|
expect(subject.titles).to eq([{ "title" => "Welcome to the Lab" }])
|
311
339
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
312
340
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
313
|
-
expect(subject.date).to eq("published"=>"2017-01-01", "updated"=>"2017-01-01")
|
341
|
+
expect(subject.date).to eq("published" => "2017-01-01", "updated" => "2017-01-01")
|
314
342
|
expect(subject.descriptions.first["description"]).to start_with("Welcome everyone!")
|
315
343
|
expect(subject.publisher).to eq("name" => "lab.sub - Articles")
|
316
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
344
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
317
345
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
318
|
-
"subject" => "FOS:
|
346
|
+
"subject" => "FOS: Computer and information sciences",
|
319
347
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
320
348
|
expect(subject.language).to eq("en")
|
321
|
-
expect(subject.container).to eq("identifier" => "https://lab.sub.uni-goettingen.de
|
349
|
+
expect(subject.container).to eq("identifier" => "https://lab.sub.uni-goettingen.de", "identifierType" => "URL", "title" => "lab.sub - Articles", "type" => "Periodical")
|
322
350
|
expect(subject.references).to be_nil
|
323
351
|
end
|
324
352
|
|
@@ -331,11 +359,11 @@ describe Commonmeta::Metadata, vcr: true do
|
|
331
359
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "1898d2d7-4d87-4487-96c4-3073cf99e9a5", "alternateIdentifierType" => "UUID" }])
|
332
360
|
expect(subject.type).to eq("Article")
|
333
361
|
expect(subject.creators.length).to eq(1)
|
334
|
-
expect(subject.creators.first).to eq("familyName"=>"Matheson", "givenName"=>"Stephen", "type"=>"Person")
|
362
|
+
expect(subject.creators.first).to eq("familyName" => "Matheson", "givenName" => "Stephen", "type" => "Person")
|
335
363
|
expect(subject.titles).to eq([{ "title" => "Quintessence of Dust 2023 restart: the why" }])
|
336
364
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
337
365
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
338
|
-
expect(subject.date).to eq("published"=>"2023-01-09", "updated"=>"2023-04-02")
|
366
|
+
expect(subject.date).to eq("published" => "2023-01-09", "updated" => "2023-04-02")
|
339
367
|
expect(subject.descriptions.first["description"]).to start_with("It's early January 2023, a little before sunset in Tucson.")
|
340
368
|
expect(subject.publisher).to eq("name" => "Quintessence of Dust")
|
341
369
|
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
@@ -343,7 +371,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
343
371
|
"subject" => "FOS: Social sciences",
|
344
372
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
345
373
|
expect(subject.language).to eq("en")
|
346
|
-
expect(subject.container).to eq("identifier" => "http://sfmatheson.blogspot.com
|
374
|
+
expect(subject.container).to eq("identifier" => "http://sfmatheson.blogspot.com", "identifierType" => "URL", "title" => "Quintessence of Dust", "type" => "Periodical")
|
347
375
|
expect(subject.references).to be_nil
|
348
376
|
end
|
349
377
|
|
@@ -356,12 +384,12 @@ describe Commonmeta::Metadata, vcr: true do
|
|
356
384
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "f3dc29da-0481-4f3b-8110-4c07260fca67", "alternateIdentifierType" => "UUID" }])
|
357
385
|
expect(subject.type).to eq("Article")
|
358
386
|
expect(subject.creators.length).to eq(1)
|
359
|
-
expect(subject.creators.first).to eq("familyName"=>"Steiner", "givenName"=>"Tobias", "id"=>"https://orcid.org/0000-0002-3158-3136", "type"=>"Person")
|
387
|
+
expect(subject.creators.first).to eq("familyName" => "Steiner", "givenName" => "Tobias", "id" => "https://orcid.org/0000-0002-3158-3136", "type" => "Person")
|
360
388
|
expect(subject.titles).to eq([{ "title" => "Grundlagen für die Entwicklung einer Open Scholarship-Strategie" }])
|
361
389
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
362
390
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
363
|
-
expect(subject.date).to eq("published"=>"2019-01-31", "updated"=>"2023-
|
364
|
-
expect(subject.descriptions.first["description"]).to start_with("Versionshistorie Version 1.0 — 16. Oktober 2017
|
391
|
+
expect(subject.date).to eq("published" => "2019-01-31", "updated" => "2023-07-08")
|
392
|
+
expect(subject.descriptions.first["description"]).to start_with("<strong>Versionshistorie</strong> Version 1.0 — 16. Oktober 2017")
|
365
393
|
expect(subject.publisher).to eq("name" => "Flavours of Open")
|
366
394
|
expect(subject.subjects).to eq([{ "subject" => "Humanities" },
|
367
395
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
@@ -369,7 +397,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
369
397
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
370
398
|
expect(subject.language).to eq("de")
|
371
399
|
expect(subject.container).to eq("identifier" => "https://flavoursofopen.science", "identifierType" => "URL", "title" => "Flavours of Open", "type" => "Periodical")
|
372
|
-
expect(subject.references.length).to eq(
|
400
|
+
expect(subject.references.length).to eq(56)
|
373
401
|
expect(subject.references.first).to eq("key" => "ref1", "url" => "http://oerstrategy.org/home/read-the-doc")
|
374
402
|
end
|
375
403
|
|
@@ -386,8 +414,8 @@ describe Commonmeta::Metadata, vcr: true do
|
|
386
414
|
expect(subject.titles).to eq([{ "title" => "The Preregistration Prescriptiveness Trade-Off and Unknown Unknowns in Science" }])
|
387
415
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
388
416
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
389
|
-
expect(subject.date).to eq("published"=>"2023-06-06", "updated"=>"2023-06-06")
|
390
|
-
expect(subject.descriptions.first["description"]).to start_with("
|
417
|
+
expect(subject.date).to eq("published" => "2023-06-06", "updated" => "2023-06-06")
|
418
|
+
expect(subject.descriptions.first["description"]).to start_with("<strong>Abstract</strong> I discuss Van Drimmelen’s (2023) Metascience2023")
|
391
419
|
expect(subject.publisher).to eq("name" => "Critical Metascience")
|
392
420
|
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
393
421
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
@@ -396,7 +424,7 @@ describe Commonmeta::Metadata, vcr: true do
|
|
396
424
|
expect(subject.language).to eq("en")
|
397
425
|
expect(subject.container).to eq("identifier" => "https://markrubin.substack.com", "identifierType" => "URL", "title" => "Critical Metascience", "type" => "Periodical")
|
398
426
|
expect(subject.references.length).to eq(16)
|
399
|
-
expect(subject.references.first).to eq("doi"=>"https://doi.org/10.3386/w27250", "key"=>"ref1", "publicationYear"=>"2020", "title"=>"Research Registries: Facts, Myths, and Possible Improvements")
|
427
|
+
expect(subject.references.first).to eq("doi" => "https://doi.org/10.3386/w27250", "key" => "ref1", "publicationYear" => "2020", "title" => "Research Registries: Facts, Myths, and Possible Improvements")
|
400
428
|
end
|
401
429
|
end
|
402
430
|
|
@@ -181,10 +181,10 @@ describe Commonmeta::Metadata, vcr: true do
|
|
181
181
|
expect(subject.titles).to eq([{ "title" => "Attempts at automating journal subject classification" }])
|
182
182
|
expect(subject.creators.length).to eq(1)
|
183
183
|
expect(subject.creators.first).to eq("familyName" => "Datta", "givenName" => "Esha", "id" => "https://orcid.org/0000-0001-9165-2757", "type" => "Person")
|
184
|
-
expect(subject.subjects).to eq([{"subject"=>"Humanities"},
|
185
|
-
|
186
|
-
|
187
|
-
|
184
|
+
expect(subject.subjects).to eq([{ "subject" => "Humanities" },
|
185
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
186
|
+
"subject" => "FOS: Humanities",
|
187
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
188
188
|
expect(subject.language).to eq("en")
|
189
189
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
190
190
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
@@ -194,8 +194,8 @@ describe Commonmeta::Metadata, vcr: true do
|
|
194
194
|
"person_name")).first).to eq("ORCID" => "https://orcid.org/0000-0001-9165-2757", "contributor_role" => "author", "given_name" => "Esha", "sequence" => "first", "surname" => "Datta")
|
195
195
|
expect(crossref_xml.dig("titles",
|
196
196
|
"title")).to eq("Attempts at automating journal subject classification")
|
197
|
-
expect(crossref_xml.dig(
|
198
|
-
expect(crossref_xml.dig(
|
197
|
+
expect(crossref_xml.dig("item_number")).to eq("__content__" => "5d14ffacb9ac4e20bdc0d9248df4e80d", "item_number_type" => "uuid")
|
198
|
+
expect(crossref_xml.dig("group_title")).to eq("Humanities")
|
199
199
|
end
|
200
200
|
|
201
201
|
it "json_feed_item with references" do
|
@@ -205,15 +205,15 @@ describe Commonmeta::Metadata, vcr: true do
|
|
205
205
|
expect(subject.valid?).to be true
|
206
206
|
expect(subject.id).to eq("https://doi.org/10.54900/zwm7q-vet94")
|
207
207
|
expect(subject.url).to eq("https://upstream.force11.org/the-research-software-alliance-resa")
|
208
|
-
expect(subject.alternate_identifiers).to eq([{"alternateIdentifier"=>"954f8138-0ecd-4090-87c5-cef1297f1470", "alternateIdentifierType"=>"UUID"}])
|
208
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "954f8138-0ecd-4090-87c5-cef1297f1470", "alternateIdentifierType" => "UUID" }])
|
209
209
|
expect(subject.type).to eq("Article")
|
210
210
|
expect(subject.titles).to eq([{ "title" => "The Research Software Alliance (ReSA)" }])
|
211
211
|
expect(subject.creators.length).to eq(2)
|
212
|
-
expect(subject.creators.first).to eq("familyName"=>"Katz", "givenName"=>"Daniel S.", "id"=>"https://orcid.org/0000-0001-5934-7525", "type"=>"Person")
|
213
|
-
expect(subject.subjects).to eq([{"subject"=>"Humanities"},
|
214
|
-
|
215
|
-
|
216
|
-
|
212
|
+
expect(subject.creators.first).to eq("familyName" => "Katz", "givenName" => "Daniel S.", "id" => "https://orcid.org/0000-0001-5934-7525", "type" => "Person")
|
213
|
+
expect(subject.subjects).to eq([{ "subject" => "Humanities" },
|
214
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
215
|
+
"subject" => "FOS: Humanities",
|
216
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
217
217
|
expect(subject.language).to eq("en")
|
218
218
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
219
219
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
@@ -224,10 +224,10 @@ describe Commonmeta::Metadata, vcr: true do
|
|
224
224
|
"person_name")).first).to eq("ORCID" => "https://orcid.org/0000-0001-5934-7525", "contributor_role" => "author", "given_name" => "Daniel S.", "sequence" => "first", "surname" => "Katz")
|
225
225
|
expect(crossref_xml.dig("titles",
|
226
226
|
"title")).to eq("The Research Software Alliance (ReSA)")
|
227
|
-
expect(crossref_xml.dig("citation_list", "citation").
|
228
|
-
expect(crossref_xml.dig("citation_list", "citation").last).to eq("article_title"=>"The Research Software Alliance (ReSA) and the community landscape", "cYear"=>"2020", "doi"=>"10.5281/zenodo.3699950", "key"=>"ref11")
|
229
|
-
expect(crossref_xml.dig(
|
230
|
-
expect(crossref_xml.dig(
|
227
|
+
expect(crossref_xml.dig("citation_list", "citation").last).to eq("article_title" => "The Research Software Alliance (ReSA) and the community landscape", "cYear" => "2020", "doi" => "10.5281/zenodo.3699950", "key" => "ref11")
|
228
|
+
expect(crossref_xml.dig("citation_list", "citation").last).to eq("article_title" => "The Research Software Alliance (ReSA) and the community landscape", "cYear" => "2020", "doi" => "10.5281/zenodo.3699950", "key" => "ref11")
|
229
|
+
expect(crossref_xml.dig("item_number")).to eq("__content__" => "954f81380ecd409087c5cef1297f1470", "item_number_type" => "uuid")
|
230
|
+
expect(crossref_xml.dig("group_title")).to eq("Humanities")
|
231
231
|
end
|
232
232
|
|
233
233
|
it "json_feed_item from rogue scholar with doi" do
|
@@ -240,22 +240,22 @@ describe Commonmeta::Metadata, vcr: true do
|
|
240
240
|
expect(subject.type).to eq("Article")
|
241
241
|
expect(subject.titles).to eq([{ "title" => "EU-Mitgliedstaaten betonen die Rolle von wissenschaftsgeleiteten Open-Access-Modellen jenseits von APCs" }])
|
242
242
|
expect(subject.creators.length).to eq(1)
|
243
|
-
expect(subject.creators.first).to eq("familyName"=>"Pampel", "givenName"=>"Heinz", "id"=>"https://orcid.org/0000-0003-3334-2771", "type"=>"Person")
|
244
|
-
expect(subject.subjects).to eq([{"subject"=>"
|
245
|
-
|
246
|
-
|
247
|
-
|
243
|
+
expect(subject.creators.first).to eq("familyName" => "Pampel", "givenName" => "Heinz", "id" => "https://orcid.org/0000-0003-3334-2771", "type" => "Person")
|
244
|
+
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
245
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
246
|
+
"subject" => "FOS: Social sciences",
|
247
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
248
248
|
expect(subject.language).to eq("de")
|
249
249
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
250
250
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
251
251
|
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
252
252
|
expect(Array.wrap(crossref_xml.dig("contributors", "person_name")).length).to eq(1)
|
253
253
|
expect(Array.wrap(crossref_xml.dig("contributors",
|
254
|
-
"person_name")).first).to eq("ORCID"=>"https://orcid.org/0000-0003-3334-2771", "contributor_role"=>"author", "given_name"=>"Heinz", "sequence"=>"first", "surname"=>"Pampel")
|
254
|
+
"person_name")).first).to eq("ORCID" => "https://orcid.org/0000-0003-3334-2771", "contributor_role" => "author", "given_name" => "Heinz", "sequence" => "first", "surname" => "Pampel")
|
255
255
|
expect(crossref_xml.dig("titles",
|
256
256
|
"title")).to eq("EU-Mitgliedstaaten betonen die Rolle von wissenschaftsgeleiteten Open-Access-Modellen jenseits von APCs")
|
257
|
-
expect(crossref_xml.dig(
|
258
|
-
expect(crossref_xml.dig(
|
257
|
+
expect(crossref_xml.dig("item_number")).to eq("__content__" => "1c57855813244493b8af84c49eabc52f", "item_number_type" => "uuid")
|
258
|
+
expect(crossref_xml.dig("group_title")).to eq("Social sciences")
|
259
259
|
end
|
260
260
|
|
261
261
|
it "json_feed_item from rogue scholar with organizational author" do
|
@@ -268,22 +268,58 @@ describe Commonmeta::Metadata, vcr: true do
|
|
268
268
|
expect(subject.type).to eq("Article")
|
269
269
|
expect(subject.titles).to eq([{ "title" => "KU Leuven supports ResearchEquals" }])
|
270
270
|
expect(subject.creators.length).to eq(1)
|
271
|
-
expect(subject.creators.first).to eq("id"=>"https://ror.org/0342dzm54", "name"=>"Liberate Science", "type"=>"Organization")
|
272
|
-
expect(subject.subjects).to eq([{"subject"=>"Social sciences"},
|
273
|
-
|
274
|
-
|
275
|
-
|
271
|
+
expect(subject.creators.first).to eq("id" => "https://ror.org/0342dzm54", "name" => "Liberate Science", "type" => "Organization")
|
272
|
+
expect(subject.subjects).to eq([{ "subject" => "Social sciences" },
|
273
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
274
|
+
"subject" => "FOS: Social sciences",
|
275
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
276
276
|
expect(subject.language).to eq("en")
|
277
277
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
278
278
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
279
279
|
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
280
280
|
expect(Array.wrap(crossref_xml.dig("contributors", "organization")).length).to eq(1)
|
281
281
|
expect(Array.wrap(crossref_xml.dig("contributors",
|
282
|
-
"organization")).first).to eq("__content__"=>"Liberate Science", "contributor_role"=>"author", "sequence"=>"first")
|
282
|
+
"organization")).first).to eq("__content__" => "Liberate Science", "contributor_role" => "author", "sequence" => "first")
|
283
283
|
expect(crossref_xml.dig("titles",
|
284
284
|
"title")).to eq("KU Leuven supports ResearchEquals")
|
285
|
-
expect(crossref_xml.dig(
|
286
|
-
expect(crossref_xml.dig(
|
285
|
+
expect(crossref_xml.dig("item_number")).to eq("__content__" => "5561f8e42ff14186a8d58dacb3afe414", "item_number_type" => "uuid")
|
286
|
+
expect(crossref_xml.dig("group_title")).to eq("Social sciences")
|
287
|
+
end
|
288
|
+
|
289
|
+
it "json_feed_item from rogue scholar with relations" do
|
290
|
+
input = "https://rogue-scholar.org/api/posts/8a4de443-3347-4b82-b57d-e3c82b6485fc"
|
291
|
+
subject = described_class.new(input: input, doi: "10.53731/r79v4e1-97aq74v-ag578")
|
292
|
+
|
293
|
+
expect(subject.id).to eq("https://doi.org/10.53731/r79v4e1-97aq74v-ag578")
|
294
|
+
expect(subject.url).to eq("https://blog.front-matter.io/posts/differences-between-orcid-and-datacite-metadata")
|
295
|
+
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "8a4de443-3347-4b82-b57d-e3c82b6485fc", "alternateIdentifierType" => "UUID" }])
|
296
|
+
expect(subject.type).to eq("Article")
|
297
|
+
expect(subject.creators.length).to eq(1)
|
298
|
+
expect(subject.creators.first).to eq("familyName" => "Fenner",
|
299
|
+
"givenName" => "Martin",
|
300
|
+
"id" => "https://orcid.org/0000-0003-1419-2405", "type" => "Person")
|
301
|
+
expect(subject.titles).to eq([{ "title" => "Differences between ORCID and DataCite Metadata" }])
|
302
|
+
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
303
|
+
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
304
|
+
expect(subject.date).to eq("published" => "2015-09-18", "updated" => "2023-09-05")
|
305
|
+
expect(subject.descriptions.first["description"]).to start_with("One of the first tasks for DataCite in the European Commission-funded THOR project")
|
306
|
+
expect(subject.publisher).to eq("name" => "Front Matter")
|
307
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
308
|
+
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
309
|
+
"subject" => "FOS: Computer and information sciences",
|
310
|
+
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
311
|
+
expect(subject.language).to eq("en")
|
312
|
+
expect(subject.container).to eq("identifier" => "https://blog.front-matter.io", "identifierType" => "URL", "title" => "Front Matter", "type" => "Periodical")
|
313
|
+
expect(subject.references).to eq([{"doi"=>"https://doi.org/10.5281/ZENODO.30799", "key"=>"ref1", "publicationYear"=>"2015", "title"=>"D2.1: Artefact, Contributor, And Organisation Relationship Data Schema"}])
|
314
|
+
expect(subject.related_identifiers).to eq([{"id"=>"https://doi.org/10.5438/bc11-cqw1", "type"=>"IsIdenticalTo"}])
|
315
|
+
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
316
|
+
expect(Array.wrap(crossref_xml.dig("contributors", "person_name")).length).to eq(1)
|
317
|
+
expect(Array.wrap(crossref_xml.dig("contributors",
|
318
|
+
"person_name")).first).to eq({"ORCID"=>"https://orcid.org/0000-0003-1419-2405", "contributor_role"=>"author", "given_name"=>"Martin", "sequence"=>"first", "surname"=>"Fenner"})
|
319
|
+
expect(crossref_xml.dig("titles",
|
320
|
+
"title")).to eq("Differences between ORCID and DataCite Metadata")
|
321
|
+
expect(crossref_xml.dig("item_number")).to eq("__content__" => "8a4de44333474b82b57de3c82b6485fc", "item_number_type" => "uuid")
|
322
|
+
expect(crossref_xml.dig("group_title")).to eq("Computer and information sciences")
|
287
323
|
end
|
288
324
|
|
289
325
|
it "json_feed_item from rogue scholar with anonymous author" do
|
@@ -295,28 +331,28 @@ describe Commonmeta::Metadata, vcr: true do
|
|
295
331
|
expect(subject.alternate_identifiers).to eq([{ "alternateIdentifier" => "a163e340-5b3c-4736-9ab0-8c54fdff6a3c", "alternateIdentifierType" => "UUID" }])
|
296
332
|
expect(subject.type).to eq("Article")
|
297
333
|
expect(subject.creators.length).to eq(1)
|
298
|
-
expect(subject.creators.first).to eq("familyName"=>"Göbel", "givenName"=>"Mathias", "type"=>"Person")
|
334
|
+
expect(subject.creators.first).to eq("familyName" => "Göbel", "givenName" => "Mathias", "type" => "Person")
|
299
335
|
expect(subject.titles).to eq([{ "title" => "Welcome to the Lab" }])
|
300
336
|
expect(subject.license).to eq("id" => "CC-BY-4.0",
|
301
337
|
"url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
|
302
|
-
expect(subject.date).to eq("published"=>"2017-01-01", "updated"=>"2017-01-01")
|
338
|
+
expect(subject.date).to eq("published" => "2017-01-01", "updated" => "2017-01-01")
|
303
339
|
expect(subject.descriptions.first["description"]).to start_with("Welcome everyone!")
|
304
340
|
expect(subject.publisher).to eq("name" => "lab.sub - Articles")
|
305
|
-
expect(subject.subjects).to eq([{ "subject" => "
|
341
|
+
expect(subject.subjects).to eq([{ "subject" => "Computer and information sciences" },
|
306
342
|
{ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
|
307
|
-
"subject" => "FOS:
|
343
|
+
"subject" => "FOS: Computer and information sciences",
|
308
344
|
"subjectScheme" => "Fields of Science and Technology (FOS)" }])
|
309
345
|
expect(subject.language).to eq("en")
|
310
|
-
expect(subject.container).to eq("identifier" => "https://lab.sub.uni-goettingen.de
|
346
|
+
expect(subject.container).to eq("identifier" => "https://lab.sub.uni-goettingen.de", "identifierType" => "URL", "title" => "lab.sub - Articles", "type" => "Periodical")
|
311
347
|
expect(subject.references).to be_nil
|
312
348
|
crossref_xml = Hash.from_xml(subject.crossref_xml).dig("doi_batch", "body", "posted_content")
|
313
349
|
expect(Array.wrap(crossref_xml.dig("contributors", "person_name")).length).to eq(1)
|
314
350
|
expect(Array.wrap(crossref_xml.dig("contributors",
|
315
|
-
"person_name")).first).to eq("contributor_role"=>"author", "given_name"=>"Mathias", "sequence"=>"first", "surname"=>"Göbel")
|
351
|
+
"person_name")).first).to eq("contributor_role" => "author", "given_name" => "Mathias", "sequence" => "first", "surname" => "Göbel")
|
316
352
|
expect(crossref_xml.dig("titles",
|
317
353
|
"title")).to eq("Welcome to the Lab")
|
318
|
-
expect(crossref_xml.dig(
|
319
|
-
expect(crossref_xml.dig(
|
354
|
+
expect(crossref_xml.dig("item_number")).to eq("__content__" => "a163e3405b3c47369ab08c54fdff6a3c", "item_number_type" => "uuid")
|
355
|
+
expect(crossref_xml.dig("group_title")).to eq("Computer and information sciences")
|
320
356
|
end
|
321
357
|
end
|
322
358
|
end
|