active_fedora_relsint 0.3.0 → 0.4.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/.gitignore +4 -0
- data/.travis.yml +7 -1
- data/Rakefile +1 -1
- data/active_fedora_relsint.gemspec +4 -2
- data/config/fedora.yml +3 -3
- data/config/jetty.yml +6 -0
- data/fixtures/rels_int_test.xml +1 -0
- data/lib/active_fedora_relsint.rb +2 -0
- data/lib/active_fedora_relsint/datastream.rb +12 -4
- data/lib/active_fedora_relsint/rdf_xml_writer.rb +30 -0
- data/lib/active_fedora_relsint/version.rb +1 -1
- data/lib/tasks/active_fedora_relsint_dev.rake +13 -1
- data/spec/integration/relsint_spec.rb +18 -0
- data/spec/spec_helper.rb +10 -5
- data/spec/unit/relsint_spec.rb +46 -35
- metadata +58 -26
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 059d025a9c1151a15355876f60ff87e808520d33
         | 
| 4 | 
            +
              data.tar.gz: 08de94e141d50b1c3e8dd3a827ed2acd67cb10e8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2b029a74aa68d006905dd9273b576e2d70e782d32a7425f1a4e6038a46030fa4b2ee582792950aad9c2c91fb1f7459d563fef788ecc4138e7b064f3a41138050
         | 
| 7 | 
            +
              data.tar.gz: ae3de7a0bbdfae56084318a101e927e090854526ea540cd90cf18d658d0fea41513ecb567ffbc9343268c71354684736b32be032d5168b0b554e511142eb6709
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            language: ruby
         | 
| 2 | 
            +
            cache: bundler
         | 
| 3 | 
            +
            sudo: false
         | 
| 2 4 | 
             
            rvm:
         | 
| 3 5 | 
             
              - 1.9.3
         | 
| 4 | 
            -
              - 2. | 
| 6 | 
            +
              - 2.2.1
         | 
| 7 | 
            +
            jdk: 'oraclejdk8'
         | 
| 5 8 | 
             
            notifications:
         | 
| 6 9 | 
             
              email:
         | 
| 7 10 | 
             
                recipients:
         | 
| @@ -15,3 +18,6 @@ notifications: | |
| 15 18 | 
             
                  - "irc.freenode.org#projecthydra"
         | 
| 16 19 | 
             
                template:
         | 
| 17 20 | 
             
                  - "%{repository}//%{branch}@%{commit} by %{author}: %{message} - %{build_url}"
         | 
| 21 | 
            +
            env:
         | 
| 22 | 
            +
              global:
         | 
| 23 | 
            +
                - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
         | 
    
        data/Rakefile
    CHANGED
    
    
| @@ -14,13 +14,15 @@ Gem::Specification.new do |s| | |
| 14 14 |  | 
| 15 15 | 
             
              s.rubygems_version = %q{1.3.7}
         | 
| 16 16 |  | 
| 17 | 
            -
              s.add_dependency('active-fedora', ' | 
| 17 | 
            +
              s.add_dependency('active-fedora', '~> 7.0')
         | 
| 18 18 | 
             
              s.add_dependency("activesupport", '>= 3.2.0', "< 5.0")
         | 
| 19 19 | 
             
              s.add_development_dependency("yard")
         | 
| 20 20 | 
             
              s.add_development_dependency("RedCloth") # for RDoc formatting
         | 
| 21 21 | 
             
              s.add_development_dependency("rake")
         | 
| 22 22 | 
             
              s.add_development_dependency("rspec", ">= 2.9.0")
         | 
| 23 | 
            -
              s.add_development_dependency("loggable")
         | 
| 23 | 
            +
              s.add_development_dependency("mediashelf-loggable")
         | 
| 24 | 
            +
              s.add_development_dependency "jettywrapper", ">=1.4.0"
         | 
| 25 | 
            +
              s.add_development_dependency("simplecov")
         | 
| 24 26 |  | 
| 25 27 | 
             
              s.files         = `git ls-files`.split("\n")
         | 
| 26 28 | 
             
              s.test_files    = `git ls-files -- {test,spec}/*`.split("\n")
         | 
    
        data/config/fedora.yml
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            development:
         | 
| 2 2 | 
             
              user: fedoraAdmin
         | 
| 3 3 | 
             
              password: fedoraAdmin
         | 
| 4 | 
            -
              url: http:// | 
| 4 | 
            +
              url: http://localhost:8983/fedora
         | 
| 5 5 | 
             
            test:
         | 
| 6 6 | 
             
              user: fedoraAdmin
         | 
| 7 7 | 
             
              password: fedoraAdmin
         | 
| 8 | 
            -
              url: http:// | 
| 8 | 
            +
              url: http://localhost:8983/fedora-test
         | 
| 9 9 | 
             
            production:
         | 
| 10 10 | 
             
              user: fedoraAdmin
         | 
| 11 11 | 
             
              password: fedoraAdmin
         | 
| 12 | 
            -
              url: http:// | 
| 12 | 
            +
              url: http://localhost:8080/fedora
         | 
    
        data/config/jetty.yml
    ADDED
    
    
    
        data/fixtures/rels_int_test.xml
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
         | 
| 2 2 | 
             
            	<rdf:Description rdf:about="info:fedora/test:relsint/DC">
         | 
| 3 3 | 
             
            		<isMetadataFor rdf:resource="info:fedora/test:relsint/RELS-INT" xmlns="info:fedora/fedora-system:def/relations-external#"/>
         | 
| 4 | 
            +
            		<isMetadataFor rdf:resource="info:fedora/test:relsint/RELS-EXT" xmlns="info:fedora/fedora-system:def/relations-external#"/>
         | 
| 4 5 | 
             
            	</rdf:Description>
         | 
| 5 6 | 
             
            	<rdf:Description rdf:about="info:fedora/test:relsint/RELS-EXT">
         | 
| 6 7 | 
             
            		<asserts xmlns="http://projecthydra.org/ns/relations#">FOO</asserts>
         | 
| @@ -1,7 +1,9 @@ | |
| 1 | 
            +
            # -*- encoding : utf-8 -*-
         | 
| 1 2 | 
             
            require 'active_support'
         | 
| 2 3 | 
             
            module ActiveFedora
         | 
| 3 4 | 
             
              module RelsInt
         | 
| 4 5 | 
             
                extend ActiveSupport::Concern
         | 
| 6 | 
            +
                autoload :RDFXMLWriter, 'active_fedora_relsint/rdf_xml_writer'
         | 
| 5 7 | 
             
                autoload :Datastream, 'active_fedora_relsint/datastream'
         | 
| 6 8 | 
             
                included do
         | 
| 7 9 | 
             
                  self.has_metadata :name=>"RELS-INT", :type=>ActiveFedora::RelsInt::Datastream
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # -*- encoding : utf-8 -*-
         | 
| 1 2 | 
             
            module ActiveFedora
         | 
| 2 3 | 
             
              module RelsInt
         | 
| 3 4 | 
             
                class Datastream < ActiveFedora::Datastream
         | 
| @@ -74,7 +75,7 @@ module ActiveFedora | |
| 74 75 | 
             
                  end
         | 
| 75 76 |  | 
| 76 77 | 
             
                  def clear_relationship(datastream, predicate)
         | 
| 77 | 
            -
                    graph.delete [to_resource(datastream), predicate, nil]
         | 
| 78 | 
            +
                    graph.delete [to_resource(datastream), to_predicate(predicate), nil]
         | 
| 78 79 | 
             
                    relationships_will_change!
         | 
| 79 80 | 
             
                  end
         | 
| 80 81 |  | 
| @@ -105,9 +106,11 @@ module ActiveFedora | |
| 105 106 | 
             
                  end
         | 
| 106 107 |  | 
| 107 108 | 
             
                  def to_rels_int
         | 
| 108 | 
            -
                    xml = ActiveFedora::RDFXMLWriter.buffer(:max_depth=>1) do |writer|
         | 
| 109 | 
            -
                      writer.prefixes.merge! ActiveFedora::Predicates.predicate_namespaces
         | 
| 110 | 
            -
                       | 
| 109 | 
            +
                    xml = ActiveFedora::RelsInt::RDFXMLWriter.buffer(:max_depth=>1) do |writer|
         | 
| 110 | 
            +
                      #writer.prefixes.merge! ActiveFedora::Predicates.predicate_namespaces
         | 
| 111 | 
            +
                      graph.each_statement do |statement|
         | 
| 112 | 
            +
                        writer << statement
         | 
| 113 | 
            +
                      end
         | 
| 111 114 | 
             
                    end
         | 
| 112 115 | 
             
                    xml
         | 
| 113 116 | 
             
                  end
         | 
| @@ -141,6 +144,11 @@ module ActiveFedora | |
| 141 144 | 
             
                    solr_doc[self.class.profile_solr_name] = rel_hash.to_json unless rel_hash.blank?
         | 
| 142 145 | 
             
                    solr_doc
         | 
| 143 146 | 
             
                  end
         | 
| 147 | 
            +
                  class UriObject
         | 
| 148 | 
            +
                    def initialize(resource)
         | 
| 149 | 
            +
                      @resource = resource
         | 
| 150 | 
            +
                    end
         | 
| 151 | 
            +
                  end
         | 
| 144 152 | 
             
                end
         | 
| 145 153 | 
             
              end
         | 
| 146 154 | 
             
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            # -*- encoding : utf-8 -*-
         | 
| 2 | 
            +
            module ActiveFedora
         | 
| 3 | 
            +
              module RelsInt
         | 
| 4 | 
            +
                class RDFXMLWriter < ActiveFedora::RDFXMLWriter
         | 
| 5 | 
            +
                  # Write a predicate with one or more values.
         | 
| 6 | 
            +
                  #
         | 
| 7 | 
            +
                  # Values may be a combination of Literal and Resource (Node or URI).
         | 
| 8 | 
            +
                  # @param [RDF::Resource] predicate
         | 
| 9 | 
            +
                  #   Predicate to serialize
         | 
| 10 | 
            +
                  # @param [Array<RDF::Resource>] objects
         | 
| 11 | 
            +
                  #   Objects to serialize
         | 
| 12 | 
            +
                  # @return [String]
         | 
| 13 | 
            +
                  def predicate(predicate, objects)
         | 
| 14 | 
            +
                    add_debug {"predicate: #{predicate.inspect}, objects: #{objects}"}
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    return if objects.to_a.empty?
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    add_debug {"predicate: #{get_curie(predicate)}"}
         | 
| 19 | 
            +
                    render_property(predicate, objects) do |o, inlist=nil|
         | 
| 20 | 
            +
                      # Yields each object, for potential recursive definition.
         | 
| 21 | 
            +
                      # If nil is returned, a leaf is produced
         | 
| 22 | 
            +
                      #depth {subject(o, :rel => get_curie(predicate), :inlist => inlist, :element => (:li if objects.length > 1 || inlist))} if !is_done?(o) && @subjects.include?(o)
         | 
| 23 | 
            +
                      # we don't ever want to recurse, so nil it all
         | 
| 24 | 
            +
                      nil
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../")
         | 
| 2 | 
            -
             | 
| 2 | 
            +
            require 'jettywrapper'
         | 
| 3 | 
            +
            JETTY_ZIP_BASENAME = '7.x-stable'
         | 
| 4 | 
            +
            Jettywrapper.url = "https://github.com/projecthydra/hydra-jetty/archive/#{JETTY_ZIP_BASENAME}.zip"
         | 
| 3 5 | 
             
            namespace :active_fedora_relsint do
         | 
| 4 6 | 
             
              require 'active-fedora'
         | 
| 5 7 |  | 
| @@ -43,4 +45,14 @@ task :coverage do | |
| 43 45 | 
             
              Rake::Task["active_fedora_relsint:rspec"].invoke
         | 
| 44 46 | 
             
            end
         | 
| 45 47 |  | 
| 48 | 
            +
            end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            desc "CI build"
         | 
| 51 | 
            +
            task ci: 'jetty:unzip' do
         | 
| 52 | 
            +
              ENV['environment'] = "test"
         | 
| 53 | 
            +
              jetty_params = Jettywrapper.load_config
         | 
| 54 | 
            +
              error = Jettywrapper.wrap(jetty_params) do
         | 
| 55 | 
            +
                Rake::Task['active_fedora_relsint:coverage'].invoke
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
              raise "test failures: #{error}" if error
         | 
| 46 58 | 
             
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe ActiveFedora::RelsInt, type: :integration do
         | 
| 4 | 
            +
              before :all do
         | 
| 5 | 
            +
                class Foo < ActiveFedora::Base
         | 
| 6 | 
            +
                  include ActiveFedora::RelsInt
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
              after :all do
         | 
| 11 | 
            +
                Object.send(:remove_const, :Foo) # cleanup
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it "should load from solr" do
         | 
| 15 | 
            +
                f = Foo.create
         | 
| 16 | 
            +
                Foo.load_instance_from_solr(f.id).should_not be_nil
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -1,18 +1,23 @@ | |
| 1 1 | 
             
            ENV["environment"] ||= 'test'
         | 
| 2 2 | 
             
            require "bundler/setup"
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 4 | 
            +
            begin
         | 
| 5 5 | 
             
              require 'simplecov'
         | 
| 6 | 
            -
              require 'simplecov-rcov'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
         | 
| 9 6 | 
             
              SimpleCov.start
         | 
| 7 | 
            +
            rescue LoadError
         | 
| 8 | 
            +
              # as per active_fedora, we will not worry about lacking simplecov
         | 
| 9 | 
            +
              $stderr.puts "Couldn't load simplecov"
         | 
| 10 10 | 
             
            end
         | 
| 11 11 |  | 
| 12 12 | 
             
            require 'active-fedora'
         | 
| 13 13 | 
             
            require 'active_fedora_relsint'
         | 
| 14 14 | 
             
            require 'rspec'
         | 
| 15 15 | 
             
            require 'equivalent-xml/rspec_matchers'
         | 
| 16 | 
            +
            require 'logger'
         | 
| 17 | 
            +
            require 'loggable'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            include Loggable
         | 
| 20 | 
            +
             | 
| 16 21 | 
             
            logger.level = Logger::WARN if logger.respond_to? :level ###MediaShelf StubLogger doesn't have a level= method
         | 
| 17 22 | 
             
            $VERBOSE=nil
         | 
| 18 23 |  | 
| @@ -24,7 +29,7 @@ end | |
| 24 29 | 
             
            restore_spec_configuration
         | 
| 25 30 |  | 
| 26 31 | 
             
            RSpec.configure do |config|
         | 
| 27 | 
            -
              config. | 
| 32 | 
            +
              config.color = true
         | 
| 28 33 | 
             
            end
         | 
| 29 34 |  | 
| 30 35 | 
             
            def fixture(file)
         | 
    
        data/spec/unit/relsint_spec.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            describe ActiveFedora::RelsInt do
         | 
| 3 | 
            +
            describe ActiveFedora::RelsInt, type: :unit do
         | 
| 4 4 | 
             
              before :all do
         | 
| 5 5 | 
             
                class Foo < ActiveFedora::Base
         | 
| 6 6 | 
             
                  include ActiveFedora::RelsInt
         | 
| @@ -13,63 +13,65 @@ describe ActiveFedora::RelsInt do | |
| 13 13 |  | 
| 14 14 | 
             
              describe "modules" do
         | 
| 15 15 | 
             
                it "should exist" do
         | 
| 16 | 
            -
                  (defined? ActiveFedora::RelsInt). | 
| 17 | 
            -
                  (defined? ActiveFedora::RelsInt::Datastream). | 
| 16 | 
            +
                  expect(defined? ActiveFedora::RelsInt).to be_truthy
         | 
| 17 | 
            +
                  expect(defined? ActiveFedora::RelsInt::Datastream).to be_truthy
         | 
| 18 18 | 
             
                end
         | 
| 19 19 | 
             
              end
         | 
| 20 20 |  | 
| 21 21 | 
             
              it "should add the appropriate ds_spec and accessor methods when mixed in" do
         | 
| 22 | 
            -
                Foo.ds_specs.keys. | 
| 23 | 
            -
                Foo.ds_specs['RELS-INT'][:type]. | 
| 22 | 
            +
                expect(Foo.ds_specs.keys).to include( 'RELS-INT')
         | 
| 23 | 
            +
                expect(Foo.ds_specs['RELS-INT'][:type]).to be(ActiveFedora::RelsInt::Datastream)
         | 
| 24 24 | 
             
              end
         | 
| 25 25 |  | 
| 26 26 | 
             
              it "should serialize to appropriate RDF-XML on a new object" do
         | 
| 27 27 | 
             
                blank_relsint = fixture('rels_int_blank.xml').read
         | 
| 28 28 | 
             
                inner = double("DigitalObject")
         | 
| 29 | 
            -
                inner. | 
| 30 | 
            -
                inner. | 
| 29 | 
            +
                allow(inner).to receive(:new_record?).and_return(true)
         | 
| 30 | 
            +
                allow(inner).to receive(:pid).and_return("test:relsint")
         | 
| 31 31 | 
             
                repo = double("Repository")
         | 
| 32 | 
            -
                inner. | 
| 32 | 
            +
                allow(inner).to receive(:repository).and_return(repo)
         | 
| 33 33 | 
             
                test_obj = ActiveFedora::RelsInt::Datastream.new(inner,"RELS-INT")
         | 
| 34 | 
            -
                Nokogiri::XML.parse(test_obj.content). | 
| 34 | 
            +
                expect(Nokogiri::XML.parse(test_obj.content)).to be_equivalent_to Nokogiri::XML.parse(blank_relsint)
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 37 | 
             
              it "should serialize to appropriate RDF-XML when added to an existing obect" do
         | 
| 38 38 | 
             
                blank_relsint = fixture('rels_int_blank.xml').read
         | 
| 39 39 | 
             
                inner = double("DigitalObject")
         | 
| 40 | 
            -
                inner. | 
| 41 | 
            -
                inner. | 
| 40 | 
            +
                allow(inner).to receive(:new_record?).and_return(false)
         | 
| 41 | 
            +
                allow(inner).to receive(:pid).and_return("test:relsint")
         | 
| 42 42 | 
             
                repo = double("Repository")
         | 
| 43 43 | 
             
                # new datastream, no profile
         | 
| 44 | 
            -
                repo. | 
| 45 | 
            -
                 | 
| 46 | 
            -
                inner.stub(:repository).and_return(repo)
         | 
| 44 | 
            +
                expect(repo).to receive(:datastream_profile).with(inner.pid,"RELS-INT",nil, nil).and_return('')
         | 
| 45 | 
            +
                allow(inner).to receive(:repository).and_return(repo)
         | 
| 47 46 | 
             
                test_obj = ActiveFedora::RelsInt::Datastream.new(inner,"RELS-INT")
         | 
| 48 | 
            -
                Nokogiri::XML.parse(test_obj.content). | 
| 47 | 
            +
                expect(Nokogiri::XML.parse(test_obj.content)).to be_equivalent_to Nokogiri::XML.parse(blank_relsint)
         | 
| 49 48 | 
             
              end
         | 
| 50 49 |  | 
| 51 50 | 
             
              describe ActiveFedora::RelsInt::Datastream do
         | 
| 52 51 | 
             
                before :each do
         | 
| 53 52 | 
             
                  @test_relsint = fixture('rels_int_test.xml').read
         | 
| 54 53 | 
             
                  @inner = double("DigitalObject")
         | 
| 55 | 
            -
                  @inner. | 
| 56 | 
            -
                  @inner. | 
| 57 | 
            -
                  @inner. | 
| 54 | 
            +
                  allow(@inner).to receive(:new_record?).and_return(false)
         | 
| 55 | 
            +
                  allow(@inner).to receive(:pid).and_return("test:relsint")
         | 
| 56 | 
            +
                  allow(@inner).to receive(:internal_uri).and_return("info:fedora/test:relsint")
         | 
| 58 57 | 
             
                  repo = double("Repository")
         | 
| 59 58 | 
             
                  profile_xml = fixture('rels_int_profile.xml').read
         | 
| 60 | 
            -
                   | 
| 61 | 
            -
                  repo. | 
| 62 | 
            -
                  repo. | 
| 63 | 
            -
                  @inner. | 
| 59 | 
            +
                  profile = Rubydora::ProfileParser.parse_datastream_profile(profile_xml)
         | 
| 60 | 
            +
                  expect(repo).to receive(:datastream_profile).with(@inner.pid,"RELS-INT",nil, nil).and_return(profile)
         | 
| 61 | 
            +
                  allow(repo).to receive(:datastream_dissemination).with(:pid=>@inner.pid,:dsid=>"RELS-INT").and_return(@test_relsint)
         | 
| 62 | 
            +
                  allow(@inner).to receive(:repository).and_return(repo)
         | 
| 64 63 | 
             
                end
         | 
| 65 64 | 
             
                it "should load relationships from foxml into the appropriate graphs" do
         | 
| 66 65 | 
             
                  test_obj = ActiveFedora::RelsInt::Datastream.new(@inner,"RELS-INT")
         | 
| 67 | 
            -
                  test_obj.changed | 
| 66 | 
            +
                  expect(test_obj.changed?).to be(false)
         | 
| 68 67 | 
             
                  dc = ActiveFedora::Datastream.new(@inner,"DC")
         | 
| 69 68 | 
             
                  triples = test_obj.relationships(dc,:is_metadata_for)
         | 
| 70 69 | 
             
                  e = ['info:fedora/test:relsint/DC','info:fedora/fedora-system:def/relations-external#isMetadataFor','info:fedora/test:relsint/RELS-INT'].
         | 
| 71 70 | 
             
                    map {|x| RDF::URI.new(x)}
         | 
| 72 | 
            -
                   | 
| 71 | 
            +
                  f = ['info:fedora/test:relsint/DC','info:fedora/fedora-system:def/relations-external#isMetadataFor','info:fedora/test:relsint/RELS-EXT']
         | 
| 72 | 
            +
                    .map {|x| RDF::URI.new(x)}
         | 
| 73 | 
            +
                  expect(triples).to eq([RDF::Statement.new(*e),RDF::Statement.new(*f)])
         | 
| 74 | 
            +
                  expect(Nokogiri::XML.parse(test_obj.content)).to be_equivalent_to Nokogiri::XML.parse(@test_relsint)
         | 
| 73 75 | 
             
                end
         | 
| 74 76 | 
             
                it "should load relationships into appropriate graphs when assigned content" do
         | 
| 75 77 | 
             
                  #test_relsint = fixture('rels_int_test.xml').read
         | 
| @@ -78,12 +80,14 @@ describe ActiveFedora::RelsInt do | |
| 78 80 | 
             
                  #inner.stub(:internal_uri).and_return("info:fedora/test:relsint")
         | 
| 79 81 | 
             
                  test_obj = ActiveFedora::RelsInt::Datastream.new(@inner,"RELS-INT")
         | 
| 80 82 | 
             
                  test_obj.content=@test_relsint
         | 
| 81 | 
            -
                  test_obj.changed | 
| 83 | 
            +
                  expect(test_obj.changed?).to be(true)
         | 
| 82 84 | 
             
                  dc = ActiveFedora::Datastream.new(@inner,"DC")
         | 
| 83 85 | 
             
                  triples = test_obj.relationships(dc,:is_metadata_for)
         | 
| 84 | 
            -
                  e = ['info:fedora/test:relsint/DC','info:fedora/fedora-system:def/relations-external#isMetadataFor','info:fedora/test:relsint/RELS-INT'] | 
| 85 | 
            -
                    map {|x| RDF::URI.new(x)}
         | 
| 86 | 
            -
                   | 
| 86 | 
            +
                  e = ['info:fedora/test:relsint/DC','info:fedora/fedora-system:def/relations-external#isMetadataFor','info:fedora/test:relsint/RELS-INT']
         | 
| 87 | 
            +
                    .map {|x| RDF::URI.new(x)}
         | 
| 88 | 
            +
                  f = ['info:fedora/test:relsint/DC','info:fedora/fedora-system:def/relations-external#isMetadataFor','info:fedora/test:relsint/RELS-EXT']
         | 
| 89 | 
            +
                    .map {|x| RDF::URI.new(x)}
         | 
| 90 | 
            +
                  expect(triples).to eq([RDF::Statement.new(*e),RDF::Statement.new(*f)])
         | 
| 87 91 | 
             
                end    
         | 
| 88 92 | 
             
                it "should propagate relationship changes to the appropriate graph in RELS-INT" do
         | 
| 89 93 | 
             
                  #test_relsint = fixture('rels_int_test.xml').read
         | 
| @@ -93,23 +97,30 @@ describe ActiveFedora::RelsInt do | |
| 93 97 | 
             
                  test_obj = ActiveFedora::RelsInt::Datastream.new(@inner,"RELS-INT")
         | 
| 94 98 | 
             
                  dc = ActiveFedora::Datastream.new(@inner,"DC")
         | 
| 95 99 | 
             
                  rels_ext = ActiveFedora::Datastream.new(@inner,"RELS-EXT")
         | 
| 100 | 
            +
                  expect(test_obj.to_resource(test_obj)).to eql(RDF::URI.new("info:fedora/#{@inner.pid}/#{test_obj.dsid}"))
         | 
| 96 101 | 
             
                  test_obj.add_relationship(dc,:is_metadata_for, test_obj)
         | 
| 102 | 
            +
                  test_obj.add_relationship(dc,:is_metadata_for, rels_ext)
         | 
| 97 103 | 
             
                  test_obj.add_relationship(rels_ext,:asserts, "FOO", true)
         | 
| 98 104 | 
             
                  test_obj.add_relationship(test_obj,:asserts, "BAR", true)
         | 
| 99 105 | 
             
                  test_obj.serialize!
         | 
| 100 | 
            -
                  Nokogiri::XML.parse(test_obj.content). | 
| 106 | 
            +
                  expect(Nokogiri::XML.parse(test_obj.content)).to be_equivalent_to Nokogiri::XML.parse(@test_relsint)
         | 
| 107 | 
            +
                end
         | 
| 108 | 
            +
                it "should clear matching relationships selectively" do
         | 
| 109 | 
            +
                  test_obj = ActiveFedora::RelsInt::Datastream.new(@inner,"RELS-INT")
         | 
| 110 | 
            +
                  test_obj.content=@test_relsint
         | 
| 111 | 
            +
                  rels_ext = ActiveFedora::Datastream.new(@inner,"RELS-EXT")
         | 
| 112 | 
            +
                  test_pred = 'http://projecthydra.org/ns/relations#asserts'
         | 
| 113 | 
            +
                  expect(test_obj.relationships(rels_ext,:asserts)).to_not be_empty
         | 
| 114 | 
            +
                  test_obj.clear_relationship('info:fedora/test:relsint/RELS-EXT',:asserts)
         | 
| 115 | 
            +
                  expect(test_obj.relationships(rels_ext,:asserts)).to be_empty
         | 
| 116 | 
            +
                  expect(test_obj.relationships(test_obj,:asserts)).to_not be_empty
         | 
| 101 117 | 
             
                end
         | 
| 102 118 | 
             
                it "should run to_solr" do
         | 
| 103 119 | 
             
                  test_obj = ActiveFedora::RelsInt::Datastream.new(@inner,"RELS-INT")
         | 
| 104 120 | 
             
                  test_obj.content=@test_relsint
         | 
| 105 | 
            -
                  test_obj.changed | 
| 121 | 
            +
                  expect(test_obj.changed?).to be(true)
         | 
| 106 122 | 
             
                  expect{test_obj.to_solr}.to_not raise_error
         | 
| 107 123 | 
             
                end
         | 
| 108 124 | 
             
              end
         | 
| 109 125 |  | 
| 110 | 
            -
             | 
| 111 | 
            -
              it "should load from solr" do
         | 
| 112 | 
            -
                f = Foo.create
         | 
| 113 | 
            -
                Foo.load_instance_from_solr(f.id).should_not be_nil
         | 
| 114 | 
            -
              end
         | 
| 115 126 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,117 +1,145 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: active_fedora_relsint
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Benjamin Armintor
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2015-08-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: active-fedora
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - -  | 
| 17 | 
            +
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: ' | 
| 19 | 
            +
                    version: '7.0'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - -  | 
| 24 | 
            +
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: ' | 
| 26 | 
            +
                    version: '7.0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: activesupport
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - -  | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: 3.2.0
         | 
| 34 | 
            -
                - - <
         | 
| 34 | 
            +
                - - "<"
         | 
| 35 35 | 
             
                  - !ruby/object:Gem::Version
         | 
| 36 36 | 
             
                    version: '5.0'
         | 
| 37 37 | 
             
              type: :runtime
         | 
| 38 38 | 
             
              prerelease: false
         | 
| 39 39 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 | 
            -
                - -  | 
| 41 | 
            +
                - - ">="
         | 
| 42 42 | 
             
                  - !ruby/object:Gem::Version
         | 
| 43 43 | 
             
                    version: 3.2.0
         | 
| 44 | 
            -
                - - <
         | 
| 44 | 
            +
                - - "<"
         | 
| 45 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 46 46 | 
             
                    version: '5.0'
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: yard
         | 
| 49 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                requirements:
         | 
| 51 | 
            -
                - -  | 
| 51 | 
            +
                - - ">="
         | 
| 52 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 53 | 
             
                    version: '0'
         | 
| 54 54 | 
             
              type: :development
         | 
| 55 55 | 
             
              prerelease: false
         | 
| 56 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 57 | 
             
                requirements:
         | 
| 58 | 
            -
                - -  | 
| 58 | 
            +
                - - ">="
         | 
| 59 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 60 | 
             
                    version: '0'
         | 
| 61 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 62 62 | 
             
              name: RedCloth
         | 
| 63 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 64 | 
             
                requirements:
         | 
| 65 | 
            -
                - -  | 
| 65 | 
            +
                - - ">="
         | 
| 66 66 | 
             
                  - !ruby/object:Gem::Version
         | 
| 67 67 | 
             
                    version: '0'
         | 
| 68 68 | 
             
              type: :development
         | 
| 69 69 | 
             
              prerelease: false
         | 
| 70 70 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 71 | 
             
                requirements:
         | 
| 72 | 
            -
                - -  | 
| 72 | 
            +
                - - ">="
         | 
| 73 73 | 
             
                  - !ruby/object:Gem::Version
         | 
| 74 74 | 
             
                    version: '0'
         | 
| 75 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 76 76 | 
             
              name: rake
         | 
| 77 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 78 | 
             
                requirements:
         | 
| 79 | 
            -
                - -  | 
| 79 | 
            +
                - - ">="
         | 
| 80 80 | 
             
                  - !ruby/object:Gem::Version
         | 
| 81 81 | 
             
                    version: '0'
         | 
| 82 82 | 
             
              type: :development
         | 
| 83 83 | 
             
              prerelease: false
         | 
| 84 84 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 85 | 
             
                requirements:
         | 
| 86 | 
            -
                - -  | 
| 86 | 
            +
                - - ">="
         | 
| 87 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 88 88 | 
             
                    version: '0'
         | 
| 89 89 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 90 90 | 
             
              name: rspec
         | 
| 91 91 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 92 92 | 
             
                requirements:
         | 
| 93 | 
            -
                - -  | 
| 93 | 
            +
                - - ">="
         | 
| 94 94 | 
             
                  - !ruby/object:Gem::Version
         | 
| 95 95 | 
             
                    version: 2.9.0
         | 
| 96 96 | 
             
              type: :development
         | 
| 97 97 | 
             
              prerelease: false
         | 
| 98 98 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 99 99 | 
             
                requirements:
         | 
| 100 | 
            -
                - -  | 
| 100 | 
            +
                - - ">="
         | 
| 101 101 | 
             
                  - !ruby/object:Gem::Version
         | 
| 102 102 | 
             
                    version: 2.9.0
         | 
| 103 103 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 104 | 
            -
              name: loggable
         | 
| 104 | 
            +
              name: mediashelf-loggable
         | 
| 105 105 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 106 106 | 
             
                requirements:
         | 
| 107 | 
            -
                - -  | 
| 107 | 
            +
                - - ">="
         | 
| 108 108 | 
             
                  - !ruby/object:Gem::Version
         | 
| 109 109 | 
             
                    version: '0'
         | 
| 110 110 | 
             
              type: :development
         | 
| 111 111 | 
             
              prerelease: false
         | 
| 112 112 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 113 113 | 
             
                requirements:
         | 
| 114 | 
            -
                - -  | 
| 114 | 
            +
                - - ">="
         | 
| 115 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 116 | 
            +
                    version: '0'
         | 
| 117 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 118 | 
            +
              name: jettywrapper
         | 
| 119 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 120 | 
            +
                requirements:
         | 
| 121 | 
            +
                - - ">="
         | 
| 122 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 123 | 
            +
                    version: 1.4.0
         | 
| 124 | 
            +
              type: :development
         | 
| 125 | 
            +
              prerelease: false
         | 
| 126 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 127 | 
            +
                requirements:
         | 
| 128 | 
            +
                - - ">="
         | 
| 129 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 130 | 
            +
                    version: 1.4.0
         | 
| 131 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 132 | 
            +
              name: simplecov
         | 
| 133 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 134 | 
            +
                requirements:
         | 
| 135 | 
            +
                - - ">="
         | 
| 136 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 137 | 
            +
                    version: '0'
         | 
| 138 | 
            +
              type: :development
         | 
| 139 | 
            +
              prerelease: false
         | 
| 140 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 141 | 
            +
                requirements:
         | 
| 142 | 
            +
                - - ">="
         | 
| 115 143 | 
             
                  - !ruby/object:Gem::Version
         | 
| 116 144 | 
             
                    version: '0'
         | 
| 117 145 | 
             
            description: ActiveFedora library to allow use of RELS-INT to track RDF assertions
         | 
| @@ -124,8 +152,8 @@ extra_rdoc_files: | |
| 124 152 | 
             
            - LICENSE.txt
         | 
| 125 153 | 
             
            - README.textile
         | 
| 126 154 | 
             
            files:
         | 
| 127 | 
            -
            - .gitignore
         | 
| 128 | 
            -
            - .travis.yml
         | 
| 155 | 
            +
            - ".gitignore"
         | 
| 156 | 
            +
            - ".travis.yml"
         | 
| 129 157 | 
             
            - CONTRIBUTING.md
         | 
| 130 158 | 
             
            - Gemfile
         | 
| 131 159 | 
             
            - LICENSE.txt
         | 
| @@ -133,6 +161,7 @@ files: | |
| 133 161 | 
             
            - Rakefile
         | 
| 134 162 | 
             
            - active_fedora_relsint.gemspec
         | 
| 135 163 | 
             
            - config/fedora.yml
         | 
| 164 | 
            +
            - config/jetty.yml
         | 
| 136 165 | 
             
            - config/predicate_mappings.yml
         | 
| 137 166 | 
             
            - config/solr.yml
         | 
| 138 167 | 
             
            - doc/ActiveFedora.html
         | 
| @@ -157,8 +186,10 @@ files: | |
| 157 186 | 
             
            - fixtures/rels_int_test.xml
         | 
| 158 187 | 
             
            - lib/active_fedora_relsint.rb
         | 
| 159 188 | 
             
            - lib/active_fedora_relsint/datastream.rb
         | 
| 189 | 
            +
            - lib/active_fedora_relsint/rdf_xml_writer.rb
         | 
| 160 190 | 
             
            - lib/active_fedora_relsint/version.rb
         | 
| 161 191 | 
             
            - lib/tasks/active_fedora_relsint_dev.rake
         | 
| 192 | 
            +
            - spec/integration/relsint_spec.rb
         | 
| 162 193 | 
             
            - spec/spec_helper.rb
         | 
| 163 194 | 
             
            - spec/unit/relsint_spec.rb
         | 
| 164 195 | 
             
            homepage: https://github.com/cul/active_fedora_rels_int
         | 
| @@ -170,21 +201,22 @@ require_paths: | |
| 170 201 | 
             
            - lib
         | 
| 171 202 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 172 203 | 
             
              requirements:
         | 
| 173 | 
            -
              - -  | 
| 204 | 
            +
              - - ">="
         | 
| 174 205 | 
             
                - !ruby/object:Gem::Version
         | 
| 175 206 | 
             
                  version: '0'
         | 
| 176 207 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 177 208 | 
             
              requirements:
         | 
| 178 | 
            -
              - -  | 
| 209 | 
            +
              - - ">="
         | 
| 179 210 | 
             
                - !ruby/object:Gem::Version
         | 
| 180 211 | 
             
                  version: '0'
         | 
| 181 212 | 
             
            requirements: []
         | 
| 182 213 | 
             
            rubyforge_project: 
         | 
| 183 | 
            -
            rubygems_version: 2. | 
| 214 | 
            +
            rubygems_version: 2.4.6
         | 
| 184 215 | 
             
            signing_key: 
         | 
| 185 216 | 
             
            specification_version: 4
         | 
| 186 217 | 
             
            summary: ActiveFedora library supporting RELS-INT datastreams
         | 
| 187 218 | 
             
            test_files:
         | 
| 219 | 
            +
            - spec/integration/relsint_spec.rb
         | 
| 188 220 | 
             
            - spec/spec_helper.rb
         | 
| 189 221 | 
             
            - spec/unit/relsint_spec.rb
         | 
| 190 222 | 
             
            has_rdoc: 
         |