active-fedora 7.0.1 → 7.0.2
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.
- data/lib/active_fedora/associations/belongs_to_association.rb +1 -1
- data/lib/active_fedora/associations/collection_proxy.rb +5 -0
- data/lib/active_fedora/associations/has_many_association.rb +1 -1
- data/lib/active_fedora/datastream_collections.rb +5 -2
- data/lib/active_fedora/rdf/identifiable.rb +5 -1
- data/lib/active_fedora/rdf/list.rb +1 -0
- data/lib/active_fedora/rdf/node_config.rb +15 -0
- data/lib/active_fedora/rdf/properties.rb +6 -20
- data/lib/active_fedora/rdf/rdf_datastream.rb +8 -4
- data/lib/active_fedora/rdf/resource.rb +7 -3
- data/lib/active_fedora/solr_service.rb +12 -1
- data/lib/active_fedora/version.rb +2 -2
- data/spec/integration/associations_spec.rb +2 -2
- data/spec/integration/belongs_to_association_spec.rb +23 -11
- data/spec/integration/has_many_associations_spec.rb +18 -2
- data/spec/integration/rdf_nested_attributes_spec.rb +33 -18
- data/spec/unit/datastream_collections_spec.rb +3 -2
- data/spec/unit/rdf_datastream_spec.rb +22 -0
- data/spec/unit/rdf_properties_spec.rb +11 -0
- data/spec/unit/rdf_resource_datastream_spec.rb +11 -0
- data/spec/unit/rdf_resource_spec.rb +4 -0
- metadata +85 -47
- checksums.yaml +0 -7
| @@ -19,7 +19,7 @@ module ActiveFedora | |
| 19 19 | 
             
                    #   belongs_to :publisher, :property=>:has_member
         | 
| 20 20 | 
             
                    results = SolrService.query(ActiveFedora::SolrService.construct_query_for_pids(ids))
         | 
| 21 21 | 
             
                    results.each do |result|
         | 
| 22 | 
            -
                      return result['id'] if SolrService. | 
| 22 | 
            +
                      return result['id'] if SolrService.classes_from_solr_document(result).include? klass
         | 
| 23 23 | 
             
                    end
         | 
| 24 24 | 
             
                    return nil
         | 
| 25 25 | 
             
                  end
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 1 2 | 
             
            module ActiveFedora
         | 
| 2 3 | 
             
              module Associations
         | 
| 3 4 | 
             
                # Association proxies in Active Fedora are middlemen between the object that
         | 
| @@ -49,6 +50,10 @@ module ActiveFedora | |
| 49 50 | 
             
                    @association.load_target
         | 
| 50 51 | 
             
                  end
         | 
| 51 52 |  | 
| 53 | 
            +
                  def load_from_solr(opts = Hash.new)
         | 
| 54 | 
            +
                    @association.load_from_solr(opts)
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 52 57 | 
             
                  def loaded?
         | 
| 53 58 | 
             
                    @association.loaded?
         | 
| 54 59 | 
             
                  end
         | 
| @@ -23,7 +23,7 @@ module ActiveFedora | |
| 23 23 | 
             
                    # If there's nothing in the database and @target has no new records
         | 
| 24 24 | 
             
                    # we are certain the current target is an empty array. This is a
         | 
| 25 25 | 
             
                    # documented side-effect of the method that may avoid an extra SELECT.
         | 
| 26 | 
            -
                    @target ||= [] and loaded if count == 0
         | 
| 26 | 
            +
                    @target ||= [] and loaded! if count == 0
         | 
| 27 27 |  | 
| 28 28 | 
             
                    return count
         | 
| 29 29 | 
             
                  end
         | 
| @@ -56,9 +56,12 @@ module ActiveFedora | |
| 56 56 |  | 
| 57 57 | 
             
                    args.merge!({:mimeType=>args[:mime_type]}) if args.has_key?(:mime_type)
         | 
| 58 58 |  | 
| 59 | 
            -
                    unless  | 
| 59 | 
            +
                    unless args.has_key?(:type) 
         | 
| 60 60 | 
             
                      #default to type ActiveFedora::Datastream
         | 
| 61 | 
            -
                      args | 
| 61 | 
            +
                      args[:type] = "ActiveFedora::Datastream"
         | 
| 62 | 
            +
                    else
         | 
| 63 | 
            +
                      # stringify class/model names
         | 
| 64 | 
            +
                      args[:type] = args[:type].name if args[:type].is_a? Class
         | 
| 62 65 | 
             
                    end
         | 
| 63 66 | 
             
                    class_named_datastreams_desc[args[:name]]= args   
         | 
| 64 67 | 
             
                    create_named_datastream_finders(args[:name],args[:prefix])
         | 
| @@ -44,7 +44,11 @@ module ActiveFedora::Rdf::Identifiable | |
| 44 44 | 
             
                # @see ActiveFedora::Rdf::Resource.from_uri
         | 
| 45 45 | 
             
                # @param [RDF::URI] uri URI that is being looked up.
         | 
| 46 46 | 
             
                def from_uri(uri,_)
         | 
| 47 | 
            -
                   | 
| 47 | 
            +
                  begin
         | 
| 48 | 
            +
                    self.find(pid_from_subject(uri))
         | 
| 49 | 
            +
                  rescue ActiveFedora::ObjectNotFoundError
         | 
| 50 | 
            +
                    self.ds_specs[resource_datastream.to_s][:type].resource_class.new(uri)
         | 
| 51 | 
            +
                  end
         | 
| 48 52 | 
             
                end
         | 
| 49 53 |  | 
| 50 54 | 
             
                ##
         | 
| @@ -103,6 +103,7 @@ module ActiveFedora::Rdf | |
| 103 103 | 
             
                        klass = properties[key[0..-12]]['class_name']
         | 
| 104 104 | 
             
                        klass = ActiveFedora.class_from_string(klass, final_parent.class) if klass.is_a? String
         | 
| 105 105 | 
             
                        value.is_a?(Hash) ? attributes_hash_to_list(values[key], klass) : attributes_to_list(value, klass)
         | 
| 106 | 
            +
                        values.delete key
         | 
| 106 107 | 
             
                      end
         | 
| 107 108 | 
             
                    end
         | 
| 108 109 | 
             
                    persist!
         | 
| @@ -11,6 +11,21 @@ module ActiveFedora | |
| 11 11 | 
             
                    raise ArgumentError, "Invalid arguments for Rdf Node configuration: #{args} on #{predicate}" unless args.empty?
         | 
| 12 12 | 
             
                  end
         | 
| 13 13 |  | 
| 14 | 
            +
                  def [](value)
         | 
| 15 | 
            +
                    value = value.to_sym
         | 
| 16 | 
            +
                    self.respond_to?(value) ? self.send(value) : nil
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def class_name
         | 
| 20 | 
            +
                    if @class_name.kind_of?(String)
         | 
| 21 | 
            +
                      begin
         | 
| 22 | 
            +
                        new_class = @class_name.constantize
         | 
| 23 | 
            +
                        @class_name = new_class
         | 
| 24 | 
            +
                      rescue NameError
         | 
| 25 | 
            +
                      end
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
                    @class_name
         | 
| 28 | 
            +
                  end
         | 
| 14 29 |  | 
| 15 30 | 
             
                  def with_index (&block)
         | 
| 16 31 | 
             
                    # needed for solrizer integration
         | 
| @@ -17,7 +17,7 @@ module ActiveFedora::Rdf | |
| 17 17 | 
             
              # You can pass a block to either to set index behavior.
         | 
| 18 18 | 
             
              module Properties
         | 
| 19 19 | 
             
                extend Deprecation
         | 
| 20 | 
            -
                attr_accessor : | 
| 20 | 
            +
                attr_accessor :config
         | 
| 21 21 |  | 
| 22 22 | 
             
                ##
         | 
| 23 23 | 
             
                # Registers properties for Resource-like classes
         | 
| @@ -25,38 +25,24 @@ module ActiveFedora::Rdf | |
| 25 25 | 
             
                # @param [Hash]  opts for this property, must include a :predicate
         | 
| 26 26 | 
             
                # @yield [index] index sets solr behaviors for the property
         | 
| 27 27 | 
             
                def property(name, opts={}, &block)
         | 
| 28 | 
            -
                  config[name] = ActiveFedora::Rdf::NodeConfig.new(name, opts[:predicate], opts.except(:predicate)).tap do |config|
         | 
| 28 | 
            +
                  self.config[name] = ActiveFedora::Rdf::NodeConfig.new(name, opts[:predicate], opts.except(:predicate)).tap do |config|
         | 
| 29 29 | 
             
                    config.with_index(&block) if block_given?
         | 
| 30 30 | 
             
                  end
         | 
| 31 31 | 
             
                  behaviors = config[name].behaviors.flatten if config[name].behaviors and not config[name].behaviors.empty?
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                  self.properties[name] = {
         | 
| 34 | 
            -
                    behaviors: behaviors,
         | 
| 35 | 
            -
                    type: config[name].type,
         | 
| 36 | 
            -
                    class_name: config[name].class_name,
         | 
| 37 | 
            -
                    predicate: config[name].predicate,
         | 
| 38 | 
            -
                    term: config[name].term,
         | 
| 39 | 
            -
                    multivalue: config[name].multivalue
         | 
| 40 | 
            -
                  }
         | 
| 41 32 | 
             
                  register_property(name)
         | 
| 42 33 | 
             
                end
         | 
| 43 34 |  | 
| 44 | 
            -
                def properties
         | 
| 45 | 
            -
                  @properties ||= if superclass.respond_to? :properties
         | 
| 46 | 
            -
                    superclass.properties.dup
         | 
| 47 | 
            -
                  else
         | 
| 48 | 
            -
                    {}.with_indifferent_access
         | 
| 49 | 
            -
                  end
         | 
| 50 | 
            -
                end
         | 
| 51 | 
            -
             | 
| 52 35 | 
             
                def config
         | 
| 53 36 | 
             
                  @config ||= if superclass.respond_to? :config
         | 
| 54 | 
            -
                    superclass. | 
| 37 | 
            +
                    superclass.config.dup
         | 
| 55 38 | 
             
                  else
         | 
| 56 39 | 
             
                    {}.with_indifferent_access
         | 
| 57 40 | 
             
                  end
         | 
| 58 41 | 
             
                end
         | 
| 59 42 |  | 
| 43 | 
            +
                alias_method :properties, :config
         | 
| 44 | 
            +
                alias_method :properties=, :config=
         | 
| 45 | 
            +
             | 
| 60 46 | 
             
                def config_for_term_or_uri(term)
         | 
| 61 47 | 
             
                  return config[term.to_sym] unless term.kind_of? RDF::Resource
         | 
| 62 48 | 
             
                  config.each { |k, v| return v if v.predicate == term.to_uri }
         | 
| @@ -33,14 +33,14 @@ module ActiveFedora | |
| 33 33 | 
             
                def metadata?
         | 
| 34 34 | 
             
                  true
         | 
| 35 35 | 
             
                end
         | 
| 36 | 
            -
             | 
| 36 | 
            +
             | 
| 37 37 | 
             
                def content
         | 
| 38 38 | 
             
                  serialize
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 41 | 
             
                def content=(content)
         | 
| 42 42 | 
             
                  resource.clear!
         | 
| 43 | 
            -
                  resource <<  | 
| 43 | 
            +
                  resource << deserialize(content)
         | 
| 44 44 | 
             
                  content
         | 
| 45 45 | 
             
                end
         | 
| 46 46 |  | 
| @@ -62,14 +62,14 @@ module ActiveFedora | |
| 62 62 | 
             
                # set_value, get_value, and property accessors are delegated to this object.
         | 
| 63 63 | 
             
                def resource
         | 
| 64 64 | 
             
                  @resource ||= begin
         | 
| 65 | 
            -
                                  r = self. | 
| 65 | 
            +
                                  r = self.singleton_class.resource_class.new(digital_object ? self.class.rdf_subject.call(self) : nil)
         | 
| 66 66 | 
             
                                  r.singleton_class.properties = self.class.properties
         | 
| 67 67 | 
             
                                  r.singleton_class.properties.keys.each do |property|
         | 
| 68 68 | 
             
                                    r.singleton_class.send(:register_property, property)
         | 
| 69 69 | 
             
                                  end
         | 
| 70 70 | 
             
                                  r.datastream = self
         | 
| 71 71 | 
             
                                  r.singleton_class.accepts_nested_attributes_for(*nested_attributes_options.keys) unless nested_attributes_options.blank?
         | 
| 72 | 
            -
                                  r <<  | 
| 72 | 
            +
                                  r << deserialize
         | 
| 73 73 | 
             
                                  r
         | 
| 74 74 | 
             
                                end
         | 
| 75 75 | 
             
                end
         | 
| @@ -101,6 +101,10 @@ module ActiveFedora | |
| 101 101 | 
             
                def deserialize(data=nil)
         | 
| 102 102 | 
             
                  return RDF::Graph.new if new? && data.nil?
         | 
| 103 103 | 
             
                  data ||= datastream_content
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                  # Because datastream_content can return nil, we should check that here.
         | 
| 106 | 
            +
                  return repository if data.nil?
         | 
| 107 | 
            +
             | 
| 104 108 | 
             
                  data.force_encoding('utf-8')
         | 
| 105 109 | 
             
                  RDF::Graph.new << RDF::Reader.for(serialization_format).new(data)
         | 
| 106 110 | 
             
                end
         | 
| @@ -77,11 +77,15 @@ module ActiveFedora::Rdf | |
| 77 77 |  | 
| 78 78 | 
             
                def attributes=(values)
         | 
| 79 79 | 
             
                  raise ArgumentError, "values must be a Hash, you provided #{values.class}" unless values.kind_of? Hash
         | 
| 80 | 
            -
                  values.with_indifferent_access | 
| 81 | 
            -
             | 
| 80 | 
            +
                  values = values.with_indifferent_access
         | 
| 81 | 
            +
                  set_subject!(values.delete(:id)) if values.has_key?(:id) and node?
         | 
| 82 | 
            +
                  values.each do |key, value|
         | 
| 83 | 
            +
                    if properties.keys.include?(key)
         | 
| 82 84 | 
             
                      set_value(rdf_subject, key, value)
         | 
| 83 85 | 
             
                    elsif self.singleton_class.nested_attributes_options.keys.map{ |k| "#{k}_attributes"}.include?(key)
         | 
| 84 86 | 
             
                      send("#{key}=".to_sym, value)
         | 
| 87 | 
            +
                    else
         | 
| 88 | 
            +
                      raise ArgumentError, "No association found for name `#{key}'. Has it been defined yet?"
         | 
| 85 89 | 
             
                    end
         | 
| 86 90 | 
             
                  end
         | 
| 87 91 | 
             
                end
         | 
| @@ -318,7 +322,7 @@ module ActiveFedora::Rdf | |
| 318 322 | 
             
                    return RDF::Node(uri_or_str[2..-1]) if uri_or_str.start_with? '_:'
         | 
| 319 323 | 
             
                    return RDF::URI(uri_or_str) if RDF::URI(uri_or_str).valid? and (URI.scheme_list.include?(RDF::URI.new(uri_or_str).scheme.upcase) or RDF::URI.new(uri_or_str).scheme == 'info')
         | 
| 320 324 | 
             
                    return RDF::URI(self.base_uri.to_s + (self.base_uri.to_s[-1,1] =~ /(\/|#)/ ? '' : '/') + uri_or_str) if base_uri && !uri_or_str.start_with?(base_uri.to_s)
         | 
| 321 | 
            -
                    raise RuntimeError "could not make a valid RDF::URI from #{uri_or_str}"
         | 
| 325 | 
            +
                    raise RuntimeError, "could not make a valid RDF::URI from #{uri_or_str}"
         | 
| 322 326 | 
             
                  end
         | 
| 323 327 | 
             
              end
         | 
| 324 328 | 
             
            end
         | 
| @@ -55,7 +55,18 @@ module ActiveFedora | |
| 55 55 | 
             
                      klass.find(hit[SOLR_DOCUMENT_ID], cast: true)
         | 
| 56 56 | 
             
                    end
         | 
| 57 57 | 
             
                  end
         | 
| 58 | 
            -
             | 
| 58 | 
            +
             | 
| 59 | 
            +
                  #Returns all possible classes for the solr object
         | 
| 60 | 
            +
                  def classes_from_solr_document(hit, opts = {})
         | 
| 61 | 
            +
                    #Add ActiveFedora::Base as never stored in Solr explicitely.
         | 
| 62 | 
            +
                    classes = [ActiveFedora::Base]
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    hit[HAS_MODEL_SOLR_FIELD].each { |value| classes << Model.from_class_uri(value) }
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    classes
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  #Returns the best singular class for the solr object
         | 
| 59 70 | 
             
                  def class_from_solr_document(hit, opts = {})
         | 
| 60 71 | 
             
                    #Set the default starting point to the class specified, if available.
         | 
| 61 72 | 
             
                    best_model_match = Model.from_class_uri(opts[:class]) unless opts[:class].nil?
         | 
| @@ -1,3 +1,3 @@ | |
| 1 1 | 
             
            module ActiveFedora
         | 
| 2 | 
            -
              VERSION = "7.0. | 
| 3 | 
            -
            end
         | 
| 2 | 
            +
              VERSION = "7.0.2"
         | 
| 3 | 
            +
            end
         | 
| @@ -105,9 +105,9 @@ describe ActiveFedora::Base do | |
| 105 105 |  | 
| 106 106 | 
             
                    it "should let you shift onto the association" do
         | 
| 107 107 | 
             
                      @library.new_record?.should be_true
         | 
| 108 | 
            -
                      @library.books.size == 0
         | 
| 108 | 
            +
                      @library.books.size.should == 0
         | 
| 109 109 | 
             
                      @library.books.should == []
         | 
| 110 | 
            -
                      @library.book_ids.should ==[]
         | 
| 110 | 
            +
                      @library.book_ids.should == []
         | 
| 111 111 | 
             
                      @library.books << @book
         | 
| 112 112 | 
             
                      @library.books.should == [@book]
         | 
| 113 113 | 
             
                      @library.book_ids.should ==[@book.pid]
         | 
| @@ -76,7 +76,7 @@ describe ActiveFedora::Base do | |
| 76 76 | 
             
                end
         | 
| 77 77 | 
             
              end
         | 
| 78 78 |  | 
| 79 | 
            -
              describe "casting inheritance  | 
| 79 | 
            +
              describe "casting inheritance detailed test cases" do
         | 
| 80 80 | 
             
                before :all do
         | 
| 81 81 | 
             
                  class SimpleObject < ActiveFedora::Base
         | 
| 82 82 | 
             
                    belongs_to :simple_collection, property: :is_part_of, class_name: 'SimpleCollection'
         | 
| @@ -109,15 +109,18 @@ describe ActiveFedora::Base do | |
| 109 109 |  | 
| 110 110 | 
             
                    @simple_object = SimpleObject.create
         | 
| 111 111 | 
             
                    @simple_object_second = SimpleObject.create
         | 
| 112 | 
            +
                    @simple_object_third = SimpleObject.create
         | 
| 112 113 | 
             
                    @complex_object = ComplexObject.create
         | 
| 114 | 
            +
                    @complex_object_second = ComplexObject.create
         | 
| 113 115 |  | 
| 114 116 | 
             
                    #Need to add the simpler cmodel here as currently inheritance support is read-only.
         | 
| 115 117 | 
             
                    #See ActiveFedora pull request 207 on how to do this programmatically.
         | 
| 116 118 | 
             
                    @complex_object.add_relationship(:has_model, @complex_object.class.superclass.to_class_uri)
         | 
| 119 | 
            +
                    @complex_collection.add_relationship(:has_model, @complex_collection.class.superclass.to_class_uri)
         | 
| 117 120 |  | 
| 118 121 | 
             
                    @simple_collection.objects = [@simple_object, @simple_object_second, @complex_object]
         | 
| 119 122 | 
             
                    @simple_collection.save!
         | 
| 120 | 
            -
                    @complex_collection.objects = [@ | 
| 123 | 
            +
                    @complex_collection.objects = [@simple_object_third, @complex_object_second]
         | 
| 121 124 | 
             
                    @complex_collection.save!
         | 
| 122 125 | 
             
                    @complex_object.save!
         | 
| 123 126 | 
             
                    @simple_object.save!
         | 
| @@ -126,32 +129,41 @@ describe ActiveFedora::Base do | |
| 126 129 |  | 
| 127 130 |  | 
| 128 131 | 
             
                  it "casted association methods should work and return the most complex class" do
         | 
| 132 | 
            +
             | 
| 129 133 | 
             
                    @complex_object.simple_collection.should be_instance_of SimpleCollection
         | 
| 130 | 
            -
                    @complex_object.complex_collection.should  | 
| 134 | 
            +
                    @complex_object.complex_collection.should be_nil
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                    @complex_object_second.simple_collection.should be_instance_of ComplexCollection
         | 
| 137 | 
            +
                    @complex_object_second.complex_collection.should be_instance_of ComplexCollection
         | 
| 131 138 |  | 
| 132 139 | 
             
                    @simple_object.simple_collection.should be_instance_of SimpleCollection
         | 
| 133 | 
            -
                    @simple_object.complex_collection.should  | 
| 140 | 
            +
                    @simple_object.complex_collection.should be_nil
         | 
| 141 | 
            +
             | 
| 134 142 | 
             
                    @simple_object_second.simple_collection.should be_instance_of SimpleCollection
         | 
| 135 143 | 
             
                    @simple_object_second.complex_collection.should be_nil
         | 
| 136 144 |  | 
| 137 | 
            -
                    @ | 
| 138 | 
            -
                    @complex_collection. | 
| 145 | 
            +
                    @simple_object_third.simple_collection.should be_instance_of ComplexCollection
         | 
| 146 | 
            +
                    @simple_object_third.complex_collection.should be_instance_of ComplexCollection
         | 
| 139 147 |  | 
| 148 | 
            +
                    @simple_collection.objects.size.should == 3
         | 
| 140 149 | 
             
                    @simple_collection.objects[0].should be_instance_of SimpleObject
         | 
| 141 150 | 
             
                    @simple_collection.objects[1].should be_instance_of SimpleObject
         | 
| 142 151 | 
             
                    @simple_collection.objects[2].should be_instance_of ComplexObject
         | 
| 143 152 |  | 
| 153 | 
            +
                    @complex_collection.objects.size.should == 2
         | 
| 154 | 
            +
                    @complex_collection.objects[0].should be_instance_of SimpleObject
         | 
| 155 | 
            +
                    @complex_collection.objects[1].should be_instance_of ComplexObject
         | 
| 156 | 
            +
             | 
| 144 157 | 
             
                  end
         | 
| 145 158 |  | 
| 146 159 | 
             
                  it "specified ending relationships should ignore classes not specified" do
         | 
| 147 | 
            -
                    @ | 
| 148 | 
            -
                    @complex_collection.complex_objects[0].should be_instance_of ComplexObject
         | 
| 149 | 
            -
                    @complex_collection.complex_objects[1].should be_nil
         | 
| 150 | 
            -
             | 
| 151 | 
            -
                    @simple_collection.complex_objects.count.should == 1
         | 
| 160 | 
            +
                    @simple_collection.complex_objects.size.should == 1
         | 
| 152 161 | 
             
                    @simple_collection.complex_objects[0].should be_instance_of ComplexObject
         | 
| 153 162 | 
             
                    @simple_collection.complex_objects[1].should be_nil
         | 
| 154 163 |  | 
| 164 | 
            +
                    @complex_collection.complex_objects.size.should == 1
         | 
| 165 | 
            +
                    @complex_collection.complex_objects[0].should be_instance_of ComplexObject
         | 
| 166 | 
            +
                    @complex_collection.complex_objects[1].should be_nil
         | 
| 155 167 | 
             
                  end
         | 
| 156 168 |  | 
| 157 169 | 
             
                  after do
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            describe " | 
| 3 | 
            +
            describe "Collection members" do
         | 
| 4 4 | 
             
              before :all do
         | 
| 5 5 | 
             
                class Library < ActiveFedora::Base 
         | 
| 6 6 | 
             
                  has_many :books
         | 
| @@ -14,7 +14,17 @@ describe "Looking up collection members" do | |
| 14 14 | 
             
                Object.send(:remove_const, :Book)
         | 
| 15 15 | 
             
                Object.send(:remove_const, :Library)
         | 
| 16 16 | 
             
              end
         | 
| 17 | 
            -
              describe "of has_many" do
         | 
| 17 | 
            +
              describe "size of has_many" do
         | 
| 18 | 
            +
                let(:library) { Library.create }
         | 
| 19 | 
            +
                context "when no members" do
         | 
| 20 | 
            +
                  it "should cache the count" do
         | 
| 21 | 
            +
                    expect(library.books).not_to be_loaded
         | 
| 22 | 
            +
                    expect(library.books.size).to eq(0)
         | 
| 23 | 
            +
                    expect(library.books).to be_loaded
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
              describe "looking up has_many" do
         | 
| 18 28 | 
             
                let(:book) { Book.create }
         | 
| 19 29 | 
             
                let(:library) { Library.create() }
         | 
| 20 30 | 
             
                before do
         | 
| @@ -34,6 +44,12 @@ describe "Looking up collection members" do | |
| 34 44 | 
             
                  expect(library.books).to eq [book]
         | 
| 35 45 | 
             
                  expect(library.books.loaded?).to be_true
         | 
| 36 46 | 
             
                end
         | 
| 47 | 
            +
                it "should load from solr" do
         | 
| 48 | 
            +
                  expect(library.books.load_from_solr.map {|r| r["id"]}).to eq([book.pid])
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
                it "should load from solr with options" do
         | 
| 51 | 
            +
                  expect(library.books.load_from_solr(rows: 0).size).to eq(0)
         | 
| 52 | 
            +
                end
         | 
| 37 53 | 
             
              end
         | 
| 38 54 | 
             
            end
         | 
| 39 55 |  | 
| @@ -69,7 +69,10 @@ describe "Nesting attribute behavior of RDFDatastream" do | |
| 69 69 | 
             
                          '0' =>
         | 
| 70 70 | 
             
                          {
         | 
| 71 71 | 
             
                            elementList_attributes: [{
         | 
| 72 | 
            -
                              topicElement_attributes: [{ | 
| 72 | 
            +
                              topicElement_attributes: [{
         | 
| 73 | 
            +
                                id: 'http://library.ucsd.edu/ark:/20775/bb3333333x',
         | 
| 74 | 
            +
                                elementValue:"Cosmology"
         | 
| 75 | 
            +
                                 }]
         | 
| 73 76 | 
             
                              }]
         | 
| 74 77 | 
             
                          },
         | 
| 75 78 | 
             
                          '1' =>
         | 
| @@ -81,7 +84,8 @@ describe "Nesting attribute behavior of RDFDatastream" do | |
| 81 84 | 
             
                        },
         | 
| 82 85 | 
             
                        personalName_attributes: [
         | 
| 83 86 | 
             
                          {
         | 
| 84 | 
            -
                             | 
| 87 | 
            +
                            id: 'http://library.ucsd.edu/ark:20775/jefferson',
         | 
| 88 | 
            +
                            elementList_attributes: [{                         
         | 
| 85 89 | 
             
                              fullNameElement: "Jefferson, Thomas",
         | 
| 86 90 | 
             
                              dateNameElement: "1743-1826"
         | 
| 87 91 | 
             
                            }]
         | 
| @@ -107,22 +111,33 @@ describe "Nesting attribute behavior of RDFDatastream" do | |
| 107 111 | 
             
                    end
         | 
| 108 112 | 
             
                  end
         | 
| 109 113 |  | 
| 110 | 
            -
                   | 
| 111 | 
            -
                     | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
                     | 
| 115 | 
            -
             | 
| 116 | 
            -
                     | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
                     | 
| 122 | 
            -
                     | 
| 123 | 
            -
                     | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 114 | 
            +
                  context "from nested objects" do
         | 
| 115 | 
            +
                    before do
         | 
| 116 | 
            +
                      # Replace the graph's contents with the Hash
         | 
| 117 | 
            +
                      subject.attributes = params[:myResource]
         | 
| 118 | 
            +
                    end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
                    it 'should have attributes' do
         | 
| 121 | 
            +
                      subject.topic[0].elementList.first[0].elementValue.should == ["Cosmology"]
         | 
| 122 | 
            +
                      subject.topic[1].elementList.first[0].elementValue.should == ["Quantum Behavior"]
         | 
| 123 | 
            +
                      subject.personalName.first.elementList.first.fullNameElement.should == ["Jefferson, Thomas"]
         | 
| 124 | 
            +
                      subject.personalName.first.elementList.first.dateNameElement.should == ["1743-1826"]
         | 
| 125 | 
            +
                    end
         | 
| 126 | 
            +
                    
         | 
| 127 | 
            +
                    it 'should build nodes with ids' do
         | 
| 128 | 
            +
                      expect(subject.topic[0].elementList.first[0].rdf_subject).to eq 'http://library.ucsd.edu/ark:/20775/bb3333333x'
         | 
| 129 | 
            +
                      expect(subject.personalName.first.rdf_subject).to eq  'http://library.ucsd.edu/ark:20775/jefferson'
         | 
| 130 | 
            +
                    end
         | 
| 131 | 
            +
                    
         | 
| 132 | 
            +
                    it 'should fail when writing to a non-predicate' do
         | 
| 133 | 
            +
                      attributes = { topic_attributes: { '0' => { elementList_attributes: [{ topicElement_attributes: [{ fake_predicate:"Cosmology" }] }]}}}
         | 
| 134 | 
            +
                      expect{ subject.attributes = attributes }.to raise_error ArgumentError
         | 
| 135 | 
            +
                    end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                    it 'should fail when writing to a non-predicate with a setter method' do
         | 
| 138 | 
            +
                      attributes = { topic_attributes: { '0' => { elementList_attributes: [{ topicElement_attributes: [{ name:"Cosmology" }] }]}}}
         | 
| 139 | 
            +
                      expect{ subject.attributes = attributes }.to raise_error ArgumentError
         | 
| 140 | 
            +
                    end
         | 
| 126 141 | 
             
                  end
         | 
| 127 142 | 
             
                end
         | 
| 128 143 |  | 
| @@ -149,9 +149,10 @@ describe ActiveFedora::DatastreamCollections do | |
| 149 149 |  | 
| 150 150 | 
             
              describe '#add_named_file_datastream' do
         | 
| 151 151 | 
             
                before do
         | 
| 152 | 
            +
                  class MockDS < ActiveFedora::Datastream; end
         | 
| 152 153 | 
             
                  class MockAddNamedFileDatastream < ActiveFedora::Base
         | 
| 153 154 | 
             
                    include ActiveFedora::DatastreamCollections
         | 
| 154 | 
            -
                    has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=> | 
| 155 | 
            +
                    has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>MockDS, :mimeType=>"image/jpeg", :controlGroup=>'M'
         | 
| 155 156 | 
             
                    has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M' 
         | 
| 156 157 | 
             
                    has_datastream :name=>"anymime", :type=>ActiveFedora::Datastream, :controlGroup=>'M' 
         | 
| 157 158 | 
             
                  end
         | 
| @@ -165,7 +166,7 @@ describe ActiveFedora::DatastreamCollections do | |
| 165 166 | 
             
                  f.stub(:content_type).and_return("image/jpeg")
         | 
| 166 167 | 
             
                  @test_object2.add_named_file_datastream("thumbnail",f)
         | 
| 167 168 | 
             
                  thumb = @test_object2.thumbnail.first
         | 
| 168 | 
            -
                  thumb.class.should ==  | 
| 169 | 
            +
                  thumb.class.should == MockDS
         | 
| 169 170 | 
             
                  thumb.mimeType.should == "image/jpeg"
         | 
| 170 171 | 
             
                  thumb.dsid.should == "THUMB1"
         | 
| 171 172 | 
             
                  thumb.controlGroup.should == "M"
         | 
| @@ -63,4 +63,26 @@ describe ActiveFedora::RDFDatastream do | |
| 63 63 | 
             
                  result.dump(:ntriples).should == "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n"
         | 
| 64 64 | 
             
                end
         | 
| 65 65 | 
             
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              describe 'content=' do
         | 
| 68 | 
            +
                let(:ds) {ActiveFedora::NtriplesRDFDatastream.new}
         | 
| 69 | 
            +
                it "should be able to handle non-utf-8 characters" do
         | 
| 70 | 
            +
                  data = "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n\xE2\x80\x99 \" .\n".force_encoding('ASCII-8BIT')
         | 
| 71 | 
            +
                  ds.content = data
         | 
| 72 | 
            +
                  expect(ds.resource.dump(:ntriples)).to eq "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n"
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
              end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              describe 'legacy non-utf-8 characters' do
         | 
| 77 | 
            +
                let(:ds) do
         | 
| 78 | 
            +
                  datastream = ActiveFedora::NtriplesRDFDatastream.new
         | 
| 79 | 
            +
                  datastream.stub(:new?).and_return(false)
         | 
| 80 | 
            +
                  datastream.stub(:datastream_content).and_return("<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n\xE2\x80\x99 \" .\n".force_encoding('ASCII-8BIT'))
         | 
| 81 | 
            +
                  datastream
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
                it "should not error on access" do
         | 
| 84 | 
            +
                  expect(ds.resource.dump(:ntriples)).to eq "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n"
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
             | 
| 66 88 | 
             
            end
         | 
| @@ -49,6 +49,17 @@ describe ActiveFedora::Rdf::Properties do | |
| 49 49 | 
             
                  DummyProperties.property :title, :predicate => RDF::DC.title, :class_name => RDF::Literal
         | 
| 50 50 | 
             
                  expect(DummyProperties.properties[:title][:class_name]).to eq RDF::Literal
         | 
| 51 51 | 
             
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                it "should constantize string class names" do
         | 
| 54 | 
            +
                  DummyProperties.property :title, :predicate => RDF::DC.title, :class_name => "RDF::Literal"
         | 
| 55 | 
            +
                  expect(DummyProperties.properties[:title][:class_name]).to eq RDF::Literal
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                it "should keep strings which it can't constantize as strings" do
         | 
| 59 | 
            +
                  DummyProperties.property :title, :predicate => RDF::DC.title, :class_name => "FakeClassName"
         | 
| 60 | 
            +
                  expect(DummyProperties.properties[:title][:class_name]).to eq "FakeClassName"
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 52 63 | 
             
              end
         | 
| 53 64 |  | 
| 54 65 | 
             
              context "when using a subclass" do
         | 
| @@ -211,6 +211,17 @@ describe ActiveFedora::RDFDatastream do | |
| 211 211 | 
             
                  subject.reload
         | 
| 212 212 | 
             
                  expect(subject.descMetadata.creator.first).to be_kind_of(ActiveFedora::Base)
         | 
| 213 213 | 
             
                end
         | 
| 214 | 
            +
                context "when the AF:Base object is deleted" do
         | 
| 215 | 
            +
                  before do
         | 
| 216 | 
            +
                    subject.save
         | 
| 217 | 
            +
                    @new_object.destroy
         | 
| 218 | 
            +
                  end
         | 
| 219 | 
            +
                  it "should give back an AF::Rdf::Resource" do
         | 
| 220 | 
            +
                    subject.reload
         | 
| 221 | 
            +
                    expect(subject.descMetadata.creator.first).to be_kind_of(ActiveFedora::Rdf::Resource)
         | 
| 222 | 
            +
                    expect(subject.descMetadata.creator.first.rdf_subject).to eq @new_object.resource.rdf_subject
         | 
| 223 | 
            +
                  end
         | 
| 224 | 
            +
                end
         | 
| 214 225 |  | 
| 215 226 | 
             
                it "should allow for deep attributes to be set directly" do
         | 
| 216 227 | 
             
                  subject.descMetadata.creator.first.title = "Bla"
         | 
| @@ -29,6 +29,10 @@ describe ActiveFedora::Rdf::Resource do | |
| 29 29 | 
             
                  expect(subject.rdf_subject).to eq RDF::URI('http://example.org/moomin')
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 | 
            +
                it "should raise an error when setting to an invalid uri" do
         | 
| 33 | 
            +
                  expect{ subject.set_subject!('not_a_uri') }.to raise_error "could not make a valid RDF::URI from not_a_uri"
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 32 36 | 
             
                describe 'when changing subject' do
         | 
| 33 37 | 
             
                  before do
         | 
| 34 38 | 
             
                    subject << RDF::Statement.new(subject.rdf_subject, RDF::DC.title, RDF::Literal('Comet in Moominland'))
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,8 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: active-fedora
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 7.0. | 
| 4 | 
            +
              version: 7.0.2
         | 
| 5 | 
            +
              prerelease: 
         | 
| 5 6 | 
             
            platform: ruby
         | 
| 6 7 | 
             
            authors:
         | 
| 7 8 | 
             
            - Matt Zumwalt
         | 
| @@ -10,258 +11,294 @@ authors: | |
| 10 11 | 
             
            autorequire: 
         | 
| 11 12 | 
             
            bindir: bin
         | 
| 12 13 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2014-04- | 
| 14 | 
            +
            date: 2014-04-17 00:00:00.000000000 Z
         | 
| 14 15 | 
             
            dependencies:
         | 
| 15 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 17 | 
             
              name: rsolr
         | 
| 17 18 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 19 | 
            +
                none: false
         | 
| 18 20 | 
             
                requirements:
         | 
| 19 | 
            -
                - -  | 
| 21 | 
            +
                - - ~>
         | 
| 20 22 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 23 | 
             
                    version: 1.0.10.pre1
         | 
| 22 24 | 
             
              type: :runtime
         | 
| 23 25 | 
             
              prerelease: false
         | 
| 24 26 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 27 | 
            +
                none: false
         | 
| 25 28 | 
             
                requirements:
         | 
| 26 | 
            -
                - -  | 
| 29 | 
            +
                - - ~>
         | 
| 27 30 | 
             
                  - !ruby/object:Gem::Version
         | 
| 28 31 | 
             
                    version: 1.0.10.pre1
         | 
| 29 32 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 30 33 | 
             
              name: om
         | 
| 31 34 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 35 | 
            +
                none: false
         | 
| 32 36 | 
             
                requirements:
         | 
| 33 | 
            -
                - -  | 
| 37 | 
            +
                - - ~>
         | 
| 34 38 | 
             
                  - !ruby/object:Gem::Version
         | 
| 35 39 | 
             
                    version: 3.0.0
         | 
| 36 40 | 
             
              type: :runtime
         | 
| 37 41 | 
             
              prerelease: false
         | 
| 38 42 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 43 | 
            +
                none: false
         | 
| 39 44 | 
             
                requirements:
         | 
| 40 | 
            -
                - -  | 
| 45 | 
            +
                - - ~>
         | 
| 41 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 42 47 | 
             
                    version: 3.0.0
         | 
| 43 48 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 44 49 | 
             
              name: nom-xml
         | 
| 45 50 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                none: false
         | 
| 46 52 | 
             
                requirements:
         | 
| 47 | 
            -
                - -  | 
| 53 | 
            +
                - - ! '>='
         | 
| 48 54 | 
             
                  - !ruby/object:Gem::Version
         | 
| 49 55 | 
             
                    version: 0.5.1
         | 
| 50 56 | 
             
              type: :runtime
         | 
| 51 57 | 
             
              prerelease: false
         | 
| 52 58 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 59 | 
            +
                none: false
         | 
| 53 60 | 
             
                requirements:
         | 
| 54 | 
            -
                - -  | 
| 61 | 
            +
                - - ! '>='
         | 
| 55 62 | 
             
                  - !ruby/object:Gem::Version
         | 
| 56 63 | 
             
                    version: 0.5.1
         | 
| 57 64 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 58 65 | 
             
              name: activesupport
         | 
| 59 66 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 67 | 
            +
                none: false
         | 
| 60 68 | 
             
                requirements:
         | 
| 61 | 
            -
                - -  | 
| 69 | 
            +
                - - ! '>='
         | 
| 62 70 | 
             
                  - !ruby/object:Gem::Version
         | 
| 63 71 | 
             
                    version: 3.0.0
         | 
| 64 72 | 
             
              type: :runtime
         | 
| 65 73 | 
             
              prerelease: false
         | 
| 66 74 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 75 | 
            +
                none: false
         | 
| 67 76 | 
             
                requirements:
         | 
| 68 | 
            -
                - -  | 
| 77 | 
            +
                - - ! '>='
         | 
| 69 78 | 
             
                  - !ruby/object:Gem::Version
         | 
| 70 79 | 
             
                    version: 3.0.0
         | 
| 71 80 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 72 81 | 
             
              name: mediashelf-loggable
         | 
| 73 82 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 83 | 
            +
                none: false
         | 
| 74 84 | 
             
                requirements:
         | 
| 75 | 
            -
                - -  | 
| 85 | 
            +
                - - ! '>='
         | 
| 76 86 | 
             
                  - !ruby/object:Gem::Version
         | 
| 77 87 | 
             
                    version: '0'
         | 
| 78 88 | 
             
              type: :runtime
         | 
| 79 89 | 
             
              prerelease: false
         | 
| 80 90 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 91 | 
            +
                none: false
         | 
| 81 92 | 
             
                requirements:
         | 
| 82 | 
            -
                - -  | 
| 93 | 
            +
                - - ! '>='
         | 
| 83 94 | 
             
                  - !ruby/object:Gem::Version
         | 
| 84 95 | 
             
                    version: '0'
         | 
| 85 96 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 86 97 | 
             
              name: rubydora
         | 
| 87 98 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 99 | 
            +
                none: false
         | 
| 88 100 | 
             
                requirements:
         | 
| 89 | 
            -
                - -  | 
| 101 | 
            +
                - - ~>
         | 
| 90 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 91 103 | 
             
                    version: 1.7.4
         | 
| 92 104 | 
             
              type: :runtime
         | 
| 93 105 | 
             
              prerelease: false
         | 
| 94 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            +
                none: false
         | 
| 95 108 | 
             
                requirements:
         | 
| 96 | 
            -
                - -  | 
| 109 | 
            +
                - - ~>
         | 
| 97 110 | 
             
                  - !ruby/object:Gem::Version
         | 
| 98 111 | 
             
                    version: 1.7.4
         | 
| 99 112 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 100 113 | 
             
              name: linkeddata
         | 
| 101 114 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 115 | 
            +
                none: false
         | 
| 102 116 | 
             
                requirements:
         | 
| 103 | 
            -
                - -  | 
| 117 | 
            +
                - - ! '>='
         | 
| 104 118 | 
             
                  - !ruby/object:Gem::Version
         | 
| 105 119 | 
             
                    version: '0'
         | 
| 106 120 | 
             
              type: :runtime
         | 
| 107 121 | 
             
              prerelease: false
         | 
| 108 122 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 123 | 
            +
                none: false
         | 
| 109 124 | 
             
                requirements:
         | 
| 110 | 
            -
                - -  | 
| 125 | 
            +
                - - ! '>='
         | 
| 111 126 | 
             
                  - !ruby/object:Gem::Version
         | 
| 112 127 | 
             
                    version: '0'
         | 
| 113 128 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 114 129 | 
             
              name: rdf-rdfxml
         | 
| 115 130 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 131 | 
            +
                none: false
         | 
| 116 132 | 
             
                requirements:
         | 
| 117 | 
            -
                - -  | 
| 133 | 
            +
                - - ~>
         | 
| 118 134 | 
             
                  - !ruby/object:Gem::Version
         | 
| 119 135 | 
             
                    version: 1.1.0
         | 
| 120 136 | 
             
              type: :runtime
         | 
| 121 137 | 
             
              prerelease: false
         | 
| 122 138 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 139 | 
            +
                none: false
         | 
| 123 140 | 
             
                requirements:
         | 
| 124 | 
            -
                - -  | 
| 141 | 
            +
                - - ~>
         | 
| 125 142 | 
             
                  - !ruby/object:Gem::Version
         | 
| 126 143 | 
             
                    version: 1.1.0
         | 
| 127 144 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 128 145 | 
             
              name: deprecation
         | 
| 129 146 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 147 | 
            +
                none: false
         | 
| 130 148 | 
             
                requirements:
         | 
| 131 | 
            -
                - -  | 
| 149 | 
            +
                - - ! '>='
         | 
| 132 150 | 
             
                  - !ruby/object:Gem::Version
         | 
| 133 151 | 
             
                    version: '0'
         | 
| 134 152 | 
             
              type: :runtime
         | 
| 135 153 | 
             
              prerelease: false
         | 
| 136 154 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 155 | 
            +
                none: false
         | 
| 137 156 | 
             
                requirements:
         | 
| 138 | 
            -
                - -  | 
| 157 | 
            +
                - - ! '>='
         | 
| 139 158 | 
             
                  - !ruby/object:Gem::Version
         | 
| 140 159 | 
             
                    version: '0'
         | 
| 141 160 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 142 161 | 
             
              name: rdoc
         | 
| 143 162 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 163 | 
            +
                none: false
         | 
| 144 164 | 
             
                requirements:
         | 
| 145 | 
            -
                - -  | 
| 165 | 
            +
                - - ! '>='
         | 
| 146 166 | 
             
                  - !ruby/object:Gem::Version
         | 
| 147 167 | 
             
                    version: '0'
         | 
| 148 168 | 
             
              type: :development
         | 
| 149 169 | 
             
              prerelease: false
         | 
| 150 170 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 171 | 
            +
                none: false
         | 
| 151 172 | 
             
                requirements:
         | 
| 152 | 
            -
                - -  | 
| 173 | 
            +
                - - ! '>='
         | 
| 153 174 | 
             
                  - !ruby/object:Gem::Version
         | 
| 154 175 | 
             
                    version: '0'
         | 
| 155 176 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 156 177 | 
             
              name: yard
         | 
| 157 178 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 179 | 
            +
                none: false
         | 
| 158 180 | 
             
                requirements:
         | 
| 159 | 
            -
                - -  | 
| 181 | 
            +
                - - ! '>='
         | 
| 160 182 | 
             
                  - !ruby/object:Gem::Version
         | 
| 161 183 | 
             
                    version: '0'
         | 
| 162 184 | 
             
              type: :development
         | 
| 163 185 | 
             
              prerelease: false
         | 
| 164 186 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 187 | 
            +
                none: false
         | 
| 165 188 | 
             
                requirements:
         | 
| 166 | 
            -
                - -  | 
| 189 | 
            +
                - - ! '>='
         | 
| 167 190 | 
             
                  - !ruby/object:Gem::Version
         | 
| 168 191 | 
             
                    version: '0'
         | 
| 169 192 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 170 193 | 
             
              name: rake
         | 
| 171 194 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 195 | 
            +
                none: false
         | 
| 172 196 | 
             
                requirements:
         | 
| 173 | 
            -
                - -  | 
| 197 | 
            +
                - - ! '>='
         | 
| 174 198 | 
             
                  - !ruby/object:Gem::Version
         | 
| 175 199 | 
             
                    version: '0'
         | 
| 176 200 | 
             
              type: :development
         | 
| 177 201 | 
             
              prerelease: false
         | 
| 178 202 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 203 | 
            +
                none: false
         | 
| 179 204 | 
             
                requirements:
         | 
| 180 | 
            -
                - -  | 
| 205 | 
            +
                - - ! '>='
         | 
| 181 206 | 
             
                  - !ruby/object:Gem::Version
         | 
| 182 207 | 
             
                    version: '0'
         | 
| 183 208 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 184 209 | 
             
              name: jettywrapper
         | 
| 185 210 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 211 | 
            +
                none: false
         | 
| 186 212 | 
             
                requirements:
         | 
| 187 | 
            -
                - -  | 
| 213 | 
            +
                - - ! '>='
         | 
| 188 214 | 
             
                  - !ruby/object:Gem::Version
         | 
| 189 215 | 
             
                    version: 1.4.0
         | 
| 190 216 | 
             
              type: :development
         | 
| 191 217 | 
             
              prerelease: false
         | 
| 192 218 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 219 | 
            +
                none: false
         | 
| 193 220 | 
             
                requirements:
         | 
| 194 | 
            -
                - -  | 
| 221 | 
            +
                - - ! '>='
         | 
| 195 222 | 
             
                  - !ruby/object:Gem::Version
         | 
| 196 223 | 
             
                    version: 1.4.0
         | 
| 197 224 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 198 225 | 
             
              name: rspec
         | 
| 199 226 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 227 | 
            +
                none: false
         | 
| 200 228 | 
             
                requirements:
         | 
| 201 | 
            -
                - -  | 
| 229 | 
            +
                - - ! '>='
         | 
| 202 230 | 
             
                  - !ruby/object:Gem::Version
         | 
| 203 231 | 
             
                    version: 2.9.0
         | 
| 204 232 | 
             
              type: :development
         | 
| 205 233 | 
             
              prerelease: false
         | 
| 206 234 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 235 | 
            +
                none: false
         | 
| 207 236 | 
             
                requirements:
         | 
| 208 | 
            -
                - -  | 
| 237 | 
            +
                - - ! '>='
         | 
| 209 238 | 
             
                  - !ruby/object:Gem::Version
         | 
| 210 239 | 
             
                    version: 2.9.0
         | 
| 211 240 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 212 241 | 
             
              name: equivalent-xml
         | 
| 213 242 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 243 | 
            +
                none: false
         | 
| 214 244 | 
             
                requirements:
         | 
| 215 | 
            -
                - -  | 
| 245 | 
            +
                - - ! '>='
         | 
| 216 246 | 
             
                  - !ruby/object:Gem::Version
         | 
| 217 247 | 
             
                    version: '0'
         | 
| 218 248 | 
             
              type: :development
         | 
| 219 249 | 
             
              prerelease: false
         | 
| 220 250 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 251 | 
            +
                none: false
         | 
| 221 252 | 
             
                requirements:
         | 
| 222 | 
            -
                - -  | 
| 253 | 
            +
                - - ! '>='
         | 
| 223 254 | 
             
                  - !ruby/object:Gem::Version
         | 
| 224 255 | 
             
                    version: '0'
         | 
| 225 256 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 226 257 | 
             
              name: rest-client
         | 
| 227 258 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 259 | 
            +
                none: false
         | 
| 228 260 | 
             
                requirements:
         | 
| 229 | 
            -
                - -  | 
| 261 | 
            +
                - - ! '>='
         | 
| 230 262 | 
             
                  - !ruby/object:Gem::Version
         | 
| 231 263 | 
             
                    version: '0'
         | 
| 232 264 | 
             
              type: :development
         | 
| 233 265 | 
             
              prerelease: false
         | 
| 234 266 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 267 | 
            +
                none: false
         | 
| 235 268 | 
             
                requirements:
         | 
| 236 | 
            -
                - -  | 
| 269 | 
            +
                - - ! '>='
         | 
| 237 270 | 
             
                  - !ruby/object:Gem::Version
         | 
| 238 271 | 
             
                    version: '0'
         | 
| 239 272 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 240 273 | 
             
              name: webmock
         | 
| 241 274 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 275 | 
            +
                none: false
         | 
| 242 276 | 
             
                requirements:
         | 
| 243 | 
            -
                - -  | 
| 277 | 
            +
                - - ! '>='
         | 
| 244 278 | 
             
                  - !ruby/object:Gem::Version
         | 
| 245 279 | 
             
                    version: '0'
         | 
| 246 280 | 
             
              type: :development
         | 
| 247 281 | 
             
              prerelease: false
         | 
| 248 282 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 283 | 
            +
                none: false
         | 
| 249 284 | 
             
                requirements:
         | 
| 250 | 
            -
                - -  | 
| 285 | 
            +
                - - ! '>='
         | 
| 251 286 | 
             
                  - !ruby/object:Gem::Version
         | 
| 252 287 | 
             
                    version: '0'
         | 
| 253 288 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 254 289 | 
             
              name: simplecov
         | 
| 255 290 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 291 | 
            +
                none: false
         | 
| 256 292 | 
             
                requirements:
         | 
| 257 | 
            -
                - -  | 
| 293 | 
            +
                - - ~>
         | 
| 258 294 | 
             
                  - !ruby/object:Gem::Version
         | 
| 259 295 | 
             
                    version: 0.7.1
         | 
| 260 296 | 
             
              type: :development
         | 
| 261 297 | 
             
              prerelease: false
         | 
| 262 298 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 299 | 
            +
                none: false
         | 
| 263 300 | 
             
                requirements:
         | 
| 264 | 
            -
                - -  | 
| 301 | 
            +
                - - ~>
         | 
| 265 302 | 
             
                  - !ruby/object:Gem::Version
         | 
| 266 303 | 
             
                    version: 0.7.1
         | 
| 267 304 | 
             
            description: ActiveFedora provides for creating and managing objects in the Fedora
         | 
| @@ -274,10 +311,10 @@ extra_rdoc_files: | |
| 274 311 | 
             
            - LICENSE
         | 
| 275 312 | 
             
            - README.md
         | 
| 276 313 | 
             
            files:
         | 
| 277 | 
            -
            -  | 
| 278 | 
            -
            -  | 
| 279 | 
            -
            -  | 
| 280 | 
            -
            -  | 
| 314 | 
            +
            - .gitignore
         | 
| 315 | 
            +
            - .gitmodules
         | 
| 316 | 
            +
            - .mailmap
         | 
| 317 | 
            +
            - .travis.yml
         | 
| 281 318 | 
             
            - CONTRIBUTING.md
         | 
| 282 319 | 
             
            - CONTRIBUTORS.md
         | 
| 283 320 | 
             
            - Gemfile
         | 
| @@ -545,26 +582,27 @@ files: | |
| 545 582 | 
             
            homepage: https://github.com/projecthydra/active_fedora
         | 
| 546 583 | 
             
            licenses:
         | 
| 547 584 | 
             
            - APACHE2
         | 
| 548 | 
            -
            metadata: {}
         | 
| 549 585 | 
             
            post_install_message: 
         | 
| 550 586 | 
             
            rdoc_options: []
         | 
| 551 587 | 
             
            require_paths:
         | 
| 552 588 | 
             
            - lib
         | 
| 553 589 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 590 | 
            +
              none: false
         | 
| 554 591 | 
             
              requirements:
         | 
| 555 | 
            -
              - -  | 
| 592 | 
            +
              - - ! '>='
         | 
| 556 593 | 
             
                - !ruby/object:Gem::Version
         | 
| 557 594 | 
             
                  version: 1.9.3
         | 
| 558 595 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 596 | 
            +
              none: false
         | 
| 559 597 | 
             
              requirements:
         | 
| 560 | 
            -
              - -  | 
| 598 | 
            +
              - - ! '>='
         | 
| 561 599 | 
             
                - !ruby/object:Gem::Version
         | 
| 562 600 | 
             
                  version: '0'
         | 
| 563 601 | 
             
            requirements: []
         | 
| 564 602 | 
             
            rubyforge_project: 
         | 
| 565 | 
            -
            rubygems_version:  | 
| 603 | 
            +
            rubygems_version: 1.8.24
         | 
| 566 604 | 
             
            signing_key: 
         | 
| 567 | 
            -
            specification_version:  | 
| 605 | 
            +
            specification_version: 3
         | 
| 568 606 | 
             
            summary: A convenience libary for manipulating documents in the Fedora Repository.
         | 
| 569 607 | 
             
            test_files:
         | 
| 570 608 | 
             
            - spec/config_helper.rb
         | 
    
        checksums.yaml
    DELETED
    
    | @@ -1,7 +0,0 @@ | |
| 1 | 
            -
            ---
         | 
| 2 | 
            -
            SHA1:
         | 
| 3 | 
            -
              metadata.gz: 3c10a4702718ed6d75d2ae3a50d68f2f7df312ed
         | 
| 4 | 
            -
              data.tar.gz: 1f789a3692431f14efbda9e097f0e2edfdb87881
         | 
| 5 | 
            -
            SHA512:
         | 
| 6 | 
            -
              metadata.gz: 2a00cdb7d97f144159944cee46347cd092fc8251b54317c23aea390ba35861906077fac78890f28e7976c53f5ddcfae1320998c8532a4ecbcf752360035c97ce
         | 
| 7 | 
            -
              data.tar.gz: 8e73ac6816f0ca3bd51a3724c6654bdb1031d75ae938d6464b1e88423a590e5a5e725c0b986548dcbfb8c4ea85851fcf00365bf4ecc5d6ebb16dc63a109a771e
         |