diff --git a/app/indexers/rights_metadata_datastream_indexer.rb b/app/indexers/rights_metadata_datastream_indexer.rb index b9cd45f16..7dcb60f95 100644 --- a/app/indexers/rights_metadata_datastream_indexer.rb +++ b/app/indexers/rights_metadata_datastream_indexer.rb @@ -2,6 +2,7 @@ class RightsMetadataDatastreamIndexer attr_reader :resource + def initialize(resource:) @resource = resource end diff --git a/app/models/hydrus/rights_metadata_ds.rb b/app/models/hydrus/rights_metadata_ds.rb index 22973f912..a202ab471 100644 --- a/app/models/hydrus/rights_metadata_ds.rb +++ b/app/models/hydrus/rights_metadata_ds.rb @@ -1,3 +1,7 @@ +# frozen_string_literal: true + +require 'dor/rights_auth' + class Hydrus::RightsMetadataDS < ActiveFedora::OmDatastream include Hydrus::GenericDS include Hydrus::Accessible @@ -48,10 +52,20 @@ class Hydrus::RightsMetadataDS < ActiveFedora::OmDatastream xml.machine(type: gcode) { xml.text(code) } end + # just a wrapper to invalidate @dra_object + def content=(xml) + @dra_object = nil + super + end + + def dra_object + @dra_object ||= Dor::RightsAuth.parse(ng_xml, true) + end + # This provides the prefix for the solr fields generated by ActiveFedora. # Since we don't want a prefix, we override this to return an empty string. def prefix - ''.freeze + '' end # Takes a license-group code, a license code, and the corresponding license text. @@ -72,7 +86,7 @@ def remove_license # Dor::Editable module and moved into a datastream which Hydrus does not use. # Stub out these methods to get the test suite running [:default_rights, :use_license].each do |missing_method_name| - define_method(missing_method_name) {} + define_method(missing_method_name) { [] } end def self.xml_template diff --git a/spec/indexers/rights_metadata_datastream_indexer_spec.rb b/spec/indexers/rights_metadata_datastream_indexer_spec.rb index a514ed8a2..197288ef0 100644 --- a/spec/indexers/rights_metadata_datastream_indexer_spec.rb +++ b/spec/indexers/rights_metadata_datastream_indexer_spec.rb @@ -29,7 +29,7 @@ XML end - let(:obj) { Dor::Item.new(pid: 'druid:rt923jk342') } + let(:obj) { Hydrus::Item.new(pid: 'druid:rt923jk342') } let(:rights_md_ds) { obj.rightsMetadata } let(:indexer) do @@ -47,7 +47,7 @@ expect(doc).to include( 'copyright_ssim' => ['Copyright © World Trade Organization'], 'use_statement_ssim' => ['Official WTO documents are free for public use.'], - 'use_license_machine_ssi' => 'by-nc-nd', + 'use_license_machine_ssi' => nil, 'rights_descriptions_ssim' => ['world'] ) end