ddr-models 3.0.0.beta.18 → 3.0.0.beta.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16f19bb0a9c0d7569797de024db2638a3e1b4e2a
4
- data.tar.gz: 1e83fcc5c343aeed276d1a36de4d99f9b95dc125
3
+ metadata.gz: 83e427c337952549de62787a1e38025b6a41153e
4
+ data.tar.gz: 57656751812c73a3360e5122eddf22bc317f02f1
5
5
  SHA512:
6
- metadata.gz: 4abaf0450a6f928fc6c3c52da7c4a570028c82dcd58fedeff07bf24262bdce23d6a4b6c7ee30f49894120c52381d6d93c174515f2ea49ec726ae8ac8de347c34
7
- data.tar.gz: 6975b9bf6181df4407f480b44f21f4d697fef2c989fc2f878c63c1d524f247210239042e751572530028af6b2deab2bc9c4f8827cc5054d777ef1f38423b0511
6
+ metadata.gz: f27a59cee19c3b97e19a36347ee37aabd216d0a566cbb0cf840a998e80053d29d0a088e753d08fd8f6a3107be4be714ca30e9ae8542ce2db81a110253dc89089
7
+ data.tar.gz: cbe43fb12c173fc4c0eff9727d033ed60eea022b0a8d827cdae305a4a76995f7582e5fc61268ddcc2496b81f251526dcca482e625e3f25f4afd2dd74bb104a78
@@ -29,6 +29,7 @@ module Ddr::Index
29
29
  EAD_ID = Field.new :ead_id, :stored_sortable
30
30
  EXTRACTED_TEXT = Field.new :extracted_text, solr_name: "extracted_text_tsm"
31
31
  FCREPO3_PID = Field.new :fcrepo3_pid, :stored_sortable
32
+ FORMAT_FACET = Field.new :format_facet, :facetable
32
33
  HAS_MODEL = Field.new :has_model, :symbol
33
34
  IDENTIFIER_ALL = Field.new :identifier_all, :symbol
34
35
  IS_ATTACHED_TO = Field.new :is_attached_to, solr_name: "isAttachedTo_ssim"
@@ -51,6 +51,7 @@ module Ddr
51
51
  autoload :Indexing
52
52
  autoload :NotFoundError, 'ddr/models/error'
53
53
  autoload :ObjectApi
54
+ autoload :Relation
54
55
  autoload :SolrDocument
55
56
  autoload :StructDiv
56
57
  autoload :Structure
@@ -5,7 +5,7 @@ module Ddr::Models
5
5
  include ActiveModel::Serializers::JSON
6
6
 
7
7
  def attributes
8
- { "size" => nil }
8
+ { "size" => nil, "mime_type" => nil }
9
9
  end
10
10
 
11
11
  end
@@ -11,6 +11,7 @@ module Ddr::Models
11
11
  include Hydra::Validations
12
12
  include HasAdminMetadata
13
13
  extend AutoVersion
14
+ extend Relation
14
15
 
15
16
  after_destroy do
16
17
  notify_event :deletion
@@ -22,7 +22,7 @@ module Ddr
22
22
  ASPACE_ID => aspace_id,
23
23
  ATTACHED_FILES => attached_files_profile.to_json,
24
24
  BOX_NUMBER_FACET => desc_metadata.values('box_number'),
25
- CONTRIBUTOR_FACET => desc_metadata.values('contributor'),
25
+ CONTRIBUTOR_FACET => desc_metadata.contributor,
26
26
  CREATOR_FACET => desc_metadata.creator,
27
27
  DATE_FACET => desc_metadata.date,
28
28
  ATTACHED_FILES_HAVING_CONTENT => attached_files_having_content.keys,
@@ -32,6 +32,7 @@ module Ddr
32
32
  DOI => doi,
33
33
  EAD_ID => ead_id,
34
34
  FCREPO3_PID => fcrepo3_pid,
35
+ FORMAT_FACET => desc_metadata.format,
35
36
  IDENTIFIER_ALL => all_identifiers,
36
37
  LICENSE => license,
37
38
  LOCAL_ID => local_id,
@@ -43,7 +44,7 @@ module Ddr
43
44
  RESOURCE_ROLE => roles.in_resource_scope.agents,
44
45
  SERIES_FACET => desc_metadata.values('series'),
45
46
  SPATIAL_FACET => desc_metadata.values('spatial'),
46
- SUBJECT_FACET => desc_metadata.values('subject'),
47
+ SUBJECT_FACET => desc_metadata.subject,
47
48
  TITLE => title_display,
48
49
  TYPE_FACET => desc_metadata.type,
49
50
  UNIQUE_ID => unique_ids,
@@ -0,0 +1,18 @@
1
+ module Ddr::Models
2
+ #
3
+ # Since ActiveFedora does not yet (as of at least v9.9.1)
4
+ # have named scopes, this module extends Base and is
5
+ # included in AF::Relation for chainability.
6
+ #
7
+ module Relation
8
+ def having_local_id(local_id)
9
+ where(Ddr::Index::Fields::LOCAL_ID => local_id)
10
+ end
11
+
12
+ def in_collection(coll)
13
+ where(Ddr::Index::Fields::IS_MEMBER_OF_COLLECTION => coll.respond_to?(:id) ? coll.id : coll)
14
+ end
15
+ end
16
+ end
17
+
18
+ ActiveFedora::Relation.include(Ddr::Models::Relation)
@@ -151,7 +151,7 @@ module Ddr::Models
151
151
  end
152
152
 
153
153
  def content_mime_type
154
- content_ds["dsMIME"] rescue nil
154
+ content_ds["mime_type"] rescue nil
155
155
  end
156
156
  # For duck-typing with Ddr::Models::HasContent
157
157
  alias_method :content_type, :content_mime_type
@@ -1,5 +1,5 @@
1
1
  module Ddr
2
2
  module Models
3
- VERSION = "3.0.0.beta.18"
3
+ VERSION = "3.0.0.beta.20"
4
4
  end
5
5
  end
@@ -1,6 +1,7 @@
1
1
  require 'openssl'
2
2
 
3
3
  module Ddr::Utils
4
+ extend Deprecation
4
5
 
5
6
  DEFAULT_MIME_TYPE = "application/octet-stream"
6
7
 
@@ -90,6 +91,7 @@ module Ddr::Utils
90
91
  # direct children of that collection (i.e., effectively searches a collection and its
91
92
  # items for an object with the given identifier)
92
93
  def self.pid_for_identifier(identifier, opts={})
94
+ Deprecation.warn(self, "`Ddr::Utils.pid_for_identifier` is deprecated. Use .having_local_id model class method and get id from result object(s). (#{caller.first})")
93
95
  model = opts.fetch(:model, nil)
94
96
  collection = opts.fetch(:collection, nil)
95
97
  objs = []
@@ -6,6 +6,27 @@ RSpec.describe Item, type: :model do
6
6
  it_behaves_like "a non-collection model"
7
7
  it_behaves_like "a potentially publishable object"
8
8
 
9
+ describe ".in_collection scope" do
10
+ let(:coll) { FactoryGirl.create(:collection) }
11
+ let(:item1) { FactoryGirl.create(:item) }
12
+ let(:item2) { FactoryGirl.build(:item) }
13
+ before {
14
+ item2.parent = coll
15
+ item2.local_id = "item2"
16
+ item2.save
17
+ }
18
+ specify {
19
+ expect(Item.in_collection(coll)).not_to include(item1)
20
+ expect(Item.in_collection(coll)).to include(item2)
21
+ }
22
+ describe "chainability with .having_local_id" do
23
+ specify {
24
+ expect(Item.in_collection(coll).having_local_id("item2")).to include(item2)
25
+ expect(Item.in_collection(coll).having_local_id("item1")).not_to include(item2)
26
+ }
27
+ end
28
+ end
29
+
9
30
  describe "indexing text" do
10
31
  let(:children) { FactoryGirl.build_list(:component, 5) }
11
32
 
@@ -1,10 +1,57 @@
1
1
  RSpec.shared_examples "a DDR model" do
2
-
3
- it_behaves_like "a describable object"
4
- it_behaves_like "a governable object"
5
- it_behaves_like "an object that has a display title"
6
- it_behaves_like "an object that has identifiers"
7
- it_behaves_like "a fixity checkable object"
2
+ describe "#desc_metadata_terms" do
3
+ it "should have a default value" do
4
+ expect(subject.desc_metadata_terms).to match_array(Ddr::Models::DescriptiveMetadata.unqualified_names)
5
+ end
6
+ describe "arguments" do
7
+ it "with fixed results" do
8
+ expect(subject.desc_metadata_terms(:dcterms))
9
+ .to eq(Ddr::Models::MetadataMapping.dc11.unqualified_names + (Ddr::Models::MetadataMapping.dcterms.unqualified_names - Ddr::Models::MetadataMapping.dc11.unqualified_names))
10
+ expect(subject.desc_metadata_terms(:dcterms))
11
+ .to match_array(Ddr::Models::MetadataMapping.dcterms.unqualified_names)
12
+ expect(subject.desc_metadata_terms(:duke)).to eq Ddr::Vocab::Vocabulary.term_names(Ddr::Vocab::DukeTerms)
13
+ expect(subject.desc_metadata_terms(:dcterms_elements11)).to eq Ddr::Vocab::Vocabulary.term_names(RDF::DC11)
14
+ expect(subject.desc_metadata_terms(:defined_attributes)).to match_array Ddr::Vocab::Vocabulary.term_names(RDF::DC11)
15
+ end
16
+ context "with variable results" do
17
+ before do
18
+ subject.desc_metadata.title = ["Object Title"]
19
+ subject.desc_metadata.creator = ["Duke University Libraries"]
20
+ subject.desc_metadata.identifier = ["id001"]
21
+ subject.save
22
+ end
23
+ it "should accept an :empty argument" do
24
+ expect(subject.desc_metadata_terms(:empty)).to eq(subject.desc_metadata_terms - [:title, :creator, :identifier])
25
+ end
26
+ it "should accept a :present argument" do
27
+ expect(subject.desc_metadata_terms(:present)).to match_array [:title, :creator, :identifier]
28
+ end
29
+ end
30
+ end
31
+ end
32
+ describe "#set_desc_metadata" do
33
+ let(:term_values_hash) { subject.desc_metadata_terms.each_with_object({}) {|t, memo| memo[t] = ["Value"]} }
34
+ it "should set the desc_metadata terms to the values of the matching keys in the hash" do
35
+ subject.desc_metadata_terms.each do |t|
36
+ expect(subject.desc_metadata).to receive(:set_values).with(t, ["Value"])
37
+ end
38
+ subject.set_desc_metadata(term_values_hash)
39
+ end
40
+ end
41
+ describe "#set_desc_metadata_values" do
42
+ context "when values == nil" do
43
+ it "should set the term to an empty value" do
44
+ subject.set_desc_metadata_values(:title, nil)
45
+ expect(subject.desc_metadata.title).to be_empty
46
+ end
47
+ end
48
+ context "when values is an array" do
49
+ it "should reject empty values from the array" do
50
+ subject.set_desc_metadata_values(:title, ["Object Title", nil, "Alternative Title", ""])
51
+ expect(subject.desc_metadata.title).to eq ["Object Title", "Alternative Title"]
52
+ end
53
+ end
54
+ end
8
55
 
9
56
  describe "#to_param" do
10
57
  before {
@@ -25,6 +72,68 @@ RSpec.shared_examples "a DDR model" do
25
72
  end
26
73
  end
27
74
 
75
+ describe "#title_display" do
76
+ context "when it has a title" do
77
+ before { subject.desc_metadata.title = [ 'Title' ] }
78
+ its(:title_display) { is_expected.to eq('Title') }
79
+ end
80
+ context "when it has no title, but has an identifier" do
81
+ before { subject.desc_metadata.identifier = [ 'id001' ] }
82
+ its(:title_display) { is_expected.to eq('id001') }
83
+ end
84
+ # Only objects with content implement :original_filename
85
+ # This test worked before b/c allowing rspec to stub methods
86
+ # that aren't defined on object. This rspec-mocks config setting prevents that:
87
+ #
88
+ # verify_partial_doubles = true
89
+ #
90
+ # context "has no title, no identifier, has original_filename" do
91
+ # before { allow(object).to receive(:original_filename) { "file.txt" } }
92
+ # it "should return original_filename" do
93
+ # expect(subject).to eq "file.txt"
94
+ # end
95
+ # end
96
+ context "when it has no title, no identifier, and no original_filename" do
97
+ subject { described_class.new(id: 'duke-test') }
98
+ its(:title_display) { is_expected.to eq "[duke-test]" }
99
+ end
100
+ end
101
+
102
+ describe "#all_identifiers" do
103
+ subject { described_class.new(id: 'test-3') }
104
+ context "when it has descriptive identifiers, local ID, permanent ID, and id" do
105
+ before do
106
+ subject.desc_metadata.identifier = [ 'ID001', 'ID002' ]
107
+ subject.local_id = 'LOCAL_ID_A'
108
+ subject.permanent_id = 'ark:/999999/cd3'
109
+ end
110
+ its(:all_identifiers) {
111
+ is_expected.to match_array([ 'ID001', 'ID002', 'LOCAL_ID_A', 'ark:/999999/cd3', 'test-3' ])
112
+ }
113
+ end
114
+ context "when it has no descriptive identifiers or local ID" do
115
+ before { subject.permanent_id = 'ark:/999999/cd3' }
116
+ its(:all_identifiers) {
117
+ is_expected.to match_array([ 'ark:/999999/cd3', 'test-3' ])
118
+ }
119
+ end
120
+ end
121
+
122
+ describe ".having_local_id" do
123
+ let(:obj1) {
124
+ described_class.new(local_id: "obj1").tap { |obj| obj.save(validate: false) }
125
+ }
126
+ let(:obj2) {
127
+ described_class.new(local_id: "obj2").tap { |obj| obj.save(validate: false) }
128
+ }
129
+ specify {
130
+ expect(described_class.having_local_id("obj1")).to include(obj1)
131
+ expect(described_class.having_local_id("obj1")).not_to include(obj2)
132
+ expect(described_class.having_local_id("obj2")).not_to include(obj1)
133
+ expect(described_class.having_local_id("obj2")).to include(obj2)
134
+ }
135
+ end
136
+
28
137
  describe ".find_by_unique_id" do
29
138
  before {
30
139
  subject.permanent_id = "ark:/99999/fk4rx95k8w"
@@ -77,4 +186,30 @@ RSpec.shared_examples "a DDR model" do
77
186
  end
78
187
  end
79
188
 
189
+ describe "fixity check" do
190
+ before do
191
+ subject.thumbnail.content = '1234567890'
192
+ subject.save(validate: false)
193
+ end
194
+ specify {
195
+ expect { subject.check_fixity }.to change(subject.fixity_checks, :count).from(0).to(1)
196
+ }
197
+ describe "results" do
198
+ let(:results) { subject.check_fixity }
199
+ specify {
200
+ expect(results).to be_success
201
+ }
202
+ specify {
203
+ expect(results[:thumbnail]).to be true
204
+ }
205
+ describe "failure" do
206
+ before {
207
+ allow(subject.thumbnail).to receive(:check_fixity) { false }
208
+ }
209
+ specify {
210
+ expect(results).not_to be_success
211
+ }
212
+ end
213
+ end
214
+ end
80
215
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddr-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta.18
4
+ version: 3.0.0.beta.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Coble
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-11 00:00:00.000000000 Z
12
+ date: 2016-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -554,6 +554,7 @@ files:
554
554
  - lib/ddr/models/metadata/metadata_vocabularies.rb
555
555
  - lib/ddr/models/metadata/metadata_vocabulary.rb
556
556
  - lib/ddr/models/object_api.rb
557
+ - lib/ddr/models/relation.rb
557
558
  - lib/ddr/models/search/catalog.rb
558
559
  - lib/ddr/models/search/search_builder.rb
559
560
  - lib/ddr/models/solr_document.rb
@@ -718,12 +719,8 @@ files:
718
719
  - spec/support/ezid_mock_identifier.rb
719
720
  - spec/support/shared_examples_for_auth_contexts.rb
720
721
  - spec/support/shared_examples_for_ddr_models.rb
721
- - spec/support/shared_examples_for_describables.rb
722
722
  - spec/support/shared_examples_for_events.rb
723
- - spec/support/shared_examples_for_fixity_checkable_spec.rb
724
- - spec/support/shared_examples_for_governables.rb
725
723
  - spec/support/shared_examples_for_has_content.rb
726
- - spec/support/shared_examples_for_indexing.rb
727
724
  - spec/support/shared_examples_for_non_collection_models.rb
728
725
  - spec/support/shared_examples_for_publication.rb
729
726
  - spec/support/shared_examples_for_role_sets.rb
@@ -896,12 +893,8 @@ test_files:
896
893
  - spec/support/ezid_mock_identifier.rb
897
894
  - spec/support/shared_examples_for_auth_contexts.rb
898
895
  - spec/support/shared_examples_for_ddr_models.rb
899
- - spec/support/shared_examples_for_describables.rb
900
896
  - spec/support/shared_examples_for_events.rb
901
- - spec/support/shared_examples_for_fixity_checkable_spec.rb
902
- - spec/support/shared_examples_for_governables.rb
903
897
  - spec/support/shared_examples_for_has_content.rb
904
- - spec/support/shared_examples_for_indexing.rb
905
898
  - spec/support/shared_examples_for_non_collection_models.rb
906
899
  - spec/support/shared_examples_for_publication.rb
907
900
  - spec/support/shared_examples_for_role_sets.rb
@@ -1,58 +0,0 @@
1
- RSpec.shared_examples "a describable object" do
2
-
3
- let(:object) { described_class.new }
4
-
5
- describe "#desc_metadata_terms" do
6
- it "should have a default value" do
7
- expect(object.desc_metadata_terms).to match_array(Ddr::Models::DescriptiveMetadata.unqualified_names)
8
- end
9
- describe "arguments" do
10
- it "with fixed results" do
11
- expect(object.desc_metadata_terms(:dcterms))
12
- .to eq(Ddr::Models::MetadataMapping.dc11.unqualified_names + (Ddr::Models::MetadataMapping.dcterms.unqualified_names - Ddr::Models::MetadataMapping.dc11.unqualified_names))
13
- expect(object.desc_metadata_terms(:dcterms))
14
- .to match_array(Ddr::Models::MetadataMapping.dcterms.unqualified_names)
15
- expect(object.desc_metadata_terms(:duke)).to eq Ddr::Vocab::Vocabulary.term_names(Ddr::Vocab::DukeTerms)
16
- expect(object.desc_metadata_terms(:dcterms_elements11)).to eq Ddr::Vocab::Vocabulary.term_names(RDF::DC11)
17
- expect(object.desc_metadata_terms(:defined_attributes)).to match_array Ddr::Vocab::Vocabulary.term_names(RDF::DC11)
18
- end
19
- context "with variable results" do
20
- before do
21
- object.desc_metadata.title = ["Object Title"]
22
- object.desc_metadata.creator = ["Duke University Libraries"]
23
- object.desc_metadata.identifier = ["id001"]
24
- object.save
25
- end
26
- it "should accept an :empty argument" do
27
- expect(object.desc_metadata_terms(:empty)).to eq(object.desc_metadata_terms - [:title, :creator, :identifier])
28
- end
29
- it "should accept a :present argument" do
30
- expect(object.desc_metadata_terms(:present)).to match_array [:title, :creator, :identifier]
31
- end
32
- end
33
- end
34
- end
35
- describe "#set_desc_metadata" do
36
- let(:term_values_hash) { object.desc_metadata_terms.each_with_object({}) {|t, memo| memo[t] = ["Value"]} }
37
- it "should set the desc_metadata terms to the values of the matching keys in the hash" do
38
- object.desc_metadata_terms.each do |t|
39
- expect(object.desc_metadata).to receive(:set_values).with(t, ["Value"])
40
- end
41
- object.set_desc_metadata(term_values_hash)
42
- end
43
- end
44
- describe "#set_desc_metadata_values" do
45
- context "when values == nil" do
46
- it "should set the term to an empty value" do
47
- object.set_desc_metadata_values(:title, nil)
48
- expect(object.desc_metadata.title).to be_empty
49
- end
50
- end
51
- context "when values is an array" do
52
- it "should reject empty values from the array" do
53
- object.set_desc_metadata_values(:title, ["Object Title", nil, "Alternative Title", ""])
54
- expect(object.desc_metadata.title).to eq ["Object Title", "Alternative Title"]
55
- end
56
- end
57
- end
58
- end
@@ -1,30 +0,0 @@
1
- RSpec.shared_examples "a fixity checkable object" do
2
-
3
- describe "fixity check" do
4
- before do
5
- subject.thumbnail.content = '1234567890'
6
- subject.save(validate: false)
7
- end
8
- specify {
9
- expect { subject.check_fixity }.to change(subject.fixity_checks, :count).from(0).to(1)
10
- }
11
- describe "results" do
12
- let(:results) { subject.check_fixity }
13
- specify {
14
- expect(results).to be_success
15
- }
16
- specify {
17
- expect(results[:thumbnail]).to be true
18
- }
19
- describe "failure" do
20
- before {
21
- allow(subject.thumbnail).to receive(:check_fixity) { false }
22
- }
23
- specify {
24
- expect(results).not_to be_success
25
- }
26
- end
27
- end
28
- end
29
-
30
- end
@@ -1,17 +0,0 @@
1
- RSpec.shared_examples "a governable object" do
2
- let(:object) do
3
- described_class.new.tap do |obj|
4
- obj.desc_metadata.title = [ 'Describable' ]
5
- obj.desc_metadata.identifier = [ 'id001' ]
6
- obj.save(validate: false)
7
- end
8
- end
9
- describe "can have an admin policy" do
10
- let(:coll) { FactoryGirl.create(:collection) }
11
- it "should set its admin policy with #admin_policy= and get with #admin_policy" do
12
- object.admin_policy = coll
13
- object.save(validate: false)
14
- expect(ActiveFedora::Base.find(object.id).admin_policy).to eq(coll)
15
- end
16
- end
17
- end
@@ -1,59 +0,0 @@
1
- RSpec.shared_examples "an object that has a display title" do
2
- describe "#title_display" do
3
- let(:object) { described_class.new }
4
- subject { object.title_display }
5
- context "has title" do
6
- before { object.desc_metadata.title = [ 'Title' ] }
7
- it "should return the first title" do
8
- expect(subject).to eq('Title')
9
- end
10
- end
11
- context "has no title, has identifier" do
12
- before { object.desc_metadata.identifier = [ 'id001' ] }
13
- it "should return the first identifier" do
14
- expect(subject).to eq('id001')
15
- end
16
- end
17
- # Only objects with content implement :original_filename
18
- # This test worked before b/c allowing rspec to stub methods
19
- # that aren't defined on object. This rspec-mocks config setting prevents that:
20
- #
21
- # verify_partial_doubles = true
22
- #
23
- # context "has no title, no identifier, has original_filename" do
24
- # before { allow(object).to receive(:original_filename) { "file.txt" } }
25
- # it "should return original_filename" do
26
- # expect(subject).to eq "file.txt"
27
- # end
28
- # end
29
- context "has no title, no identifier, no original_filename" do
30
- let(:object) { described_class.new(id: 'duke-test') }
31
- it "should return the id in square brackets" do
32
- expect(subject).to eq "[duke-test]"
33
- end
34
- end
35
- end
36
- end
37
-
38
- RSpec.shared_examples "an object that has identifiers" do
39
- describe "#all_identifiers" do
40
- let(:object) { described_class.new(id: 'test-3') }
41
- subject { object.all_identifiers }
42
- context "has descriptive identifiers, local ID, permanent ID, and id" do
43
- before do
44
- object.desc_metadata.identifier = [ 'ID001', 'ID002' ]
45
- object.local_id = 'LOCAL_ID_A'
46
- object.permanent_id = 'ark:/999999/cd3'
47
- end
48
- it "should return all the identifiers" do
49
- expect(subject).to match_array([ 'ID001', 'ID002', 'LOCAL_ID_A', 'ark:/999999/cd3', 'test-3' ])
50
- end
51
- end
52
- context "no descriptive identifiers or local ID" do
53
- before { object.permanent_id = 'ark:/999999/cd3' }
54
- it "should return the permanent ID and PID" do
55
- expect(subject).to match_array([ 'ark:/999999/cd3', 'test-3' ])
56
- end
57
- end
58
- end
59
- end