spec/unit/datacite/mapping/date_spec.rb in datacite-mapping-0.2.0 vs spec/unit/datacite/mapping/date_spec.rb in datacite-mapping-0.2.1
- old
+ new
@@ -27,10 +27,28 @@
end
it 'fails on range-like non-ranges' do
expect { Date.new(value: '5/18/72', type: DateType::VALID) }.to raise_error(ArgumentError)
end
+
+ it 'saves closed ranges to XML' do
+ date = Date.new(value: '1997-07-16T19:30+10:00/1997-07-17T15:30-05:00', type: DateType::AVAILABLE)
+ expected_xml = '<date dateType="Available">1997-07-16T19:30+10:00/1997-07-17T15:30-05:00</date>'
+ expect(date.save_to_xml).to be_xml(expected_xml)
+ end
+
+ it 'saves right open ranges to XML' do
+ date = Date.new(value: '1997-07-16T19:30+10:00/', type: DateType::AVAILABLE)
+ expected_xml = '<date dateType="Available">1997-07-16T19:30+10:00/</date>'
+ expect(date.save_to_xml).to be_xml(expected_xml)
+ end
+
+ it 'saves left open ranges to XML' do
+ date = Date.new(value: '/1997-07-17T15:30-05:00', type: DateType::AVAILABLE)
+ expected_xml = '<date dateType="Available">/1997-07-17T15:30-05:00</date>'
+ expect(date.save_to_xml).to be_xml(expected_xml)
+ end
end
describe 'type=' do
it 'sets the type' do
d = Date.allocate
@@ -48,9 +66,27 @@
describe '#save_to_xml' do
it 'writes XML' do
d = Date.new(value: '1914-08-04T11:01:06.0123+01:00', type: DateType::AVAILABLE)
expected_xml = '<date dateType="Available">1914-08-04T11:01:06.0123+01:00</date>'
expect(d.save_to_xml).to be_xml(expected_xml)
+ end
+
+ it 'writes XML with all value types' do
+ {
+ with_date_time: DateTime.new(1914, 8, 4, 11, 1, 6.0123, '+1'),
+ with_date: ::Date.new(1914, 8, 4),
+ with_year: 1914,
+ with_year_str: '1914',
+ with_year_month: '1914-08',
+ iso8601: '1914-08-04T11:01+01:00',
+ iso8601_secs: '1914-08-04T11:01:06+01:00',
+ iso8601_frac: '1914-08-04T11:01:06.0123+01:00'
+ }.each do |k, v|
+ d = Date.new(value: v, type: DateType::AVAILABLE)
+ xml = d.save_to_xml
+ parsed = Date.parse_xml(xml)
+ expect(parsed).to eq(d), "Expected #{d}, got #{parsed} for #{k}"
+ end
end
end
describe '#load_from_xml' do
it 'reads XML' do