require 'spec_helper'
describe ActiveFedora::OmDatastream do
before(:all) do
class ModsArticle2 < ActiveFedora::Base
# Uses the Hydra MODS Article profile for tracking most of the descriptive metadata
has_metadata "descMetadata", type: Hydra::ModsArticleDatastream, autocreate: true
end
end
after(:all) do
Object.send(:remove_const, :ModsArticle2)
end
let(:obj) { ModsArticle2.create.reload }
after(:each) do
obj.destroy
end
subject { obj.descMetadata }
describe "#changed?" do
it "does not be changed when no fields have been set" do
expect(subject).to_not be_content_changed
end
it "is changed when a field has been set" do
subject.title = 'Foobar'
expect(subject).to be_content_changed
end
it "does not be changed if the new xml matches the old xml" do
subject.content = subject.content
expect(subject).to_not be_changed
end
it "is changed if there are minor differences in whitespace" do
subject.content = "1"
obj.save
expect(subject).to_not be_changed
subject.content = "\n1\n"
expect(subject).to be_changed
end
end
describe "empty datastream content" do
it "does not break when there is empty datastream content" do
subject.content = ""
obj.save
end
end
describe '.update_values' do
before do
subject.content = File.read(fixture('mods_articles/mods_article1.xml'))
obj.save
obj.reload
end
it "does not be dirty after .update_values is saved" do
obj.descMetadata.update_values([{ name: 0 }, { role: 0 }, :text] => "Funder")
expect(obj.descMetadata).to be_changed
obj.save
expect(obj.descMetadata).to_not be_changed
expect(obj.descMetadata.term_values({ name: 0 }, { role: 0 }, :text)).to eq ["Funder"]
end
end
describe ".to_solr" do
before do
subject.journal.issue.publication_date = Date.parse('2012-11-02')
obj.save!
obj.reload
end
it "solrizes terms with :type=>'date' to *_dt solr terms" do
expect(obj.to_solr[ActiveFedora::SolrQueryBuilder.solr_name('desc_metadata__journal_issue_publication_date', type: :date)]).to eq ['2012-11-02T00:00:00Z']
end
end
end