diff --git a/History.txt b/History.txt index e8bfe33f7..6c26171f2 100644 --- a/History.txt +++ b/History.txt @@ -1,6 +1,9 @@ 3.1.2 -correctly handling non-default pid_namespace -info uri support; rdf:type predicate compatibility with Fedora +correctly handling non-default pid_namespace (Benjamin Armintor) +info uri support; rdf:type predicate compatibility with Fedora(Benjamin Armintor) +more flexibility for initializing Rubydora (Michael B. Klein) +NokogiriDatastream and RELS-EXT datastream set mimeType (Justin Coyne) + 3.1.1 adds support for better handling of literal values in the RELS-EXT datastream. diff --git a/lib/active_fedora/nokogiri_datastream.rb b/lib/active_fedora/nokogiri_datastream.rb index 228f59839..4fd5b7d43 100644 --- a/lib/active_fedora/nokogiri_datastream.rb +++ b/lib/active_fedora/nokogiri_datastream.rb @@ -16,6 +16,12 @@ class NokogiriDatastream < Datastream alias_method(:om_update_values, :update_values) unless method_defined?(:om_update_values) attr_accessor :internal_solr_doc + + before_create :add_mime_type + + def add_mime_type + self.mimeType= 'text/xml' + end # Create an instance of this class based on xml content # @param [String, File, Nokogiri::XML::Node] xml the xml content to build from diff --git a/lib/active_fedora/rels_ext_datastream.rb b/lib/active_fedora/rels_ext_datastream.rb index 93a5b1bb2..64c63176f 100644 --- a/lib/active_fedora/rels_ext_datastream.rb +++ b/lib/active_fedora/rels_ext_datastream.rb @@ -10,7 +10,13 @@ class RelsExtDatastream < Datastream include Solrizer::FieldNameMapper attr_accessor :model - + + before_create :add_mime_type + + def add_mime_type + self.mimeType= 'application/rdf+xml' + end + def serialize! self.content = to_rels_ext() if model.relationships_are_dirty model.relationships_are_dirty = false diff --git a/lib/active_fedora/version.rb b/lib/active_fedora/version.rb index f6f37a66b..b63c85bac 100644 --- a/lib/active_fedora/version.rb +++ b/lib/active_fedora/version.rb @@ -1,3 +1,3 @@ module ActiveFedora - VERSION = "3.1.1" + VERSION = "3.1.2" end diff --git a/lib/tasks/active_fedora_dev.rake b/lib/tasks/active_fedora_dev.rake index abf06b11b..b9c76359c 100644 --- a/lib/tasks/active_fedora_dev.rake +++ b/lib/tasks/active_fedora_dev.rake @@ -69,12 +69,6 @@ namespace :active_fedora do t.rcov_opts << ['--exclude', 'spec'] end - desc "Refresh test fixtres" - task :refresh_fixtures do - Rake::Task["active_fedora:clean_jetty"].invoke - Rake::Task["active_fedora:load_fixtures"].invoke - end - task :clean_jetty do Dir.chdir("./jetty") system("git clean -f -d") @@ -83,12 +77,6 @@ namespace :active_fedora do end task :load_fixtures => :environment do - # require 'solrizer' - # require 'solrizer-fedora' - # require 'spec/samples/models/hydrangea_article' - # ENV["FEDORA_HOME"] ||= File.expand_path(File.join(File.dirname(__FILE__),'..','..','jetty','fedora','default')) - # retval = `$FEDORA_HOME/client/bin/fedora-ingest-demos.sh localhost 8983 fedoraAdmin fedoraAdmin http` - # puts "loaded demo objects #{retval}" ActiveFedora.init unless Thread.current[:repo] ENV["pid"] = "hydrangea:fixture_mods_article1" diff --git a/spec/integration/nokogiri_datastream_spec.rb b/spec/integration/nokogiri_datastream_spec.rb index 261849c9f..3100157c1 100644 --- a/spec/integration/nokogiri_datastream_spec.rb +++ b/spec/integration/nokogiri_datastream_spec.rb @@ -21,12 +21,14 @@ class HydrangeaArticle2 < ActiveFedora::Base end end - @pid = "hydrangea:fixture_mods_article1" - @test_solr_object = HydrangeaArticle2.load_instance_from_solr(@pid) - @test_object = HydrangeaArticle2.load_instance(@pid) end describe '.term_values' do + before do + @pid = "hydrangea:fixture_mods_article1" + @test_solr_object = HydrangeaArticle2.load_instance_from_solr(@pid) + @test_object = HydrangeaArticle2.load_instance(@pid) + end it "should return the same values whether getting from solr or Fedora" do @test_solr_object.datastreams["descMetadata"].term_values(:name,:role,:text).should == ["Creator","Contributor","Funder","Host"] diff --git a/spec/unit/nokogiri_datastream_spec.rb b/spec/unit/nokogiri_datastream_spec.rb index 392cda075..efc281792 100644 --- a/spec/unit/nokogiri_datastream_spec.rb +++ b/spec/unit/nokogiri_datastream_spec.rb @@ -25,7 +25,7 @@ after(:each) do end - + it "should include the Solrizer::XML::TerminologyBasedSolrizer for .to_solr support" do ActiveFedora::NokogiriDatastream.included_modules.should include(Solrizer::XML::TerminologyBasedSolrizer) end @@ -171,10 +171,12 @@ end it "should persist the product of .to_xml in fedora" do @test_ds.expects(:new?).returns(true).twice - @mock_repo.expects(:add_datastream).with(:pid => nil, :dsid => 'descMetadata', :checksumType => 'DISABLED', :versionable => true, :content => 'fake xml', :controlGroup => 'M', :dsState => 'A') + @mock_repo.expects(:datastream).with(:pid => nil, :dsid => 'descMetadata') + @mock_repo.expects(:add_datastream).with(:pid => nil, :dsid => 'descMetadata', :checksumType => 'DISABLED', :versionable => true, :content => 'fake xml', :controlGroup => 'M', :dsState => 'A', :mimeType=>'text/xml') @test_ds.expects(:to_xml).returns("fake xml") @test_ds.serialize! @test_ds.save + @test_ds.mimeType.should == 'text/xml' end end diff --git a/spec/unit/rels_ext_datastream_spec.rb b/spec/unit/rels_ext_datastream_spec.rb index ddd1d5a1a..73f03ca04 100644 --- a/spec/unit/rels_ext_datastream_spec.rb +++ b/spec/unit/rels_ext_datastream_spec.rb @@ -21,9 +21,17 @@ mock_inner.stubs(:pid).returns(@pid) @test_ds = ActiveFedora::RelsExtDatastream.new(mock_inner, "RELS-EXT") end - - it 'should respond to #save' do - @test_ds.should respond_to(:save) + + describe "#save" do + before do + @mock_repo.expects(:add_datastream).with(:pid => 'test:sample_pid', :dsid => 'RELS-EXT', :checksumType => 'DISABLED', :versionable => true, :content => 'fake xml', :controlGroup => 'M', :dsState => 'A', :mimeType=>'application/rdf+xml') + @mock_repo.expects(:datastream).with(:pid => 'test:sample_pid', :dsid => 'RELS-EXT') + @test_ds.content = 'fake xml' + end + it 'should set the mime type' do + @test_ds.save + @test_ds.mimeType.should == 'application/rdf+xml' + end end