Skip to content
This repository has been archived by the owner on May 11, 2022. It is now read-only.

Commit

Permalink
get_related_obj_display_title should use descMetadata title. update t…
Browse files Browse the repository at this point in the history
…ests accordingly.
  • Loading branch information
jmartin-sul committed Mar 11, 2016
1 parent 590242e commit 0c3b3f4
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 16 deletions.
12 changes: 5 additions & 7 deletions lib/dor/models/identifiable.rb
Expand Up @@ -209,15 +209,13 @@ def update_tag(old_tag, new_tag)
end

def get_related_obj_display_title(related_obj, default_title)
if related_obj
if related_obj.datastreams['DC'] && related_obj.datastreams['DC'].title
return related_obj.datastreams['DC'].title
else
return related_obj.label
end
# desc_md_ds_title will be nil if related_obj is nil
desc_md_ds_title = if related_obj
desc_md_ds = related_obj.datastreams['descMetadata']
desc_md_ds ? desc_md_ds.title_info.main_title.first : nil
end

default_title
desc_md_ds_title.present? ? desc_md_ds_title : default_title
end

private
Expand Down
42 changes: 33 additions & 9 deletions spec/dor/identifiable_spec.rb
Expand Up @@ -229,26 +229,50 @@ class IdentifiableItem < ActiveFedora::Base
end

describe 'get_related_obj_display_title' do
it 'should return the dc:title if it is available' do
it 'should return the descMetadata main title if it is available' do
mock_apo_title = 'apo title'
mock_apo_obj = double(Dor::AdminPolicyObject)
mock_dc_datastream = double(Dor::SimpleDublinCoreDs)
mock_desc_md_datastream = double(Dor::DescMetadataDS)
mock_title_info = double(OM::XML::DynamicNode)

allow(mock_dc_datastream).to receive(:title).and_return(mock_apo_title)
allow(mock_apo_obj).to receive(:datastreams).and_return({'DC' => mock_dc_datastream})
expect(mock_desc_md_datastream).to receive(:title_info).and_return(mock_title_info)
expect(mock_title_info).to receive(:main_title).and_return([mock_apo_title, ""])
expect(mock_apo_obj).to receive(:datastreams).and_return({'descMetadata' => mock_desc_md_datastream})

mock_default_title = 'druid:zy098xw7654'
expect(item.get_related_obj_display_title(mock_apo_obj, mock_default_title)).to eq(mock_apo_title)
end
it 'should return the fedora label if the dc:title is not available' do
mock_apo_label = 'object label'
it 'should return the default if the first descMetadata main title entry is empty string' do
mock_apo_obj = double(Dor::AdminPolicyObject)
mock_desc_md_datastream = double(Dor::DescMetadataDS)
mock_title_info = double(OM::XML::DynamicNode)

allow(mock_apo_obj).to receive(:label).and_return(mock_apo_label)
allow(mock_apo_obj).to receive(:datastreams).and_return({})
expect(mock_desc_md_datastream).to receive(:title_info).and_return(mock_title_info)
expect(mock_title_info).to receive(:main_title).and_return(["", ""])
expect(mock_apo_obj).to receive(:datastreams).and_return({'descMetadata' => mock_desc_md_datastream})

mock_default_title = 'druid:zy098xw7654'
expect(item.get_related_obj_display_title(mock_apo_obj, mock_default_title)).to eq(mock_apo_label)
expect(item.get_related_obj_display_title(mock_apo_obj, mock_default_title)).to eq(mock_default_title)
end
it 'should return the default if the descMetadata main title array is empty' do
mock_apo_obj = double(Dor::AdminPolicyObject)
mock_desc_md_datastream = double(Dor::DescMetadataDS)
mock_title_info = double(OM::XML::DynamicNode)

expect(mock_desc_md_datastream).to receive(:title_info).and_return(mock_title_info)
expect(mock_title_info).to receive(:main_title).and_return([])
expect(mock_apo_obj).to receive(:datastreams).and_return({'descMetadata' => mock_desc_md_datastream})

mock_default_title = 'druid:zy098xw7654'
expect(item.get_related_obj_display_title(mock_apo_obj, mock_default_title)).to eq(mock_default_title)
end
it 'should return the default if the descMetadata datastream is not available' do
mock_apo_obj = double(Dor::AdminPolicyObject)

expect(mock_apo_obj).to receive(:datastreams).and_return({})

mock_default_title = 'druid:zy098xw7654'
expect(item.get_related_obj_display_title(mock_apo_obj, mock_default_title)).to eq(mock_default_title)
end
it 'should return the default if the related object is nil' do
mock_apo_obj = nil
Expand Down

0 comments on commit 0c3b3f4

Please sign in to comment.