active-fedora 6.6.0.rc5 → 6.6.0
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.
- checksums.yaml +4 -4
- data/History.txt +17 -3
- data/lib/active_fedora/associations.rb +2 -1
- data/lib/active_fedora/base.rb +1 -5
- data/lib/active_fedora/indexing.rb +1 -1
- data/lib/active_fedora/nested_attributes.rb +9 -0
- data/lib/active_fedora/predicates.rb +13 -0
- data/lib/active_fedora/relationship_graph.rb +25 -18
- data/lib/active_fedora/rels_ext_datastream.rb +1 -15
- data/lib/active_fedora/semantic_node.rb +1 -1
- data/lib/active_fedora/unsaved_digital_object.rb +1 -1
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/associations_spec.rb +51 -5
- data/spec/integration/nested_attribute_spec.rb +4 -0
- data/spec/integration/ntriples_datastream_spec.rb +1 -1
- data/spec/unit/base_extra_spec.rb +1 -1
- data/spec/unit/base_spec.rb +4 -4
- data/spec/unit/datastream_spec.rb +1 -1
- data/spec/unit/predicates_spec.rb +26 -1
- data/spec/unit/relationship_graph_spec.rb +5 -5
- data/spec/unit/rels_ext_datastream_spec.rb +0 -24
- data/spec/unit/semantic_node_spec.rb +3 -3
- data/spec/unit/solr_config_options_spec.rb +2 -1
- data/spec/unit/unsaved_digital_object_spec.rb +2 -2
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ef5496bb9123668b10de796159b394a50a1ec1da
         | 
| 4 | 
            +
              data.tar.gz: 70b9bf4b2d64f1f0a6ffd3b5eb81dca852f47cd6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c87b4be4a4d26c6424cdfa4d7ca73981760fa36d9f91b3e62ecf8396153ee581914f594cdb9a4edaaca1c73f52332ffba2b78af3f0dd57bee176add2e0381d1c
         | 
| 7 | 
            +
              data.tar.gz: 15f245fddca1d9fb480cca04e41708e4e2fc1ec8cecd23409346101295bedecd286517e55b19d1420ba4511d076842f141d1171f9d16198b5ff6b3d9d3a11bc6
         | 
    
        data/History.txt
    CHANGED
    
    | @@ -1,4 +1,8 @@ | |
| 1 | 
            -
            v6.6.0 | 
| 1 | 
            +
            v6.6.0
         | 
| 2 | 
            +
            Add _destroy method for building nested forms [Justin Coyne]
         | 
| 3 | 
            +
            Removed the pid placeholder `__DO_NOT_USE__` [Justin Coyne]
         | 
| 4 | 
            +
            Allow relationships to accept instances of RDF::URI as their predicates [Justin Coyne]
         | 
| 5 | 
            +
            Remove internal deprecation [Justin Coyne]
         | 
| 2 6 | 
             
            Gracefully handle an ObjectNotFound in find_all [Justin Coyne]
         | 
| 3 7 | 
             
            Revert "Removed unused code that breaks certain use cases (Fixes #234)." [Jeremy Friesen]
         | 
| 4 8 | 
             
            Removed unset opts parameter from call to reify_solr_results, introduced in PR #236. [David Chandek-Stark]
         | 
| @@ -7,7 +11,18 @@ Fix deprecation warning when using the ids setter of a has_many collection relat | |
| 7 11 | 
             
            Fix deprecation warning when loading a has_many association [Justin Coyne]
         | 
| 8 12 | 
             
            Explicitly set cast to false on reload to avoid deprecation warnings [Justin Coyne]
         | 
| 9 13 | 
             
            Cast relationship results if class is ActiveFedora::Base [Justin Coyne]
         | 
| 10 | 
            -
             | 
| 14 | 
            +
            Adding a loop for getting more than solr_page_size (default 200) results in an has and belongs to many association [Carolyn Cole]
         | 
| 15 | 
            +
            Fixed syntax error on hash [Justin Coyne]
         | 
| 16 | 
            +
            Set cast parameter to avoid a deprecation warning [Justin Coyne]
         | 
| 17 | 
            +
            Only deprecate the cast parameter to find when on ActiveFedora::Base [Justin Coyne]
         | 
| 18 | 
            +
            Deprecate .find's cast default option [Jeremy Friesen]
         | 
| 19 | 
            +
            Remove outdated fixture loading line from README. [Steven Anderson]
         | 
| 20 | 
            +
            Support for extended cmodels (read-only) [Steven Anderson]
         | 
| 21 | 
            +
            Fix tense on deprecation warning [Steven Anderson]
         | 
| 22 | 
            +
            Fix tense on deprecation warning [Justin Coyne]
         | 
| 23 | 
            +
            delegate and delegate_to should use 'multiple' rather than 'unique'.  Ref #147 [Justin Coyne]
         | 
| 24 | 
            +
            Deprecated find(:all), find(:first), find(:last) [Justin Coyne]
         | 
| 25 | 
            +
            Prevent infinite loop when Fedora and Solr are out of sync (fixes #199) [Michael B. Klein]
         | 
| 11 26 |  | 
| 12 27 | 
             
            v6.5.1 (2013-09-10)
         | 
| 13 28 |  | 
| @@ -74,7 +89,6 @@ An rdf node should be able to set rdf:about [Justin Coyne] | |
| 74 89 |  | 
| 75 90 | 
             
            Remove RdfObject#get_values, it's inherited [Justin Coyne]
         | 
| 76 91 |  | 
| 77 | 
            -
             | 
| 78 92 | 
             
            v6.4.4 (2013-07-29)
         | 
| 79 93 |  | 
| 80 94 | 
             
            Bumping to version 6.4.4 [Jeremy Friesen]
         | 
| @@ -227,7 +227,8 @@ module ActiveFedora | |
| 227 227 | 
             
                      end
         | 
| 228 228 |  | 
| 229 229 | 
             
                      redefine_method("#{reflection.name}_id=") do |new_value|
         | 
| 230 | 
            -
                         | 
| 230 | 
            +
                        options = reflection.klass == ActiveFedora::Base ? {cast: true} : {}
         | 
| 231 | 
            +
                        obj =  new_value.blank? ? nil : reflection.klass.find(new_value, options)
         | 
| 231 232 | 
             
                        send("#{reflection.name}=", obj)
         | 
| 232 233 | 
             
                      end
         | 
| 233 234 | 
             
                      redefine_method("#{reflection.name}_id") do 
         | 
    
        data/lib/active_fedora/base.rb
    CHANGED
    
    | @@ -71,11 +71,6 @@ module ActiveFedora | |
| 71 71 | 
             
                  @marked_for_destruction
         | 
| 72 72 | 
             
                end
         | 
| 73 73 |  | 
| 74 | 
            -
                def reload(options = nil)
         | 
| 75 | 
            -
                  @marked_for_destruction = false
         | 
| 76 | 
            -
                  super
         | 
| 77 | 
            -
                end
         | 
| 78 | 
            -
             | 
| 79 74 | 
             
                # Constructor.  You may supply a custom +:pid+, or we call the Fedora Rest API for the
         | 
| 80 75 | 
             
                # next available Fedora pid, and mark as new object.
         | 
| 81 76 | 
             
                # Also, if +attrs+ does not contain +:pid+ but does contain +:namespace+ it will pass the
         | 
| @@ -96,6 +91,7 @@ module ActiveFedora | |
| 96 91 |  | 
| 97 92 | 
             
                # Reloads the object from Fedora.
         | 
| 98 93 | 
             
                def reload
         | 
| 94 | 
            +
                  raise ActiveFedora::ObjectNotFoundError, "Can't reload an object that hasn't been saved" unless persisted?
         | 
| 99 95 | 
             
                  clear_association_cache
         | 
| 100 96 | 
             
                  init_with(self.class.find(self.pid, cast: false).inner_object)
         | 
| 101 97 | 
             
                end
         | 
| @@ -49,7 +49,7 @@ module ActiveFedora | |
| 49 49 | 
             
                # @param [Hash] solr_doc @deafult an empty Hash
         | 
| 50 50 | 
             
                def solrize_relationships(solr_doc = Hash.new)
         | 
| 51 51 | 
             
                  relationships.each_statement do |statement|
         | 
| 52 | 
            -
                    predicate =  | 
| 52 | 
            +
                    predicate = Predicates.short_predicate(statement.predicate)
         | 
| 53 53 | 
             
                    literal = statement.object.kind_of?(RDF::Literal)
         | 
| 54 54 | 
             
                    val = literal ? statement.object.value : statement.object.to_str
         | 
| 55 55 | 
             
                    ::Solrizer::Extractor.insert_solr_field_value(solr_doc, solr_name(predicate, :symbol), val )
         | 
| @@ -92,6 +92,15 @@ module ActiveFedora | |
| 92 92 | 
             
                  end
         | 
| 93 93 | 
             
                end
         | 
| 94 94 |  | 
| 95 | 
            +
                # Returns ActiveFedora::Base#marked_for_destruction? It's
         | 
| 96 | 
            +
                # used in conjunction with fields_for to build a form element for the
         | 
| 97 | 
            +
                # destruction of this association.
         | 
| 98 | 
            +
                #
         | 
| 99 | 
            +
                # See ActionView::Helpers::FormHelper::fields_for for more info.
         | 
| 100 | 
            +
                def _destroy
         | 
| 101 | 
            +
                  marked_for_destruction?
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
             | 
| 95 104 | 
             
                private 
         | 
| 96 105 |  | 
| 97 106 | 
             
                # Attribute hash keys that should not be assigned as normal attributes.
         | 
| @@ -1,5 +1,18 @@ | |
| 1 1 | 
             
            module ActiveFedora
         | 
| 2 2 | 
             
              module Predicates
         | 
| 3 | 
            +
                def self.short_predicate(predicate)
         | 
| 4 | 
            +
                  # for this regex to short-circuit correctly, namespaces must be sorted into descending order by length
         | 
| 5 | 
            +
                  if match = /^(#{Predicates.predicate_mappings.keys.sort.reverse.join('|')})(.+)$/.match(predicate.to_str)
         | 
| 6 | 
            +
                    namespace = match[1]
         | 
| 7 | 
            +
                    predicate = match[2]
         | 
| 8 | 
            +
                    Predicates.predicate_mappings[namespace].invert[predicate]
         | 
| 9 | 
            +
                  elsif predicate.kind_of? RDF::URI
         | 
| 10 | 
            +
                    predicate.to_s.split('/', 4).last.gsub(/(\/|#)/, '_').underscore
         | 
| 11 | 
            +
                  else
         | 
| 12 | 
            +
                    raise "Unable to parse predicate: #{predicate}"
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                
         | 
| 3 16 | 
             
                def self.find_graph_predicate(predicate)
         | 
| 4 17 | 
             
                  #TODO, these could be cached
         | 
| 5 18 | 
             
                  case predicate
         | 
| @@ -10,44 +10,47 @@ module ActiveFedora | |
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 12 | 
             
                def has_predicate?(predicate)
         | 
| 13 | 
            -
                  relationships.has_key? predicate
         | 
| 13 | 
            +
                  relationships.has_key? uri_predicate(predicate)
         | 
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 16 | 
             
                def add(predicate, object, literal=false)
         | 
| 17 | 
            -
                   | 
| 18 | 
            -
             | 
| 17 | 
            +
                  uri = uri_predicate(predicate)
         | 
| 18 | 
            +
                  unless has_predicate? uri
         | 
| 19 | 
            +
                    relationships[uri] = []
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 | 
             
                  object = RDF::Literal.new(object) if literal
         | 
| 21 | 
            -
                  unless relationships[ | 
| 22 | 
            +
                  unless relationships[uri].include?(object)
         | 
| 22 23 | 
             
                    @dirty = true
         | 
| 23 | 
            -
                    relationships[ | 
| 24 | 
            +
                    relationships[uri] << object
         | 
| 24 25 | 
             
                  end
         | 
| 25 26 | 
             
                end
         | 
| 26 27 |  | 
| 27 28 | 
             
                # Remove the statement matching the predicate and object
         | 
| 28 | 
            -
                # [ | 
| 29 | 
            -
                #  | 
| 29 | 
            +
                # @param predicate [Symbol, URI] the predicate to delete
         | 
| 30 | 
            +
                # @param object the object to delete, if nil, all statements with this predicate are deleted.
         | 
| 30 31 | 
             
                def delete(predicate, object = nil)
         | 
| 31 | 
            -
                   | 
| 32 | 
            +
                  uri = uri_predicate(predicate)
         | 
| 33 | 
            +
                  return unless has_predicate? uri 
         | 
| 32 34 | 
             
                  if object.nil?
         | 
| 33 35 | 
             
                    @dirty = true
         | 
| 34 | 
            -
                    relationships.delete( | 
| 36 | 
            +
                    relationships.delete(uri)
         | 
| 35 37 | 
             
                    return
         | 
| 36 38 | 
             
                  end
         | 
| 37 | 
            -
                  if relationships[ | 
| 39 | 
            +
                  if relationships[uri].include?(object)
         | 
| 38 40 | 
             
                    @dirty = true
         | 
| 39 | 
            -
                    relationships[ | 
| 41 | 
            +
                    relationships[uri].delete(object)
         | 
| 40 42 | 
             
                  end
         | 
| 41 | 
            -
                  if object.respond_to?(:internal_uri) && relationships[ | 
| 43 | 
            +
                  if object.respond_to?(:internal_uri) && relationships[uri].include?(object.internal_uri)
         | 
| 42 44 | 
             
                    @dirty = true
         | 
| 43 | 
            -
                    relationships[ | 
| 45 | 
            +
                    relationships[uri].delete(object.internal_uri)
         | 
| 44 46 | 
             
                  elsif object.is_a? String 
         | 
| 45 | 
            -
                    relationships[ | 
| 47 | 
            +
                    relationships[uri].delete_if{|obj| obj.respond_to?(:internal_uri) && obj.internal_uri == object}
         | 
| 46 48 | 
             
                  end
         | 
| 47 49 | 
             
                end
         | 
| 48 50 |  | 
| 49 51 | 
             
                def [](predicate)
         | 
| 50 | 
            -
                   | 
| 52 | 
            +
                  uri = uri_predicate(predicate)
         | 
| 53 | 
            +
                  relationships[uri]
         | 
| 51 54 | 
             
                end
         | 
| 52 55 |  | 
| 53 56 | 
             
                def to_graph(subject_uri)
         | 
| @@ -65,7 +68,7 @@ module ActiveFedora | |
| 65 68 |  | 
| 66 69 | 
             
                # Create an RDF statement
         | 
| 67 70 | 
             
                # @param uri a string represending the subject
         | 
| 68 | 
            -
                # @param predicate a predicate | 
| 71 | 
            +
                # @param predicate [Symbol, URI] a predicate
         | 
| 69 72 | 
             
                # @param target an object to store
         | 
| 70 73 | 
             
                def build_statement(uri, predicate, target)
         | 
| 71 74 | 
             
                  raise "Not allowed anymore" if uri == :self
         | 
| @@ -87,10 +90,14 @@ module ActiveFedora | |
| 87 90 | 
             
                    end
         | 
| 88 91 | 
             
                    object = RDF::URI.new(target)
         | 
| 89 92 | 
             
                  end
         | 
| 90 | 
            -
                   | 
| 91 | 
            -
                  RDF::Statement.new(subject, predicate, object)
         | 
| 93 | 
            +
                  RDF::Statement.new(subject, uri_predicate(predicate), object)
         | 
| 92 94 |  | 
| 93 95 | 
             
                end
         | 
| 94 96 |  | 
| 97 | 
            +
                def uri_predicate(predicate)
         | 
| 98 | 
            +
                  return predicate if predicate.kind_of? RDF::URI
         | 
| 99 | 
            +
                  ActiveFedora::Predicates.find_graph_predicate(predicate)
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
             | 
| 95 102 | 
             
              end
         | 
| 96 103 | 
             
            end
         | 
| @@ -52,9 +52,8 @@ module ActiveFedora | |
| 52 52 | 
             
                    RDF::RDFXML::Reader.new(xml) do |reader|
         | 
| 53 53 | 
             
                      reader.each_statement do |statement|
         | 
| 54 54 | 
             
                        literal = statement.object.kind_of?(RDF::Literal)
         | 
| 55 | 
            -
                        predicate = self.short_predicate(statement.predicate)
         | 
| 56 55 | 
             
                        object = literal ? statement.object.value : statement.object.to_str
         | 
| 57 | 
            -
                        tmpl.model.add_relationship(predicate, object, literal)
         | 
| 56 | 
            +
                        tmpl.model.add_relationship(statement.predicate, object, literal)
         | 
| 58 57 | 
             
                      end
         | 
| 59 58 | 
             
                    end
         | 
| 60 59 | 
             
                    tmpl.relationships_are_not_dirty!
         | 
| @@ -91,19 +90,6 @@ module ActiveFedora | |
| 91 90 | 
             
                  end
         | 
| 92 91 | 
             
                end
         | 
| 93 92 |  | 
| 94 | 
            -
                def self.short_predicate(predicate)
         | 
| 95 | 
            -
                  # for this regex to short-circuit correctly, namespaces must be sorted into descending order by length
         | 
| 96 | 
            -
                  if match = /^(#{Predicates.predicate_mappings.keys.sort.reverse.join('|')})(.+)$/.match(predicate.to_str)
         | 
| 97 | 
            -
                    namespace = match[1]
         | 
| 98 | 
            -
                    predicate = match[2]
         | 
| 99 | 
            -
                    pred = Predicates.predicate_mappings[namespace].invert[predicate]
         | 
| 100 | 
            -
                    pred
         | 
| 101 | 
            -
                  else
         | 
| 102 | 
            -
                    raise "Unable to parse predicate: #{predicate}"
         | 
| 103 | 
            -
                  end
         | 
| 104 | 
            -
                end
         | 
| 105 | 
            -
                
         | 
| 106 | 
            -
                
         | 
| 107 93 | 
             
                # ** EXPERIMENTAL **
         | 
| 108 94 | 
             
                # 
         | 
| 109 95 | 
             
                # This is utilized by ActiveFedora::Base.load_instance_from_solr to load 
         | 
| @@ -23,7 +23,7 @@ module ActiveFedora | |
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 25 | 
             
                # Add a relationship to the Object.
         | 
| 26 | 
            -
                # @param predicate
         | 
| 26 | 
            +
                # @param predicate [Symbol]  The short version of the predicate
         | 
| 27 27 | 
             
                # @param target Either a string URI or an object that is a kind of ActiveFedora::Base 
         | 
| 28 28 | 
             
                def add_relationship(predicate, target, literal=false)
         | 
| 29 29 | 
             
                  object_relations.add(predicate, target, literal)
         | 
| @@ -4,7 +4,7 @@ module ActiveFedora | |
| 4 4 | 
             
                include DigitalObject::DatastreamBootstrap
         | 
| 5 5 | 
             
                attr_accessor :original_class, :ownerId, :state, :datastreams, :label, :namespace
         | 
| 6 6 |  | 
| 7 | 
            -
                PLACEHOLDER =  | 
| 7 | 
            +
                PLACEHOLDER = nil
         | 
| 8 8 |  | 
| 9 9 | 
             
                def initialize(original_class, namespace, pid=nil)
         | 
| 10 10 | 
             
                  @pid = pid
         | 
| @@ -1,6 +1,30 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe ActiveFedora::Base do
         | 
| 4 | 
            +
              describe "use a URI as the property" do
         | 
| 5 | 
            +
                before do
         | 
| 6 | 
            +
                  class Book < ActiveFedora::Base 
         | 
| 7 | 
            +
                    belongs_to :author, :property=>RDF::DC.creator, :class_name=>'Person'
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  class Person < ActiveFedora::Base
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                after do
         | 
| 15 | 
            +
                  Object.send(:remove_const, :Book)
         | 
| 16 | 
            +
                  Object.send(:remove_const, :Person)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                let(:person) { Person.create}
         | 
| 20 | 
            +
                let(:book) { Book.new(author: person) }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                it "should go" do
         | 
| 23 | 
            +
                  book.save
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 4 28 | 
             
              describe "complex example" do
         | 
| 5 29 | 
             
                before do
         | 
| 6 30 | 
             
                  class Library < ActiveFedora::Base 
         | 
| @@ -473,6 +497,32 @@ describe ActiveFedora::Base do | |
| 473 497 | 
             
                end
         | 
| 474 498 | 
             
              end
         | 
| 475 499 |  | 
| 500 | 
            +
              describe "belongs_to when class_name is ActiveFedora::Base" do
         | 
| 501 | 
            +
                before :all do
         | 
| 502 | 
            +
                  class Textbook < ActiveFedora::Base
         | 
| 503 | 
            +
                    belongs_to :container, :property=>:is_part_of, :class_name=>'ActiveFedora::Base'
         | 
| 504 | 
            +
                  end
         | 
| 505 | 
            +
                  class Shelf < ActiveFedora::Base; end
         | 
| 506 | 
            +
                end
         | 
| 507 | 
            +
             | 
| 508 | 
            +
                after :all do
         | 
| 509 | 
            +
                  Object.send(:remove_const, :Textbook)
         | 
| 510 | 
            +
                  Object.send(:remove_const, :Shelf)
         | 
| 511 | 
            +
                end
         | 
| 512 | 
            +
             | 
| 513 | 
            +
                after do
         | 
| 514 | 
            +
                  shelf.destroy
         | 
| 515 | 
            +
                end
         | 
| 516 | 
            +
             | 
| 517 | 
            +
                let(:shelf) { Shelf.create}
         | 
| 518 | 
            +
                subject { Textbook.new }
         | 
| 519 | 
            +
             | 
| 520 | 
            +
                it "Should not raise a deprecation message" do
         | 
| 521 | 
            +
                  Deprecation.should_not_receive(:warn) # a deprecation in 6.6.0 that's going away in 7.0.0
         | 
| 522 | 
            +
                  subject.container_id =  shelf.id
         | 
| 523 | 
            +
                end
         | 
| 524 | 
            +
              end
         | 
| 525 | 
            +
             | 
| 476 526 | 
             
              describe "single direction habtm" do
         | 
| 477 527 | 
             
                before :all do
         | 
| 478 528 | 
             
                  class Course < ActiveFedora::Base
         | 
| @@ -801,10 +851,6 @@ describe ActiveFedora::Base do | |
| 801 851 | 
             
                      @simple_collection = SimpleCollection.create
         | 
| 802 852 | 
             
                      @complex_collection = ComplexCollection.create
         | 
| 803 853 |  | 
| 804 | 
            -
                      #Need to add the simpler cmodel here as currently inheritance support is read-only.
         | 
| 805 | 
            -
                      #See ActiveFedora pull request 207 on how to do this programmatically.
         | 
| 806 | 
            -
                      @complex_collection.add_relationship(:has_model, @complex_object.class.superclass.to_class_uri)
         | 
| 807 | 
            -
             | 
| 808 854 | 
             
                      @simple_object = SimpleObject.create
         | 
| 809 855 | 
             
                      @simple_object_second = SimpleObject.create
         | 
| 810 856 | 
             
                      @complex_object = ComplexObject.create
         | 
| @@ -860,4 +906,4 @@ describe ActiveFedora::Base do | |
| 860 906 | 
             
                  end
         | 
| 861 907 | 
             
                end
         | 
| 862 908 | 
             
              end
         | 
| 863 | 
            -
            end
         | 
| 909 | 
            +
            end
         | 
| @@ -147,8 +147,8 @@ describe ActiveFedora::NtriplesRDFDatastream do | |
| 147 147 | 
             
                end
         | 
| 148 148 |  | 
| 149 149 | 
             
                it "should write rdf with proper subjects" do
         | 
| 150 | 
            -
                  @subject.rdf.type = "Frog"
         | 
| 151 150 | 
             
                  @subject.inner_object.pid = 'test:99'
         | 
| 151 | 
            +
                  @subject.rdf.type = "Frog"
         | 
| 152 152 | 
             
                  @subject.save!
         | 
| 153 153 | 
             
                  @subject.reload
         | 
| 154 154 | 
             
                  @subject.rdf.graph.dump(:ntriples).should == "<http://oregondigital.org/ns/99> <http://purl.org/dc/terms/type> \"Frog\" .\n"
         | 
| @@ -60,7 +60,7 @@ describe ActiveFedora::Base do | |
| 60 60 | 
             
                it "should delete object from repository and index" do
         | 
| 61 61 | 
             
                  @test_object.inner_object.stub(:delete)
         | 
| 62 62 | 
             
                  mock_conn = double("SolrConnection")
         | 
| 63 | 
            -
                  mock_conn.should_receive(:delete_by_id).with( | 
| 63 | 
            +
                  mock_conn.should_receive(:delete_by_id).with(nil) 
         | 
| 64 64 | 
             
                  mock_conn.should_receive(:commit)
         | 
| 65 65 | 
             
                  mock_ss = double("SolrService")
         | 
| 66 66 | 
             
                  mock_ss.stub(:conn).and_return(mock_conn)
         | 
    
        data/spec/unit/base_spec.rb
    CHANGED
    
    | @@ -202,10 +202,9 @@ describe ActiveFedora::Base do | |
| 202 202 |  | 
| 203 203 | 
             
                ### Methods for ActiveModel::Conversions
         | 
| 204 204 | 
             
                it "should have to_param once it's saved" do
         | 
| 205 | 
            -
             | 
| 206 205 | 
             
                  @test_object.to_param.should be_nil
         | 
| 207 | 
            -
                  @test_object.inner_object.stub(:new? => false)
         | 
| 208 | 
            -
                  @test_object.to_param.should ==  | 
| 206 | 
            +
                  @test_object.inner_object.stub(:new? => false, :pid => 'foo:123')
         | 
| 207 | 
            +
                  @test_object.to_param.should == 'foo:123'
         | 
| 209 208 | 
             
                end
         | 
| 210 209 |  | 
| 211 210 | 
             
                it "should have to_key once it's saved" do
         | 
| @@ -448,12 +447,13 @@ describe ActiveFedora::Base do | |
| 448 447 | 
             
                  it "should add pid, system_create_date, system_modified_date and object_state from object attributes" do
         | 
| 449 448 | 
             
                    @test_object.should_receive(:create_date).and_return("2012-03-04T03:12:02Z")
         | 
| 450 449 | 
             
                    @test_object.should_receive(:modified_date).and_return("2012-03-07T03:12:02Z")
         | 
| 450 | 
            +
                    @test_object.stub(pid: 'changeme:123')
         | 
| 451 451 | 
             
                    @test_object.state = "D"
         | 
| 452 452 | 
             
                    solr_doc = @test_object.to_solr
         | 
| 453 453 | 
             
                    solr_doc[ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)].should eql("2012-03-04T03:12:02Z")
         | 
| 454 454 | 
             
                    solr_doc[ActiveFedora::SolrService.solr_name("system_modified", :stored_sortable, type: :date)].should eql("2012-03-07T03:12:02Z")
         | 
| 455 455 | 
             
                    solr_doc[ActiveFedora::SolrService.solr_name("object_state", :stored_sortable)].should eql("D")
         | 
| 456 | 
            -
                    solr_doc[:id].should eql(" | 
| 456 | 
            +
                    solr_doc[:id].should eql("changeme:123")
         | 
| 457 457 | 
             
                  end
         | 
| 458 458 |  | 
| 459 459 | 
             
                  it "should omit base metadata and RELS-EXT if :model_only==true" do
         | 
| @@ -19,7 +19,7 @@ describe ActiveFedora::Datastream do | |
| 19 19 | 
             
              end
         | 
| 20 20 |  | 
| 21 21 | 
             
              it "should be inspectable" do
         | 
| 22 | 
            -
                @test_datastream.inspect.should match /#<ActiveFedora::Datastream @pid=\" | 
| 22 | 
            +
                @test_datastream.inspect.should match /#<ActiveFedora::Datastream @pid=\"\" @dsid=\"abcd\" @controlGroup=\"M\" changed=\"true\" @mimeType=\"\" >/
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 25 | 
             
              describe '#validate_content_present' do
         | 
| @@ -1,7 +1,32 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 3 | 
             
            describe ActiveFedora::Predicates do
         | 
| 4 | 
            +
              describe "#short_predicate" do
         | 
| 5 | 
            +
                it 'should parse strings' do
         | 
| 6 | 
            +
                  ActiveFedora::Predicates.short_predicate('http://www.openarchives.org/OAI/2.0/itemID').should == :oai_item_id
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
                it 'should parse uris' do
         | 
| 9 | 
            +
                  ActiveFedora::Predicates.short_predicate(RDF::DC.creator).should == 'dc_terms_creator'
         | 
| 10 | 
            +
                  ActiveFedora::Predicates.short_predicate(RDF::SKOS.hasTopConcept).should == '2004_02_skos_core_has_top_concept'
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                before(:all) do
         | 
| 13 | 
            +
                  @original_mapping = ActiveFedora::Predicates.predicate_config[:predicate_mapping]
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                after(:all) do
         | 
| 16 | 
            +
                  ActiveFedora::Predicates.predicate_config[:predicate_mapping] = @original_mapping
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
                it "should find predicates regardless of order loaded or shared namespace prefixes" do
         | 
| 19 | 
            +
                  ActiveFedora::Predicates.predicate_config[:predicate_mapping] = {
         | 
| 20 | 
            +
                    "http://example.org/"=>{:ceo => 'Manager'},
         | 
| 21 | 
            +
                    "http://example.org/zoo/wolves/"=>{:alpha => 'Manager'},
         | 
| 22 | 
            +
                    "http://example.org/zoo/"=>{:keeper => 'Manager'}
         | 
| 23 | 
            +
                    }
         | 
| 24 | 
            +
                  ActiveFedora::Predicates.short_predicate("http://example.org/zoo/Manager").should == :keeper
         | 
| 25 | 
            +
                  ActiveFedora::Predicates.short_predicate("http://example.org/zoo/wolves/Manager").should == :alpha
         | 
| 26 | 
            +
                  ActiveFedora::Predicates.short_predicate("http://example.org/Manager").should == :ceo
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
              
         | 
| 5 30 | 
             
              it 'should provide .default_predicate_namespace' do
         | 
| 6 31 | 
             
                ActiveFedora::Predicates.default_predicate_namespace.should == 'info:fedora/fedora-system:def/relations-external#'
         | 
| 7 32 | 
             
              end
         | 
| @@ -13,8 +13,8 @@ describe ActiveFedora::RelationshipGraph do | |
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| 15 15 | 
             
                it "should initialize new relation keys" do
         | 
| 16 | 
            -
                  @graph[: | 
| 17 | 
            -
                  @graph[: | 
| 16 | 
            +
                  @graph[:has_description].should be_empty
         | 
| 17 | 
            +
                  @graph[:has_description].should respond_to(:<<)
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
              end
         | 
| @@ -22,11 +22,11 @@ describe ActiveFedora::RelationshipGraph do | |
| 22 22 | 
             
              it "should add relationships" do
         | 
| 23 23 | 
             
                @n2 = ActiveFedora::Base.new
         | 
| 24 24 | 
             
                @graph.add(:has_part, @n1)
         | 
| 25 | 
            -
                @graph | 
| 25 | 
            +
                @graph[:has_part].should == [@n1]
         | 
| 26 26 | 
             
                @graph.add(:has_part, @n2)
         | 
| 27 | 
            -
                @graph | 
| 27 | 
            +
                @graph[:has_part].should == [@n1, @n2]
         | 
| 28 28 | 
             
                @graph.add(:has_part, @n2)
         | 
| 29 | 
            -
                @graph | 
| 29 | 
            +
                @graph[:has_part].should == [@n1, @n2]
         | 
| 30 30 | 
             
                @graph.dirty.should be_true
         | 
| 31 31 | 
             
              end
         | 
| 32 32 |  | 
| @@ -1,12 +1,6 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe ActiveFedora::RelsExtDatastream do
         | 
| 4 | 
            -
              describe "short_predicate" do
         | 
| 5 | 
            -
                it 'should parse' do
         | 
| 6 | 
            -
                  ActiveFedora::RelsExtDatastream.short_predicate('http://www.openarchives.org/OAI/2.0/itemID').should == :oai_item_id
         | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
              end
         | 
| 9 | 
            -
              
         | 
| 10 4 | 
             
              before(:all) do
         | 
| 11 5 | 
             
                @pid = "test:sample_pid"
         | 
| 12 6 |  | 
| @@ -172,22 +166,4 @@ describe ActiveFedora::RelsExtDatastream do | |
| 172 166 | 
             
                end
         | 
| 173 167 | 
             
              end
         | 
| 174 168 |  | 
| 175 | 
            -
              describe "#short_predicate" do
         | 
| 176 | 
            -
                before(:all) do
         | 
| 177 | 
            -
                  @original_mapping = ActiveFedora::Predicates.predicate_config[:predicate_mapping]
         | 
| 178 | 
            -
                end
         | 
| 179 | 
            -
                after(:all) do
         | 
| 180 | 
            -
                  ActiveFedora::Predicates.predicate_config[:predicate_mapping] = @original_mapping
         | 
| 181 | 
            -
                end
         | 
| 182 | 
            -
                it "should find predicates regardless of order loaded or shared namespace prefixes" do
         | 
| 183 | 
            -
                  ActiveFedora::Predicates.predicate_config[:predicate_mapping] = {
         | 
| 184 | 
            -
                    "http://example.org/"=>{:ceo => 'Manager'},
         | 
| 185 | 
            -
                    "http://example.org/zoo/wolves/"=>{:alpha => 'Manager'},
         | 
| 186 | 
            -
                    "http://example.org/zoo/"=>{:keeper => 'Manager'}
         | 
| 187 | 
            -
                    }
         | 
| 188 | 
            -
                  ActiveFedora::RelsExtDatastream.short_predicate("http://example.org/zoo/Manager").should == :keeper
         | 
| 189 | 
            -
                  ActiveFedora::RelsExtDatastream.short_predicate("http://example.org/zoo/wolves/Manager").should == :alpha
         | 
| 190 | 
            -
                  ActiveFedora::RelsExtDatastream.short_predicate("http://example.org/Manager").should == :ceo
         | 
| 191 | 
            -
                end
         | 
| 192 | 
            -
              end
         | 
| 193 169 | 
             
            end
         | 
| @@ -90,7 +90,7 @@ describe ActiveFedora::SemanticNode do | |
| 90 90 | 
             
                  it "should not be written into the graph until it is saved" do
         | 
| 91 91 | 
             
                    @n1 = ActiveFedora::Base.new
         | 
| 92 92 | 
             
                    @node.add_relationship(:has_part, @n1)
         | 
| 93 | 
            -
                    @node.relationships.statements.to_a.first.object.to_s.should == 'info:fedora/ | 
| 93 | 
            +
                    @node.relationships.statements.to_a.first.object.to_s.should == 'info:fedora/' 
         | 
| 94 94 | 
             
                    @n1.save
         | 
| 95 95 | 
             
                    @node.relationships.statements.to_a.first.object.to_s.should == @n1.internal_uri
         | 
| 96 96 | 
             
                  end
         | 
| @@ -117,12 +117,12 @@ describe ActiveFedora::SemanticNode do | |
| 117 117 | 
             
                  before do
         | 
| 118 118 | 
             
                    @node.add_relationship(:is_member_of, 'demo:9')
         | 
| 119 119 | 
             
                    @node.add_relationship(:is_member_of, 'demo:7')
         | 
| 120 | 
            -
                    @node.add_relationship(: | 
| 120 | 
            +
                    @node.add_relationship(:has_description, 'demo:9')
         | 
| 121 121 | 
             
                  end
         | 
| 122 122 | 
             
                  it "should clear the specified relationship" do
         | 
| 123 123 | 
             
                    @node.clear_relationship(:is_member_of)
         | 
| 124 124 | 
             
                    @node.relationships(:is_member_of).should == []
         | 
| 125 | 
            -
                    @node.relationships(: | 
| 125 | 
            +
                    @node.relationships(:has_description).should == ['demo:9']
         | 
| 126 126 | 
             
                  end
         | 
| 127 127 |  | 
| 128 128 | 
             
                end
         | 
| @@ -27,8 +27,9 @@ describe ActiveFedora do | |
| 27 27 | 
             
                  SOLR_DOCUMENT_ID = "id"
         | 
| 28 28 | 
             
                end
         | 
| 29 29 | 
             
                it "should be used by ActiveFedora::Base.to_solr" do
         | 
| 30 | 
            +
                  @test_object.stub(pid: 'changeme:123')
         | 
| 30 31 | 
             
                  SOLR_DOCUMENT_ID = "MY_SAMPLE_ID"
         | 
| 31 | 
            -
                  @test_object.to_solr[SOLR_DOCUMENT_ID.to_sym]. | 
| 32 | 
            +
                  @test_object.to_solr[SOLR_DOCUMENT_ID.to_sym].should == 'changeme:123'
         | 
| 32 33 | 
             
                  @test_object.to_solr[:id].should be_nil
         | 
| 33 34 | 
             
                end
         | 
| 34 35 |  | 
| @@ -16,8 +16,8 @@ describe ActiveFedora::UnsavedDigitalObject do | |
| 16 16 | 
             
                  @obj.ownerId.should == 'D'
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 | 
            -
                it "should have a default pid" do
         | 
| 20 | 
            -
                  @obj.pid.should  | 
| 19 | 
            +
                it "should not have a default pid" do
         | 
| 20 | 
            +
                  @obj.pid.should be_nil
         | 
| 21 21 | 
             
                end
         | 
| 22 22 | 
             
                it "should be able to set the pid" do
         | 
| 23 23 | 
             
                  @obj.pid = "my:new_object"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: active-fedora
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 6.6.0 | 
| 4 | 
            +
              version: 6.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Matt Zumwalt
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2013-10- | 
| 13 | 
            +
            date: 2013-10-09 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: rsolr
         | 
| @@ -550,9 +550,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 550 550 | 
             
                  version: 1.9.3
         | 
| 551 551 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 552 552 | 
             
              requirements:
         | 
| 553 | 
            -
              - - ' | 
| 553 | 
            +
              - - '>='
         | 
| 554 554 | 
             
                - !ruby/object:Gem::Version
         | 
| 555 | 
            -
                  version:  | 
| 555 | 
            +
                  version: '0'
         | 
| 556 556 | 
             
            requirements: []
         | 
| 557 557 | 
             
            rubyforge_project: 
         | 
| 558 558 | 
             
            rubygems_version: 2.0.5
         |