bolognese 1.8.7 → 1.8.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -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