ddr-models 3.0.0.beta.18 → 3.0.0.beta.20
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/lib/ddr/index/fields.rb +1 -0
- data/lib/ddr/models.rb +1 -0
- data/lib/ddr/models/attached_file_profile.rb +1 -1
- data/lib/ddr/models/base.rb +1 -0
- data/lib/ddr/models/indexing.rb +3 -2
- data/lib/ddr/models/relation.rb +18 -0
- data/lib/ddr/models/solr_document.rb +1 -1
- data/lib/ddr/models/version.rb +1 -1
- data/lib/ddr/utils.rb +2 -0
- data/spec/models/item_spec.rb +21 -0
- data/spec/support/shared_examples_for_ddr_models.rb +141 -6
- metadata +3 -10
- data/spec/support/shared_examples_for_describables.rb +0 -58
- data/spec/support/shared_examples_for_fixity_checkable_spec.rb +0 -30
- data/spec/support/shared_examples_for_governables.rb +0 -17
- data/spec/support/shared_examples_for_indexing.rb +0 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83e427c337952549de62787a1e38025b6a41153e
|
4
|
+
data.tar.gz: 57656751812c73a3360e5122eddf22bc317f02f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f27a59cee19c3b97e19a36347ee37aabd216d0a566cbb0cf840a998e80053d29d0a088e753d08fd8f6a3107be4be714ca30e9ae8542ce2db81a110253dc89089
|
7
|
+
data.tar.gz: cbe43fb12c173fc4c0eff9727d033ed60eea022b0a8d827cdae305a4a76995f7582e5fc61268ddcc2496b81f251526dcca482e625e3f25f4afd2dd74bb104a78
|
data/lib/ddr/index/fields.rb
CHANGED
@@ -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"
|
data/lib/ddr/models.rb
CHANGED
data/lib/ddr/models/base.rb
CHANGED
data/lib/ddr/models/indexing.rb
CHANGED
@@ -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.
|
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.
|
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)
|
data/lib/ddr/models/version.rb
CHANGED
data/lib/ddr/utils.rb
CHANGED
@@ -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 = []
|
data/spec/models/item_spec.rb
CHANGED
@@ -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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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.
|
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-
|
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
|