bolognese 1.8.7 → 1.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,96 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.7554
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.7.1; mailto:info@datacite.org)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ''
18
+ headers:
19
+ Date:
20
+ - Sat, 22 Aug 2020 09:09:10 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Connection:
24
+ - keep-alive
25
+ Set-Cookie:
26
+ - __cfduid=dc7cd5dde23bd772408198c155ba5278f1598087350; expires=Mon, 21-Sep-20
27
+ 09:09:10 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
28
+ Cf-Cache-Status:
29
+ - DYNAMIC
30
+ Cf-Request-Id:
31
+ - 04b706e111000097cca18f6200000001
32
+ Expect-Ct:
33
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
34
+ Strict-Transport-Security:
35
+ - max-age=31536000; includeSubDomains; preload
36
+ Server:
37
+ - cloudflare
38
+ Cf-Ray:
39
+ - 5c6b7414eaca97cc-FRA
40
+ body:
41
+ encoding: ASCII-8BIT
42
+ string: |-
43
+ [
44
+ {
45
+ "DOI": "10.7554",
46
+ "RA": "Crossref"
47
+ }
48
+ ]
49
+ http_version:
50
+ recorded_at: Sat, 22 Aug 2020 09:09:10 GMT
51
+ - request:
52
+ method: get
53
+ uri: https://api.crossref.org/works/10.7554/elife.55167.sa2/transform/application/vnd.crossref.unixsd+xml
54
+ body:
55
+ encoding: US-ASCII
56
+ string: ''
57
+ headers:
58
+ User-Agent:
59
+ - Mozilla/5.0 (compatible; Maremma/4.7.1; mailto:info@datacite.org)
60
+ Accept:
61
+ - text/xml
62
+ response:
63
+ status:
64
+ code: 200
65
+ message: OK
66
+ headers:
67
+ Link:
68
+ - <http://dx.doi.org/10.7554/elife.55167.sa2>; rel="canonical", <http://creativecommons.org/licenses/by/4.0/>;
69
+ rel="license", <http://orcid.org/0000-0002-5286-4375>; title="Jeremy Magland";
70
+ rel="author", <http://orcid.org/0000-0002-2642-603X>; title="Elizabeth Lovero";
71
+ rel="author", <http://orcid.org/0000-0002-4997-4063>; title="Alexander J Morley";
72
+ rel="author", <http://orcid.org/0000-0002-2023-1653>; title="Cole Lincoln
73
+ Hurwitz"; rel="author"
74
+ Access-Control-Allow-Origin:
75
+ - "*"
76
+ Access-Control-Allow-Headers:
77
+ - X-Requested-With
78
+ Content-Length:
79
+ - '5929'
80
+ Server:
81
+ - http-kit
82
+ Date:
83
+ - Sat, 22 Aug 2020 09:09:11 GMT
84
+ X-Rate-Limit-Limit:
85
+ - '50'
86
+ X-Rate-Limit-Interval:
87
+ - 1s
88
+ Connection:
89
+ - close
90
+ body:
91
+ encoding: ASCII-8BIT
92
+ string: !binary |-
93
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0icGVlcl9yZXZpZXciPjEwLjc1NTQvZUxpZmUuNTUxNjcuc2EyPC9kb2k+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJwdWJsaXNoZXItbmFtZSIgdHlwZT0ic3RyaW5nIj5lTGlmZSBTY2llbmNlcyBQdWJsaWNhdGlvbnMsIEx0ZDwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJwcmVmaXgtbmFtZSIgdHlwZT0ic3RyaW5nIj5lTGlmZSBTY2llbmNlcyBQdWJsaWNhdGlvbnMsIEx0ZC48L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ibWVtYmVyLWlkIiB0eXBlPSJudW1iZXIiPjQzNzQ8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY2l0YXRpb24taWQiIHR5cGU9Im51bWJlciI+MTE2NDQ0NDI3PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImpvdXJuYWwtaWQiIHR5cGU9Im51bWJlciI+MTg5MzY1PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImRlcG9zaXQtdGltZXN0YW1wIiB0eXBlPSJudW1iZXIiPjIwMjAwNTE5MTgzMDMxPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im93bmVyLXByZWZpeCIgdHlwZT0ic3RyaW5nIj4xMC43NTU0PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Imxhc3QtdXBkYXRlIiB0eXBlPSJkYXRlIj4yMDIwLTA1LTE5VDIwOjMzOjM3WjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjcmVhdGVkIiB0eXBlPSJkYXRlIj4yMDIwLTA1LTE5VDIwOjMzOjM1WjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRlZGJ5LWNvdW50IiB0eXBlPSJudW1iZXIiPjE8L2NybS1pdGVtPg0KICAgICAgICA8ZG9pX3JlY29yZD4NCiAgICAgICAgICA8Y3Jvc3NyZWYgeG1sbnM9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3hzY2hlbWEvMS4xIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3hzY2hlbWEvMS4xIGh0dHA6Ly9kb2kuY3Jvc3NyZWYub3JnL3NjaGVtYXMvdW5peHJlZjEuMS54c2QiPg0KICAgICAgICAgICAgPHBlZXJfcmV2aWV3IHN0YWdlPSJwcmUtcHVibGljYXRpb24iIHR5cGU9ImF1dGhvci1jb21tZW50Ij4NCiAgICAgICAgICAgICAgPGNvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iZmlyc3QiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+SmVyZW15PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TWFnbGFuZDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj5DZW50ZXIgZm9yIENvbXB1dGF0aW9uYWwgTWF0aGVtYXRpY3MsIEZsYXRpcm9uIEluc3RpdHV0ZSwgTmV3IFlvcmssIFVuaXRlZCBTdGF0ZXM8L2FmZmlsaWF0aW9uPg0KICAgICAgICAgICAgICAgICAgPE9SQ0lEIGF1dGhlbnRpY2F0ZWQ9InRydWUiPmh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMi01Mjg2LTQzNzU8L09SQ0lEPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+SmFtZXMgSjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkp1bjwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj5DZW50ZXIgZm9yIENvbXB1dGF0aW9uYWwgTWF0aGVtYXRpY3MsIEZsYXRpcm9uIEluc3RpdHV0ZSwgTmV3IFlvcmssIFVuaXRlZCBTdGF0ZXM8L2FmZmlsaWF0aW9uPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+RWxpemFiZXRoPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TG92ZXJvPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPlNjaWVudGlmaWMgQ29tcHV0aW5nIENvcmUsIEZsYXRpcm9uIEluc3RpdHV0ZSwgTmV3IFlvcmssIFVuaXRlZCBTdGF0ZXM8L2FmZmlsaWF0aW9uPg0KICAgICAgICAgICAgICAgICAgPE9SQ0lEIGF1dGhlbnRpY2F0ZWQ9InRydWUiPmh0dHA6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTI2NDItNjAzWDwvT1JDSUQ+DQogICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5BbGV4YW5kZXIgSjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPk1vcmxleTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj5NZWRpY2FsIFJlc2VhcmNoIENvdW5jaWwgQnJhaW4gTmV0d29yayBEeW5hbWljcyBVbml0LCBVbml2ZXJzaXR5IG9mIE94Zm9yZCwgT3hmb3JkLCBVbml0ZWQgS2luZ2RvbTwvYWZmaWxpYXRpb24+DQogICAgICAgICAgICAgICAgICA8T1JDSUQgYXV0aGVudGljYXRlZD0idHJ1ZSI+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItNDk5Ny00MDYzPC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkNvbGUgTGluY29sbjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkh1cndpdHo8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+SW5zdGl0dXRlIGZvciBBZGFwdGl2ZSBhbmQgTmV1cmFsIENvbXB1dGF0aW9uIEluZm9ybWF0aWNzLCBVbml2ZXJzaXR5IG9mIEVkaW5idXJnaCwgRWRpbmJ1cmdoLCBVbml0ZWQgS2luZ2RvbTwvYWZmaWxpYXRpb24+DQogICAgICAgICAgICAgICAgICA8T1JDSUQgYXV0aGVudGljYXRlZD0idHJ1ZSI+aHR0cDovL29yY2lkLm9yZy8wMDAwLTAwMDItMjAyMy0xNjUzPC9PUkNJRD4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkFsZXNzaW8gUGFvbG88L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICA8c3VybmFtZT5CdWNjaW5vPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPkNlbnRyZSBmb3IgSW50ZWdyYXRpdmVOZXVyb3BsYXN0aWNpdHkgKENJTlBMQSksIFVuaXZlcnNpdHkgb2YgT3NsbywgT3NsbywgTm9yd2F5PC9hZmZpbGlhdGlvbj4NCiAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlNhbXVlbDwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPkdhcmNpYTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj5DZW50cmUgZGUgUmVjaGVyY2hlIGVuIE5ldXJvc2NpZW5jZSBkZSBMeW9uLCBVbml2ZXJzaXTDqSBkZSBMeW9uLCBMeW9uLCBGcmFuY2U8L2FmZmlsaWF0aW9uPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImFkZGl0aW9uYWwiPg0KICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+QWxleCBIPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+QmFybmV0dDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj5DZW50ZXIgZm9yIENvbXB1dGF0aW9uYWwgTWF0aGVtYXRpY3MsIEZsYXRpcm9uIEluc3RpdHV0ZSwgTmV3IFlvcmssIFVuaXRlZCBTdGF0ZXM8L2FmZmlsaWF0aW9uPg0KICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgIDwvY29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgIDx0aXRsZT5BdXRob3IgcmVzcG9uc2U6IFNwaWtlRm9yZXN0LCByZXByb2R1Y2libGUgd2ViLWZhY2luZyBncm91bmQtdHJ1dGggdmFsaWRhdGlvbiBvZiBhdXRvbWF0ZWQgbmV1cmFsIHNwaWtlIHNvcnRlcnM8L3RpdGxlPg0KICAgICAgICAgICAgICA8L3RpdGxlcz4NCiAgICAgICAgICAgICAgPHJldmlld19kYXRlPg0KICAgICAgICAgICAgICAgIDxtb250aD4wNDwvbW9udGg+DQogICAgICAgICAgICAgICAgPGRheT4yOTwvZGF5Pg0KICAgICAgICAgICAgICAgIDx5ZWFyPjIwMjA8L3llYXI+DQogICAgICAgICAgICAgIDwvcmV2aWV3X2RhdGU+DQogICAgICAgICAgICAgIDxhaTpwcm9ncmFtIHhtbG5zOmFpPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy9BY2Nlc3NJbmRpY2F0b3JzLnhzZCIgbmFtZT0iQWNjZXNzSW5kaWNhdG9ycyI+DQogICAgICAgICAgICAgICAgPGFpOmxpY2Vuc2VfcmVmPmh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC88L2FpOmxpY2Vuc2VfcmVmPg0KICAgICAgICAgICAgICA8L2FpOnByb2dyYW0+DQogICAgICAgICAgICAgIDxyZWw6cHJvZ3JhbSB4bWxuczpyZWw9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3JlbGF0aW9ucy54c2QiPg0KICAgICAgICAgICAgICAgIDxyZWw6cmVsYXRlZF9pdGVtPg0KICAgICAgICAgICAgICAgICAgPHJlbDppbnRlcl93b3JrX3JlbGF0aW9uIGlkZW50aWZpZXItdHlwZT0iZG9pIiByZWxhdGlvbnNoaXAtdHlwZT0iaXNSZXZpZXdPZiI+MTAuNzU1NC9lTGlmZS41NTE2NzwvcmVsOmludGVyX3dvcmtfcmVsYXRpb24+DQogICAgICAgICAgICAgICAgPC9yZWw6cmVsYXRlZF9pdGVtPg0KICAgICAgICAgICAgICA8L3JlbDpwcm9ncmFtPg0KICAgICAgICAgICAgICA8ZG9pX2RhdGE+DQogICAgICAgICAgICAgICAgPGRvaT4xMC43NTU0L2VMaWZlLjU1MTY3LnNhMjwvZG9pPg0KICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwczovL2VsaWZlc2NpZW5jZXMub3JnL2FydGljbGVzLzU1MTY3I3NhMjwvcmVzb3VyY2U+DQogICAgICAgICAgICAgIDwvZG9pX2RhdGE+DQogICAgICAgICAgICA8L3BlZXJfcmV2aWV3Pg0KICAgICAgICAgIDwvY3Jvc3NyZWY+DQogICAgICAgIDwvZG9pX3JlY29yZD4NCiAgICAgIDwvcXVlcnk+DQogICAgPC9ib2R5Pg0KICA8L3F1ZXJ5X3Jlc3VsdD4NCjwvY3Jvc3NyZWZfcmVzdWx0Pg==
94
+ http_version:
95
+ recorded_at: Sat, 22 Aug 2020 09:09:11 GMT
96
+ recorded_with: VCR 3.0.3
@@ -33,7 +33,7 @@ describe Bolognese::Metadata, vcr: true do
33
33
  expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2018-08-23T13:41:49Z", "dateType"=>"Updated"}])
34
34
  expect(subject.publication_year).to eq("2014")
35
35
  expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
36
- expect(subject.container).to eq("identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
36
+ expect(subject.container).to eq("firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
37
37
  expect(subject.related_identifiers.length).to eq(27)
38
38
  expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
39
39
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1038/ncb2764", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
@@ -100,7 +100,7 @@ describe Bolognese::Metadata, vcr: true do
100
100
  expect(subject.related_identifiers.length).to eq(70)
101
101
  expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1664-462X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
102
102
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.17660/actahortic.2004.632.41", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
103
- expect(subject.container).to eq("identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
103
+ expect(subject.container).to eq("firstPage" => "816", "identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
104
104
  expect(subject.agency).to eq("crossref")
105
105
  end
106
106
 
@@ -179,6 +179,52 @@ describe Bolognese::Metadata, vcr: true do
179
179
  expect(subject.agency).to eq("crossref")
180
180
  end
181
181
 
182
+ it "peer review" do
183
+ input = "https://doi.org/10.7554/elife.55167.sa2"
184
+ subject = Bolognese::Metadata.new(input: input)
185
+ expect(subject.valid?).to be true
186
+ expect(subject.url).to eq("https://elifesciences.org/articles/55167#sa2")
187
+ expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"PeerReview", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"Review")
188
+ expect(subject.creators.count).to eq(8)
189
+ expect(subject.creators.last).to eq("affiliation" => [{"name"=>"Center for Computational Mathematics, Flatiron Institute, New York, United States"}],
190
+ "familyName" => "Barnett",
191
+ "givenName" => "Alex H",
192
+ "name" => "Barnett, Alex H",
193
+ "nameType" => "Personal")
194
+ expect(subject.titles).to eq([{"title"=>"Author response: SpikeForest, reproducible web-facing ground-truth validation of automated neural spike sorters"}])
195
+ expect(subject.id).to eq("https://doi.org/10.7554/elife.55167.sa2")
196
+ expect(subject.identifiers).to be_empty
197
+ expect(subject.descriptions).to be_empty
198
+ expect(subject.dates).to include({"date"=>"2020-05-19", "dateType"=>"Issued"})
199
+ expect(subject.publication_year).to eq("2020")
200
+ expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
201
+ expect(subject.agency).to eq("crossref")
202
+ end
203
+
204
+ it "dissertation" do
205
+ input = "https://doi.org/10.14264/uql.2020.791"
206
+ subject = Bolognese::Metadata.new(input: input)
207
+ expect(subject.valid?).to be true
208
+ expect(subject.url).to eq("http://espace.library.uq.edu.au/view/UQ:23a1e74")
209
+ expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceType"=>"Dissertation", "resourceTypeGeneral"=>"Text", "ris"=>"THES", "schemaOrg"=>"Thesis")
210
+ expect(subject.creators).to eq([{"familyName"=>"Collingwood",
211
+ "givenName"=>"Patricia Maree",
212
+ "name"=>"Collingwood, Patricia Maree",
213
+ "nameIdentifiers"=>
214
+ [{"nameIdentifier"=>"https://orcid.org/0000-0003-3086-4443",
215
+ "nameIdentifierScheme"=>"ORCID",
216
+ "schemeUri"=>"https://orcid.org"}],
217
+ "nameType"=>"Personal"}])
218
+ 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"}])
219
+ expect(subject.id).to eq("https://doi.org/10.14264/uql.2020.791")
220
+ expect(subject.identifiers).to be_empty
221
+ expect(subject.descriptions).to be_empty
222
+ expect(subject.dates).to include({"date"=>"2020-06-08", "dateType"=>"Issued"})
223
+ expect(subject.publication_year).to eq("2020")
224
+ expect(subject.publisher).to eq("University of Queensland Library")
225
+ expect(subject.agency).to eq("crossref")
226
+ end
227
+
182
228
  it "DOI with SICI DOI" do
183
229
  input = "https://doi.org/10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2"
184
230
  subject = Bolognese::Metadata.new(input: input)
@@ -287,7 +333,7 @@ describe Bolognese::Metadata, vcr: true do
287
333
  expect(subject.url).to eq("https://dx.plos.org/10.1371/journal.pmed.0030277.g001")
288
334
  expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"SaComponent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
289
335
  expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
290
- expect(subject.titles).to eq([{"title"=>":{unav)"}])
336
+ expect(subject.titles).to eq([{"title"=>":(unav)"}])
291
337
  expect(subject.descriptions).to be_empty
292
338
  expect(subject.dates).to eq([{"date"=>"2015-10-20", "dateType"=>"Issued"}, {"date"=>"2018-10-19T17:13:42Z", "dateType"=>"Updated"}])
293
339
  expect(subject.publication_year).to eq("2015")
@@ -509,6 +555,41 @@ describe Bolognese::Metadata, vcr: true do
509
555
  expect(subject.date_registered).to be_nil
510
556
  end
511
557
 
558
+ it "multiple titles with missing" do
559
+ input = "https://doi.org/10.1186/1471-2164-7-187"
560
+ subject = Bolognese::Metadata.new(input: input)
561
+ expect(subject.valid?).to be true
562
+ expect(subject.id).to eq("https://doi.org/10.1186/1471-2164-7-187")
563
+ expect(subject.url).to eq("https://bmcgenomics.biomedcentral.com/articles/10.1186/1471-2164-7-187")
564
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
565
+ expect(subject.creators).to eq([{"familyName"=>"Myers",
566
+ "givenName"=>"Chad L",
567
+ "name"=>"Myers, Chad L",
568
+ "nameType"=>"Personal"},
569
+ {"familyName"=>"Barrett",
570
+ "givenName"=>"Daniel R",
571
+ "name"=>"Barrett, Daniel R",
572
+ "nameType"=>"Personal"},
573
+ {"familyName"=>"Hibbs",
574
+ "givenName"=>"Matthew A",
575
+ "name"=>"Hibbs, Matthew A",
576
+ "nameType"=>"Personal"},
577
+ {"familyName"=>"Huttenhower",
578
+ "givenName"=>"Curtis",
579
+ "name"=>"Huttenhower, Curtis",
580
+ "nameType"=>"Personal"},
581
+ {"familyName"=>"Troyanskaya",
582
+ "givenName"=>"Olga G",
583
+ "name"=>"Troyanskaya, Olga G",
584
+ "nameType"=>"Personal"}])
585
+ expect(subject.titles).to eq([{"title"=>"Finding function: evaluation methods for functional genomic data"}])
586
+ expect(subject.dates).to include({"date"=>"2006-07-25", "dateType"=>"Issued"})
587
+ expect(subject.publication_year).to eq("2006")
588
+ expect(subject.publisher).to eq("Springer Science and Business Media LLC")
589
+ expect(subject.agency).to eq("crossref")
590
+ expect(subject.date_registered).to eq("2020-04-20T16:04:45Z")
591
+ end
592
+
512
593
  it "markup" do
513
594
  input = "https://doi.org/10.1098/rspb.2017.0132"
514
595
  subject = Bolognese::Metadata.new(input: input)
@@ -602,6 +683,59 @@ describe Bolognese::Metadata, vcr: true do
602
683
  expect(subject.date_registered).to eq("2019-11-02T09:30:06Z")
603
684
  end
604
685
 
686
+ it "affiliation is space" do
687
+ input = "https://doi.org/10.1177/0042098011428175"
688
+ subject = Bolognese::Metadata.new(input: input)
689
+ expect(subject.valid?).to be true
690
+ expect(subject.id).to eq("https://doi.org/10.1177/0042098011428175")
691
+ expect(subject.url).to eq("http://journals.sagepub.com/doi/10.1177/0042098011428175")
692
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
693
+ expect(subject.creators.length).to eq(1)
694
+ expect(subject.creators.first).to eq("familyName"=>"Petrovici", "givenName"=>"Norbert", "name"=>"Petrovici, Norbert", "nameType"=>"Personal")
695
+ expect(subject.titles).to eq([{"title"=>"Workers and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation"}])
696
+ expect(subject.dates).to include({"date"=>"2011-12-22", "dateType"=>"Issued"})
697
+ expect(subject.publication_year).to eq("2011")
698
+ expect(subject.publisher).to eq("SAGE Publications")
699
+ expect(subject.agency).to eq("crossref")
700
+ expect(subject.date_registered).to eq("2017-12-17T00:37:32Z")
701
+ end
702
+
703
+ it "multiple issn" do
704
+ input = "https://doi.org/10.1007/978-3-642-34922-5_19"
705
+ subject = Bolognese::Metadata.new(input: input)
706
+ expect(subject.valid?).to be true
707
+ expect(subject.id).to eq("https://doi.org/10.1007/978-3-642-34922-5_19")
708
+ expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-34922-5_19")
709
+ expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"Text", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
710
+ expect(subject.creators.length).to eq(3)
711
+ expect(subject.creators.first).to eq("familyName"=>"Razib", "givenName"=>"Ali", "name"=>"Razib, Ali", "nameType"=>"Personal")
712
+ expect(subject.titles).to eq([{"title"=>"Log-Domain Arithmetic for High-Speed Fuzzy Control on a Field-Programmable Gate Array"}])
713
+ expect(subject.dates).to include({"date"=>"2013", "dateType"=>"Issued"})
714
+ expect(subject.publication_year).to eq("2013")
715
+ expect(subject.publisher).to eq("Springer Science and Business Media LLC")
716
+ expect(subject.container).to eq("identifier"=>"1860-0808", "identifierType"=>"ISSN", "title"=>"Studies in Fuzziness and Soft Computing", "type"=>"Book Series")
717
+ expect(subject.agency).to eq("crossref")
718
+ expect(subject.date_registered).to eq("2012-10-31T16:15:44Z")
719
+ end
720
+
721
+ it "article id as page number" do
722
+ input = "https://doi.org/10.1103/physrevlett.120.117701"
723
+ subject = Bolognese::Metadata.new(input: input)
724
+ expect(subject.valid?).to be true
725
+ expect(subject.id).to eq("https://doi.org/10.1103/physrevlett.120.117701")
726
+ expect(subject.url).to eq("https://link.aps.org/doi/10.1103/PhysRevLett.120.117701")
727
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
728
+ expect(subject.creators.length).to eq(5)
729
+ expect(subject.creators.first).to eq("familyName"=>"Marrazzo", "givenName"=>"Antimo", "name"=>"Marrazzo, Antimo", "nameType"=>"Personal")
730
+ expect(subject.titles).to eq([{"title"=>"Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator"}])
731
+ expect(subject.dates).to include({"date"=>"2018-03-13", "dateType"=>"Issued"})
732
+ expect(subject.publication_year).to eq("2018")
733
+ expect(subject.publisher).to eq("American Physical Society (APS)")
734
+ expect(subject.container).to eq("firstPage" => "117701", "identifier"=>"1079-7114", "identifierType"=>"ISSN", "issue"=>"11", "title"=>"Physical Review Letters", "type"=>"Journal", "volume"=>"120")
735
+ expect(subject.agency).to eq("crossref")
736
+ expect(subject.date_registered).to eq("2018-03-13T15:18:48Z")
737
+ end
738
+
605
739
  it "posted content copernicus" do
606
740
  input = "https://doi.org/10.5194/CP-2020-95"
607
741
  subject = Bolognese::Metadata.new(input: input)
@@ -670,7 +804,7 @@ describe Bolognese::Metadata, vcr: true do
670
804
  expect(subject.url).to eq("http://ectrx.org/forms/ectrxcontentshow.php?doi_id=10.6002/ect.2015.0371")
671
805
  expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"JournalIssue", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"PublicationIssue")
672
806
  expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
673
- expect(subject.titles).to eq([{"title"=>":{unav)"}])
807
+ expect(subject.titles).to eq([{"title"=>":(unav)"}])
674
808
  expect(subject.dates).to eq([{"date"=>"2018-10", "dateType"=>"Issued"}, {"date"=>"2018-10-03T12:09:12Z", "dateType"=>"Updated"}])
675
809
  expect(subject.publication_year).to eq("2018")
676
810
  expect(subject.publisher).to eq("Baskent University")
@@ -56,7 +56,7 @@ describe Bolognese::Metadata, vcr: true do
56
56
  expect(bibtex[:bibtex_key]).to eq("https://doi.org/10.3204/desy-2014-01645")
57
57
  expect(bibtex[:doi]).to eq("10.3204/desy-2014-01645")
58
58
  expect(bibtex[:title]).to eq("Dynamics of colloids in molecular glass forming liquids studied via X-ray photon correlation spectroscopy")
59
- expect(bibtex[:pages]).to eq("2014-")
59
+ expect(bibtex[:pages]).to eq("2014")
60
60
  expect(bibtex[:year]).to eq("2014")
61
61
  end
62
62
 
@@ -9,7 +9,7 @@ describe Bolognese::Metadata, vcr: true do
9
9
  subject = Bolognese::Metadata.new(input: input, from: "crossref")
10
10
  expect(subject.style).to eq("apa")
11
11
  expect(subject.locale).to eq("en-US")
12
- expect(subject.citation).to eq("Sankar, M., Nieminen, K., Ragni, L., Xenarios, I., &amp; Hardtke, C. S. (2014). Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. <i>ELife</i>, <i>3</i>. https://doi.org/10.7554/elife.01567")
12
+ expect(subject.citation).to eq("Sankar, M., Nieminen, K., Ragni, L., Xenarios, I., &amp; Hardtke, C. S. (2014). Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. <i>ELife</i>, <i>3</i>, e01567. https://doi.org/10.7554/elife.01567")
13
13
  end
14
14
 
15
15
  it "Journal article vancouver style" do
@@ -17,7 +17,7 @@ describe Bolognese::Metadata, vcr: true do
17
17
  subject = Bolognese::Metadata.new(input: input, from: "crossref", style: "vancouver", locale: "en-US")
18
18
  expect(subject.style).to eq("vancouver")
19
19
  expect(subject.locale).to eq("en-US")
20
- expect(subject.citation).to eq("Sankar M, Nieminen K, Ragni L, Xenarios I, Hardtke CS. Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. eLife [Internet]. 2014Feb11;3. Available from: https://elifesciences.org/articles/01567")
20
+ expect(subject.citation).to eq("Sankar M, Nieminen K, Ragni L, Xenarios I, Hardtke CS. Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. eLife [Internet]. 2014Feb11;3:e01567. Available from: https://elifesciences.org/articles/01567")
21
21
  end
22
22
 
23
23
  it "Dataset" do
@@ -316,7 +316,7 @@ describe Bolognese::Metadata, vcr: true do
316
316
  subject.descriptions = { "description" => "This is an abstract." }
317
317
  expect(subject.valid?).to be true
318
318
  datacite = Maremma.from_xml(subject.datacite).fetch("resource", {})
319
- expect(datacite.dig("descriptions", "description")).to eq( [{"__content__"=>"eLife, 3", "descriptionType"=>"SeriesInformation"}, {"__content__"=>"This is an abstract.", "descriptionType"=>"Abstract"}])
319
+ expect(datacite.dig("descriptions", "description")).to eq([{"__content__"=>"eLife, 3, e01567", "descriptionType"=>"SeriesInformation"}, {"__content__"=>"This is an abstract.", "descriptionType"=>"Abstract"}])
320
320
  end
321
321
 
322
322
  it "change description no input" do
@@ -19,8 +19,9 @@ describe Bolognese::Metadata, vcr: true do
19
19
  expect(ris[11]).to eq("PY - 2014")
20
20
  expect(ris[12]).to eq("PB - eLife Sciences Publications, Ltd")
21
21
  expect(ris[13]).to eq("VL - 3")
22
- expect(ris[14]).to eq("SN - 2050-084X")
23
- expect(ris[15]).to eq("ER - ")
22
+ expect(ris[14]).to eq("SP - e01567")
23
+ expect(ris[15]).to eq("SN - 2050-084X")
24
+ expect(ris[16]).to eq("ER - ")
24
25
  end
25
26
 
26
27
  it "with pages" do
@@ -11,7 +11,7 @@ describe Bolognese::Metadata, vcr: true do
11
11
  expect(json["@id"]).to eq("https://doi.org/10.7554/elife.01567")
12
12
  expect(json["@type"]).to eq("ScholarlyArticle")
13
13
  expect(json["isPartOf"]).to eq("@type"=>"Periodical", "issn"=>"2050-084X")
14
- expect(json["periodical"]).to eq("@type"=>"Journal", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "name"=>"eLife", "volume"=>"3")
14
+ expect(json["periodical"]).to eq("@type"=>"Journal", "firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "name"=>"eLife", "volume"=>"3")
15
15
  expect(json["citation"].length).to eq(26)
16
16
  expect(json["citation"].first).to eq("@id"=>"https://doi.org/10.1038/nature02100", "@type"=>"CreativeWork")
17
17
  expect(json["funder"]).to eq([{"name"=>"SystemsX", "@type"=>"Organization"},
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.7
4
+ version: 1.8.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-21 00:00:00.000000000 Z
11
+ date: 2020-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -896,8 +896,10 @@ files:
896
896
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/JaLC.yml
897
897
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/KISTI.yml
898
898
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/OP.yml
899
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/affiliation_is_space.yml
899
900
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book.yml
900
901
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book_chapter.yml
902
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/article_id_as_page_number.yml
901
903
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/author_literal.yml
902
904
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book.yml
903
905
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter.yml
@@ -907,6 +909,7 @@ files:
907
909
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dataset.yml
908
910
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dataset_usda.yml
909
911
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/date_in_future.yml
912
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dissertation.yml
910
913
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/empty_given_name.yml
911
914
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/invalid_date.yml
912
915
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article.yml
@@ -918,8 +921,11 @@ files:
918
921
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/mEDRA.yml
919
922
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/markup.yml
920
923
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/missing_creator.yml
924
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_issn.yml
921
925
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_titles.yml
926
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_titles_with_missing.yml
922
927
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml
928
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/peer_review.yml
923
929
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml
924
930
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content_copernicus.yml
925
931
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/report_osti.yml