require 'spec_helper' module Datacite module Mapping describe Title do describe '#initialize' do it 'sets the value' do value = 'An Account of a Very Odd Monstrous Calf' title = Title.new(value: value, language: 'en-emodeng') expect(title.value).to eq(value) end it 'sets the language' do lang = 'en-emodeng' title = Title.new(language: lang, value: 'Observables upon a Monstrous Head') expect(title.language).to eq(lang) end it 'defaults language to "en"' do title = Title.new(value: 'A Relation of an Accident by Thunder and Lightning, at Oxford') expect(title.language).to eq('en') end it 'sets the type' do type = TitleType::SUBTITLE title = Title.new(type: type, value: 'And a Contest between Two Artists about Optick Glasses, &c', language: 'en-emodeng') expect(title.type).to eq(type) end it 'defaults to a nil type' do title = Title.new(value: "Of Some Books Lately Publish't", language: 'en-emodeng') expect(title.type).to be_nil end end describe 'value=' do it 'sets the value' do title = Title.allocate title.value = "Of Some Books Lately Publish't" expect(title.value).to eq("Of Some Books Lately Publish't") end it 'requires a value' do title = Title.new(value: "Of Some Books Lately Publish't", language: 'en-emodeng') expect { title.value = nil }.to raise_error(ArgumentError) expect(title.value).to eq("Of Some Books Lately Publish't") end it 'requires a non-empty value' do title = Title.new(value: "Of Some Books Lately Publish't", language: 'en-emodeng') expect { title.value = '' }.to raise_error(ArgumentError) expect(title.value).to eq("Of Some Books Lately Publish't") end end describe 'lang=' do it 'sets the language' do title = Title.new(value: "Of Some Books Lately Publish't", language: 'en-emodeng') new_lang = 'en-gb' title.language = new_lang expect(title.language).to eq(new_lang) end it 'ignores nil' do title = Title.new(value: "Of Some Books Lately Publish't", language: 'en-emodeng') title.language = nil expect(title.language).to eq('en-emodeng') end end describe '#load_from_xml' do it 'parses XML' do xml_text = '