datacite-mapping 0.2.4 → 0.4.1

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.
Files changed (82) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +27 -11
  3. data/.ruby-version +1 -1
  4. data/CHANGES.md +25 -0
  5. data/Gemfile +2 -0
  6. data/LICENSE.md +1 -1
  7. data/README.md +10 -5
  8. data/Rakefile +5 -3
  9. data/datacite-mapping.gemspec +10 -9
  10. data/examples/reading.rb +1 -1
  11. data/examples/writing.rb +1 -0
  12. data/lib/datacite/mapping/affiliation.rb +44 -0
  13. data/lib/datacite/mapping/alternate_identifier.rb +6 -2
  14. data/lib/datacite/mapping/contributor.rb +35 -7
  15. data/lib/datacite/mapping/contributor_name.rb +42 -0
  16. data/lib/datacite/mapping/creator.rb +43 -9
  17. data/lib/datacite/mapping/creator_name.rb +42 -0
  18. data/lib/datacite/mapping/date.rb +17 -5
  19. data/lib/datacite/mapping/date_value.rb +10 -2
  20. data/lib/datacite/mapping/description.rb +10 -4
  21. data/lib/datacite/mapping/empty_filtering_nodes.rb +3 -0
  22. data/lib/datacite/mapping/funding_reference.rb +31 -10
  23. data/lib/datacite/mapping/geo_location.rb +8 -1
  24. data/lib/datacite/mapping/geo_location_box.rb +17 -10
  25. data/lib/datacite/mapping/geo_location_node.rb +12 -8
  26. data/lib/datacite/mapping/geo_location_point.rb +11 -6
  27. data/lib/datacite/mapping/geo_location_polygon.rb +13 -2
  28. data/lib/datacite/mapping/identifier.rb +18 -14
  29. data/lib/datacite/mapping/module_info.rb +5 -3
  30. data/lib/datacite/mapping/name_identifier.rb +12 -6
  31. data/lib/datacite/mapping/name_type.rb +18 -0
  32. data/lib/datacite/mapping/namespace_extensions.rb +2 -0
  33. data/lib/datacite/mapping/publisher.rb +42 -0
  34. data/lib/datacite/mapping/read_only_nodes.rb +9 -3
  35. data/lib/datacite/mapping/related_identifier.rb +43 -4
  36. data/lib/datacite/mapping/resource.rb +37 -21
  37. data/lib/datacite/mapping/resource_type.rb +7 -1
  38. data/lib/datacite/mapping/rights.rb +35 -6
  39. data/lib/datacite/mapping/subject.rb +7 -4
  40. data/lib/datacite/mapping/title.rb +7 -4
  41. data/lib/datacite/mapping.rb +3 -1
  42. data/spec/.rubocop.yml +3 -0
  43. data/spec/data/datacite4/{datacite-example-Box_dateCollected_DataCollector-v4.0.xml → datacite-example-Box_dateCollected_DataCollector-v4.xml} +9 -11
  44. data/spec/data/datacite4/{datacite-example-GeoLocation-v4.0.xml → datacite-example-GeoLocation-v4.xml} +11 -10
  45. data/spec/data/datacite4/{datacite-example-HasMetadata-v4.0.xml → datacite-example-HasMetadata-v4.xml} +18 -13
  46. data/spec/data/datacite4/{datacite-example-ResearchGroup_Methods-v4.0.xml → datacite-example-ResearchGroup_Methods-v4.xml} +14 -12
  47. data/spec/data/datacite4/{datacite-example-ResourceTypeGeneral_Collection-v4.0.xml → datacite-example-ResourceTypeGeneral_Collection-v4.xml} +9 -9
  48. data/spec/data/datacite4/datacite-example-affiliation-v4.xml +114 -0
  49. data/spec/data/datacite4/{datacite-example-complicated-v4.0.xml → datacite-example-complicated-v4.xml} +14 -11
  50. data/spec/data/datacite4/datacite-example-datapaper-v4.xml +32 -0
  51. data/spec/data/datacite4/{datacite-example-dataset-v4.0.xml → datacite-example-dataset-v4.xml} +20 -14
  52. data/spec/data/datacite4/datacite-example-full-v4.xml +114 -0
  53. data/spec/data/datacite4/{datacite-example-fundingReference-v.4.0.xml → datacite-example-fundingReference-v4.xml} +16 -13
  54. data/spec/data/datacite4/datacite-example-polygon-advanced-v4.xml +141 -0
  55. data/spec/data/datacite4/datacite-example-polygon-v4.xml +161 -0
  56. data/spec/data/datacite4/{datacite-example-relationTypeIsIdenticalTo-v4.0.xml → datacite-example-relationTypeIsIdenticalTo-v4.xml} +17 -17
  57. data/spec/data/datacite4/datacite-example-software-v4.xml +66 -0
  58. data/spec/data/datacite4/{datacite-example-video-v4.0.xml → datacite-example-video-v4.xml} +7 -7
  59. data/spec/data/datacite4/{datacite-example-workflow-v4.0.xml → datacite-example-workflow-v4.xml} +13 -11
  60. data/spec/data/datacite4/metadata.xsd +102 -57
  61. data/spec/rspec_custom_matchers.rb +11 -8
  62. data/spec/spec_helper.rb +2 -0
  63. data/spec/unit/datacite/mapping/alternate_identifier_spec.rb +2 -0
  64. data/spec/unit/datacite/mapping/contributor_spec.rb +9 -1
  65. data/spec/unit/datacite/mapping/creator_spec.rb +11 -3
  66. data/spec/unit/datacite/mapping/date_spec.rb +2 -0
  67. data/spec/unit/datacite/mapping/date_value_spec.rb +2 -0
  68. data/spec/unit/datacite/mapping/description_spec.rb +2 -0
  69. data/spec/unit/datacite/mapping/funding_reference_spec.rb +13 -1
  70. data/spec/unit/datacite/mapping/geo_location_box_spec.rb +2 -0
  71. data/spec/unit/datacite/mapping/geo_location_point_spec.rb +2 -0
  72. data/spec/unit/datacite/mapping/geo_location_polygon_spec.rb +22 -20
  73. data/spec/unit/datacite/mapping/geo_location_spec.rb +24 -22
  74. data/spec/unit/datacite/mapping/identifier_spec.rb +8 -6
  75. data/spec/unit/datacite/mapping/name_identifier_spec.rb +2 -0
  76. data/spec/unit/datacite/mapping/related_identifier_spec.rb +2 -0
  77. data/spec/unit/datacite/mapping/resource_spec.rb +34 -33
  78. data/spec/unit/datacite/mapping/rights_spec.rb +3 -14
  79. data/spec/unit/datacite/mapping/subject_spec.rb +2 -0
  80. data/spec/unit/datacite/mapping/title_spec.rb +2 -0
  81. metadata +74 -60
  82. data/spec/data/datacite4/datacite-example-full-v4.0.xml +0 -71
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite
@@ -45,11 +47,11 @@ module Datacite
45
47
  end
46
48
  it 'accepts a polygon' do
47
49
  polygon = GeoLocationPolygon.new(points: [
48
- GeoLocationPoint.new(47.61, -122.33),
49
- GeoLocationPoint.new(-33.45, -122.33),
50
- GeoLocationPoint.new(47.61, -70.67),
51
- GeoLocationPoint.new(47.61, -122.33)
52
- ])
50
+ GeoLocationPoint.new(47.61, -122.33),
51
+ GeoLocationPoint.new(-33.45, -122.33),
52
+ GeoLocationPoint.new(47.61, -70.67),
53
+ GeoLocationPoint.new(47.61, -122.33)
54
+ ])
53
55
  loc = GeoLocation.new(polygon: polygon)
54
56
  expect(loc.polygon).to eq(polygon)
55
57
  end
@@ -106,11 +108,11 @@ module Datacite
106
108
  describe '#polygon=' do
107
109
  it 'sets the polygon' do
108
110
  polygon = GeoLocationPolygon.new(points: [
109
- GeoLocationPoint.new(47.61, -122.33),
110
- GeoLocationPoint.new(-33.45, -122.33),
111
- GeoLocationPoint.new(47.61, -70.67),
112
- GeoLocationPoint.new(47.61, -122.33)
113
- ])
111
+ GeoLocationPoint.new(47.61, -122.33),
112
+ GeoLocationPoint.new(-33.45, -122.33),
113
+ GeoLocationPoint.new(47.61, -70.67),
114
+ GeoLocationPoint.new(47.61, -122.33)
115
+ ])
114
116
  loc = GeoLocation.new
115
117
  loc.polygon = polygon
116
118
  expect(loc.polygon).to eq(polygon)
@@ -168,11 +170,11 @@ module Datacite
168
170
  expect(loc.place).to eq('Atlantic Ocean')
169
171
  actual_polygon = loc.polygon
170
172
  expected_polygon = GeoLocationPolygon.new(points: [
171
- GeoLocationPoint.new(31.233, -67.302),
172
- GeoLocationPoint.new(-68.211, -71.032),
173
- GeoLocationPoint.new(42.893, 41.09),
174
- GeoLocationPoint.new(31.233, -67.302)
175
- ])
173
+ GeoLocationPoint.new(31.233, -67.302),
174
+ GeoLocationPoint.new(-68.211, -71.032),
175
+ GeoLocationPoint.new(42.893, 41.09),
176
+ GeoLocationPoint.new(31.233, -67.302)
177
+ ])
176
178
  expect(actual_polygon).to eq(expected_polygon)
177
179
  end
178
180
 
@@ -196,12 +198,12 @@ module Datacite
196
198
  point: GeoLocationPoint.new(31.233, -67.302),
197
199
  box: GeoLocationBox.new(41.09, -71.032, 42.893, -68.211),
198
200
  place: 'Atlantic Ocean',
199
- polygon: (GeoLocationPolygon.new(points: [
200
- GeoLocationPoint.new(-67.302, 31.233),
201
- GeoLocationPoint.new(-71.032, -68.211),
202
- GeoLocationPoint.new(41.09, 42.893),
203
- GeoLocationPoint.new(-67.302, 31.233)
204
- ]))
201
+ polygon: GeoLocationPolygon.new(points: [
202
+ GeoLocationPoint.new(-67.302, 31.233),
203
+ GeoLocationPoint.new(-71.032, -68.211),
204
+ GeoLocationPoint.new(41.09, 42.893),
205
+ GeoLocationPoint.new(-67.302, 31.233)
206
+ ])
205
207
  )
206
208
  end
207
209
 
@@ -257,7 +259,7 @@ module Datacite
257
259
 
258
260
  it 'writes DC3 in XSD-defined order: point, box, place' do
259
261
  actual_xml = loc.save_to_xml(mapping: :datacite_3)
260
- expected_order = %w(geoLocationPoint geoLocationBox geoLocationPlace)
262
+ expected_order = %w[geoLocationPoint geoLocationBox geoLocationPlace]
261
263
  actual_order = actual_xml.children.map(&:name)
262
264
  expect(actual_order).to eq(expected_order)
263
265
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite
@@ -21,13 +23,13 @@ module Datacite
21
23
  end
22
24
 
23
25
  it 'disallows bad DOIs' do
24
- bad_dois = %w(
26
+ bad_dois = %w[
25
27
  20.14749/1407399495
26
28
  11.14749/1407399495
27
29
  10./1407399495
28
30
  10.14749\1407399495
29
31
  10.14749/
30
- )
32
+ ]
31
33
  bad_dois.each do |doi|
32
34
  expect { Identifier.new(value: doi) }.to raise_error(ArgumentError)
33
35
  end
@@ -71,13 +73,13 @@ module Datacite
71
73
  end
72
74
 
73
75
  it 'raises ArgumentError if it is passed a bad DOI' do
74
- bad_dois = %w(
76
+ bad_dois = %w[
75
77
  20.14749/1407399495
76
78
  11.14749/1407399495
77
79
  10./1407399495
78
80
  10.14749\1407399495
79
81
  10.14749/
80
- )
82
+ ]
81
83
  bad_dois.each do |doi|
82
84
  expect { Identifier.from_doi(doi) }.to raise_error do |e|
83
85
  expect(e).to be_an(ArgumentError)
@@ -95,13 +97,13 @@ module Datacite
95
97
  end
96
98
  it 'disallows bad DOIs' do
97
99
  id = Identifier.allocate
98
- bad_dois = %w(
100
+ bad_dois = %w[
99
101
  20.14749/1407399495
100
102
  11.14749/1407399495
101
103
  10./1407399495
102
104
  10.14749\1407399495
103
105
  10.14749/
104
- )
106
+ ]
105
107
  bad_dois.each do |doi|
106
108
  expect { id.value = doi }.to raise_error(ArgumentError)
107
109
  expect(id.value).to be_nil
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite
@@ -1,5 +1,7 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'spec_helper'
4
+ require 'tmpdir'
3
5
 
4
6
  module Datacite
5
7
  module Mapping
@@ -119,9 +121,9 @@ module Datacite
119
121
  resource = Resource.new(args)
120
122
  expect(resource.creator_affiliations)
121
123
  .to eq([
122
- ['United Artists', 'Metro-Goldwyn-Mayer'],
123
- ['Gaumont Buena Vista International', '20th Century Fox']
124
- ])
124
+ ['United Artists', 'Metro-Goldwyn-Mayer'],
125
+ ['Gaumont Buena Vista International', '20th Century Fox']
126
+ ])
125
127
  end
126
128
  end
127
129
  end
@@ -171,32 +173,31 @@ module Datacite
171
173
  expect { Resource.new(args) }.to raise_error(ArgumentError)
172
174
  end
173
175
  it 'requires a non-blank publisher' do
174
- args[:publisher] = "\n \n"
175
- expect { Resource.new(args) }.to raise_error(ArgumentError)
176
+ expect { Publisher.new(value: ' ') }.to raise_error(ArgumentError)
176
177
  end
177
178
  it 'can be initialized' do
178
179
  resource = Resource.new(args)
179
- expect(resource.publisher).to eq(publisher)
180
+ expect(resource.publisher.value).to eq(publisher)
180
181
  end
181
182
  it 'can be set' do
182
183
  new_publisher = 'University of California'
183
184
  resource = Resource.new(args)
184
185
  resource.publisher = new_publisher
185
- expect(resource.publisher).to eq(new_publisher)
186
+ expect(resource.publisher.value).to eq(new_publisher)
186
187
  end
187
188
  it 'strips on initialization' do
188
- args[:publisher] = '
189
+ args[:publisher] = Publisher.new(value: '
189
190
  University of California
190
- '
191
+ ')
191
192
  resource = Resource.new(args)
192
- expect(resource.publisher).to eq('University of California')
193
+ expect(resource.publisher.value).to eq('University of California')
193
194
  end
194
195
  it 'strips on set' do
195
196
  resource = Resource.new(args)
196
- resource.publisher = '
197
+ resource.publisher = Publisher.new(value: '
197
198
  University of California
198
- '
199
- expect(resource.publisher).to eq('University of California')
199
+ ')
200
+ expect(resource.publisher.value).to eq('University of California')
200
201
  end
201
202
  end
202
203
 
@@ -228,7 +229,7 @@ module Datacite
228
229
  it 'converts strings to integers' do
229
230
  new_pub_year = 1963
230
231
  resource = Resource.new(args)
231
- resource.publication_year = "#{new_pub_year}"
232
+ resource.publication_year = new_pub_year.to_s
232
233
  expect(resource.publication_year).to eq(new_pub_year)
233
234
  end
234
235
  end
@@ -426,7 +427,8 @@ module Datacite
426
427
  scheme_uri: URI('http://iatistandard.org/201/codelists/OrganisationIdentifier/'),
427
428
  value: 'GR-9¾'
428
429
  ),
429
- type: ContributorType::FUNDER)
430
+ type: ContributorType::FUNDER
431
+ )
430
432
  @resource.contributors << @funder
431
433
  end
432
434
 
@@ -465,7 +467,7 @@ module Datacite
465
467
  describe 'dates:' do
466
468
  it 'can be initialized' do
467
469
  dates = [
468
- Date.new(value: DateTime.new(1914, 8, 4, 11, 01, 6.0123, '+1'), type: DateType::AVAILABLE),
470
+ Date.new(value: DateTime.new(1914, 8, 4, 11, 0o1, 6.0123, '+1'), type: DateType::AVAILABLE),
469
471
  Date.new(value: '1914-08-04T11:01:06.0123+01:00', type: DateType::AVAILABLE)
470
472
  ]
471
473
  args[:dates] = dates
@@ -483,7 +485,7 @@ module Datacite
483
485
  it 'can be set' do
484
486
  resource = Resource.new(args)
485
487
  dates = [
486
- Date.new(value: DateTime.new(1914, 8, 4, 11, 01, 6.0123, '+1'), type: DateType::AVAILABLE),
488
+ Date.new(value: DateTime.new(1914, 8, 4, 11, 0o1, 6.0123, '+1'), type: DateType::AVAILABLE),
487
489
  Date.new(value: '1914-08-04T11:01:06.0123+01:00', type: DateType::AVAILABLE)
488
490
  ]
489
491
  resource.dates = dates
@@ -625,7 +627,7 @@ module Datacite
625
627
 
626
628
  describe 'sizes:' do
627
629
  it 'can be initialized' do
628
- sizes = %w(48K 128K)
630
+ sizes = %w[48K 128K]
629
631
  args[:sizes] = sizes
630
632
  resource = Resource.new(args)
631
633
  expect(resource.sizes).to eq(sizes)
@@ -639,7 +641,7 @@ module Datacite
639
641
 
640
642
  describe '#sizes=' do
641
643
  it 'can be set' do
642
- sizes = %w(48K 128K)
644
+ sizes = %w[48K 128K]
643
645
  resource = Resource.new(args)
644
646
  resource.sizes = sizes
645
647
  expect(resource.sizes).to eq(sizes)
@@ -660,7 +662,7 @@ module Datacite
660
662
 
661
663
  describe 'formats:' do
662
664
  it 'can be initialized' do
663
- formats = %w(D64 DSK)
665
+ formats = %w[D64 DSK]
664
666
  args[:formats] = formats
665
667
  resource = Resource.new(args)
666
668
  expect(resource.formats).to eq(formats)
@@ -674,7 +676,7 @@ module Datacite
674
676
 
675
677
  describe '#formats=' do
676
678
  it 'can be set' do
677
- formats = %w(D64 DSK)
679
+ formats = %w[D64 DSK]
678
680
  resource = Resource.new(args)
679
681
  resource.formats = formats
680
682
  expect(resource.formats).to eq(formats)
@@ -918,7 +920,7 @@ module Datacite
918
920
  end
919
921
 
920
922
  def parse_file(xml_text, basename)
921
- return Resource.parse_xml(xml_text)
923
+ Resource.parse_xml(xml_text)
922
924
  rescue Exception => e # rubocop:disable Lint/RescueException
923
925
  warn "Error parsing #{basename}: #{e}"
924
926
  File.open("tmp/#{basename}-xml_text.xml", 'w') { |t| t.write(xml_text) }
@@ -929,7 +931,7 @@ module Datacite
929
931
  def write_xml(resource, basename, options)
930
932
  # Workaround for Dash 1 datacite.xml with missing DOI
931
933
  resource.identifier = Identifier.from_doi('10.5555/12345678') unless resource.identifier
932
- return resource.write_xml(options)
934
+ resource.write_xml(options)
933
935
  rescue Exception => e # rubocop:disable Lint/RescueException
934
936
  warn "Error writing #{basename}: #{e}"
935
937
  raise
@@ -940,7 +942,7 @@ module Datacite
940
942
  r1 = r0.gsub(%r{&lt;br\s+/&gt;}, '<br/>') # entity-de-escape <br/> tags
941
943
  # r2 = r1.gsub(%r{<(?!br)[^>]+/>}, '') # remove empty tags
942
944
  r2 = r1
943
- r3 = r2.gsub(/<resource (xmlns:xsi="[^"]+")\s+(xsi:schemaLocation="[^"]+")>/, "<resource \\2 \\1 xmlns=\"http://datacite.org/schema/kernel-3\">") # fix missing namespace
945
+ r3 = r2.gsub(/<resource (xmlns:xsi="[^"]+")\s+(xsi:schemaLocation="[^"]+")>/, '<resource \\2 \\1 xmlns="http://datacite.org/schema/kernel-3">') # fix missing namespace
944
946
  r4 = r3.gsub(%r{(<identifier[^>]+>)\s*([^ ]+)\s*(</identifier>)}, '\\1\\2\\3') # trim identifiers
945
947
  r5 = r4.gsub(%r{<([^>]+tude)>([0-9.-]+?)(0?)0+</\1>}, '<\\1>\\2\\3</\\1>') # strip trailing coordinate zeroes
946
948
  r6 = r5.gsub(%r{<(geoLocation[^>]+)>[^<]+</\1>}) { |loc| loc.gsub(/([0-9\-]+\.[0-9]+?)0+([^0-9])/, '\\1\\2') } # strip trailing coordinate zeroes
@@ -984,11 +986,10 @@ module Datacite
984
986
  actual_xml = write_xml(resource, basename, options)
985
987
  expected_xml.gsub!(/(<resource[^>]+>)\s+(<creators>)/, "\\1\n <identifier identifierType=\"DOI\">10.5555/12345678</identifier>\n \\2") if fix_dash1
986
988
  begin
987
- # actual_xml = actual_xml.gsub('&apos;', "'")
988
989
  expect(actual_xml).to be_xml(expected_xml)
989
990
  rescue Exception # rubocop:disable Lint/RescueException
990
- File.open("tmp/#{basename}-expected.xml", 'w') { |t| t.write(expected_xml) }
991
- File.open("tmp/#{basename}-actual.xml", 'w') { |t| t.write(actual_xml) }
991
+ File.open("/tmp/#{basename}-expected.xml", 'w') { |t| t.write(expected_xml) }
992
+ File.open("/tmp/#{basename}-actual.xml", 'w') { |t| t.write(actual_xml) }
992
993
  raise
993
994
  end
994
995
  end
@@ -1017,7 +1018,7 @@ module Datacite
1017
1018
  matches = warnings_including(substring)
1018
1019
  found_count = matches.size
1019
1020
  msg = "expected #{count} warnings including '#{substring}', found #{found_count}"
1020
- msg << ": #{matches}" if include_matches
1021
+ msg += ": #{matches}" if include_matches
1021
1022
  expect(found_count).to eq(count), msg
1022
1023
  end
1023
1024
 
@@ -1025,7 +1026,7 @@ module Datacite
1025
1026
  matches = REXML::XPath.match(rexml, xpath)
1026
1027
  found_count = matches.size
1027
1028
  msg = "expected #{count} matches for XPath '#{xpath}', found #{found_count}"
1028
- msg << ": #{matches}" if include_matches
1029
+ msg += ": #{matches}" if include_matches
1029
1030
  expect(found_count).to eq(count), msg
1030
1031
  end
1031
1032
 
@@ -1033,7 +1034,7 @@ module Datacite
1033
1034
  @warnings = []
1034
1035
  allow(ReadOnlyNodes).to receive(:warn) do |w|
1035
1036
  warnings << w
1036
- Kernel.warn(w) # for debugging
1037
+ # Kernel.warn(w) # for debugging
1037
1038
  end
1038
1039
 
1039
1040
  xml = File.read('spec/data/datacite-4-synthetic.xml')
@@ -1051,7 +1052,7 @@ module Datacite
1051
1052
  end
1052
1053
 
1053
1054
  it 'warns about givenNames and familyNames' do
1054
- name_tags = %w(givenName familyName)
1055
+ name_tags = %w[givenName familyName]
1055
1056
  name_tags.each do |tag|
1056
1057
  expect_matches("//#{tag}", 0, true)
1057
1058
  expect_warning(tag, 1)
@@ -1151,7 +1152,7 @@ module Datacite
1151
1152
 
1152
1153
  describe '#save_to_file' do
1153
1154
  it 'saves to a file' do
1154
- xml_text = File.read('spec/data/datacite4/datacite-example-full-v4.0.xml')
1155
+ xml_text = File.read('spec/data/datacite4/datacite-example-full-v4.xml')
1155
1156
  resource = Resource.parse_xml(xml_text)
1156
1157
  Dir.mktmpdir('resource_spec') do |dir|
1157
1158
  path = "#{dir}/resource.xml"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite
@@ -12,9 +14,6 @@ module Datacite
12
14
  rights = Rights.new(value: 'CC0 1.0 Universal', uri: URI('http://creativecommons.org/publicdomain/zero/1.0/'))
13
15
  expect(rights.uri).to eq(URI('http://creativecommons.org/publicdomain/zero/1.0/'))
14
16
  end
15
- it 'requires a value' do
16
- expect { Rights.new(uri: URI('http://creativecommons.org/publicdomain/zero/1.0/')) }.to raise_error(ArgumentError)
17
- end
18
17
  end
19
18
 
20
19
  describe '#value=' do
@@ -23,16 +22,6 @@ module Datacite
23
22
  rights.value = 'CC0 1.0 Universal'
24
23
  expect(rights.value).to eq('CC0 1.0 Universal')
25
24
  end
26
- it 'requires a value' do
27
- rights = Rights.new(value: 'CC0 1.0 Universal')
28
- expect { rights.value = nil }.to raise_error(ArgumentError)
29
- expect(rights.value).to eq('CC0 1.0 Universal')
30
- end
31
- it 'requires a non-empty value' do
32
- rights = Rights.new(value: 'CC0 1.0 Universal')
33
- expect { rights.value = '' }.to raise_error(ArgumentError)
34
- expect(rights.value).to eq('CC0 1.0 Universal')
35
- end
36
25
  end
37
26
 
38
27
  describe '#uri=' do
@@ -80,7 +69,7 @@ module Datacite
80
69
  expected_xml = '<rights rightsURI="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International (CC BY 4.0)</rights>'
81
70
  expect(rights.save_to_xml).to be_xml(expected_xml)
82
71
 
83
- [:CC_ZERO, :CC_BY].each do |c|
72
+ %i[CC_ZERO CC_BY].each do |c|
84
73
  r = Rights.const_get(c)
85
74
  puts "#{c.to_s.downcase.gsub('_zero', '0')}:"
86
75
  puts " uri: #{r.uri}"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Datacite