ddr-models 2.7.6 → 2.8.0.rc1
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/app/models/collection.rb +1 -1
- data/app/models/component.rb +22 -31
- data/config/initializers/active_fedora_base.rb +8 -0
- data/config/locales/ddr-models.en.yml +4 -0
- data/lib/ddr/datastreams.rb +12 -10
- data/lib/ddr/datastreams/administrative_metadata_datastream.rb +6 -0
- data/lib/ddr/datastreams/streamable_media_datastream.rb +5 -0
- data/lib/ddr/index/fields.rb +7 -5
- data/lib/ddr/managers/derivatives_manager.rb +12 -7
- data/lib/ddr/models.rb +19 -9
- data/lib/ddr/models/base.rb +10 -3
- data/lib/ddr/models/file_management.rb +1 -1
- data/lib/ddr/models/has_admin_metadata.rb +8 -9
- data/lib/ddr/models/indexing.rb +18 -3
- data/lib/ddr/models/language.rb +31 -0
- data/lib/ddr/models/media_type.rb +22 -0
- data/lib/ddr/models/{licenses/license.rb → rights_statement.rb} +3 -7
- data/lib/ddr/models/solr_document.rb +22 -2
- data/lib/ddr/models/streamable.rb +22 -0
- data/lib/ddr/models/version.rb +1 -1
- data/lib/ddr/utils.rb +4 -4
- data/lib/ddr/vocab/asset.rb +8 -0
- data/spec/factories/collection_factories.rb +1 -0
- data/spec/index/fields_spec.rb +18 -0
- data/spec/managers/derivatives_manager_spec.rb +2 -5
- data/spec/models/active_fedora_base_spec.rb +3 -0
- data/spec/models/admin_set_spec.rb +2 -1
- data/spec/models/attachment_spec.rb +1 -0
- data/spec/models/collection_spec.rb +4 -7
- data/spec/models/component_spec.rb +20 -5
- data/spec/models/has_struct_metadata_spec.rb +0 -1
- data/spec/models/indexing_spec.rb +91 -44
- data/spec/models/item_spec.rb +1 -0
- data/spec/models/language_spec.rb +59 -0
- data/spec/models/media_type_spec.rb +46 -0
- data/spec/models/{license_spec.rb → rights_statement_spec.rb} +9 -12
- data/spec/models/solr_document_spec.rb +57 -2
- data/spec/models/target_spec.rb +1 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/shared_examples_for_ddr_models.rb +12 -0
- data/spec/support/shared_examples_for_governables.rb +2 -1
- data/spec/support/shared_examples_for_streamable_media.rb +22 -0
- metadata +17 -13
- data/lib/ddr/models/licenses/admin_policy_license.rb +0 -11
- data/lib/ddr/models/licenses/effective_license.rb +0 -9
- data/lib/ddr/models/licenses/inherited_license.rb +0 -9
- data/lib/ddr/models/licenses/parent_license.rb +0 -11
- data/spec/models/effective_license_spec.rb +0 -74
data/spec/models/item_spec.rb
CHANGED
@@ -5,6 +5,7 @@ RSpec.describe Item, type: :model do
|
|
5
5
|
it_behaves_like "it has an association", :has_many, :children, :is_part_of, "Component"
|
6
6
|
it_behaves_like "a non-collection model"
|
7
7
|
it_behaves_like "a potentially publishable object"
|
8
|
+
it_behaves_like "an object that cannot be streamable"
|
8
9
|
|
9
10
|
describe "indexing text" do
|
10
11
|
let(:children) { FactoryGirl.build_list(:component, 5) }
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Ddr::Models
|
2
|
+
RSpec.describe Language, ddr_aux: true do
|
3
|
+
|
4
|
+
describe ".call" do
|
5
|
+
let(:obj) { Item.new }
|
6
|
+
|
7
|
+
describe "when the object has a language" do
|
8
|
+
before { obj.language = ["cym"] }
|
9
|
+
let(:language) {
|
10
|
+
described_class.new("id"=>1, "code"=>"cym", "title"=>"Welsh", "created_at"=>"2015-09-15T16:15:58.514Z", "updated_at"=>"2015-09-15T16:15:58.514Z")
|
11
|
+
}
|
12
|
+
describe "and the language code is found" do
|
13
|
+
before {
|
14
|
+
allow(described_class).to receive(:find_by_code).with("cym") { language }
|
15
|
+
}
|
16
|
+
it "returns a Language instance" do
|
17
|
+
expect(described_class.call(obj)).to eq([language])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
describe "and the language is not found" do
|
21
|
+
before {
|
22
|
+
allow(described_class).to receive(:find_by_code).with("cym")
|
23
|
+
.and_raise(ActiveResource::ResourceNotFound, "404")
|
24
|
+
}
|
25
|
+
it "raises an exception" do
|
26
|
+
expect { described_class.call(obj) }.to raise_error(Ddr::Models::NotFoundError)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "when the object does not have language" do
|
32
|
+
it "returns empty array" do
|
33
|
+
expect(described_class).not_to receive(:find_by_code)
|
34
|
+
expect(described_class.call(obj)).to eq([])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
describe ".codes" do
|
41
|
+
let(:entries) { [ described_class.new(id: 1, code: 'cym', label: 'Welsh'),
|
42
|
+
described_class.new(id: 2, code: 'fre', label: 'French') ] }
|
43
|
+
let(:response_collection) { ActiveResource::Collection.new }
|
44
|
+
before do
|
45
|
+
response_collection.elements = entries
|
46
|
+
allow(described_class).to receive(:all) { response_collection }
|
47
|
+
end
|
48
|
+
it "returns the defined codes" do
|
49
|
+
expect(described_class.codes).to match_array([ entries[0].code, entries[1].code ])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "instance methods" do
|
54
|
+
subject { described_class.new("id"=>1, "code"=>"cym", "label"=>"Welsh") }
|
55
|
+
its(:to_s) { is_expected.to eq("Welsh") }
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Ddr::Models
|
2
|
+
RSpec.describe MediaType do
|
3
|
+
|
4
|
+
subject { described_class.call(file) }
|
5
|
+
|
6
|
+
describe "when a preferred media type is available" do
|
7
|
+
describe "with a file path" do
|
8
|
+
let(:file) { 'foo.mp4' }
|
9
|
+
it { is_expected.to eq 'video/mp4' }
|
10
|
+
end
|
11
|
+
describe "with an object that responds to :path" do
|
12
|
+
let(:file) { double(path: 'foo.mp4') }
|
13
|
+
it { is_expected.to eq 'video/mp4' }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
describe "when a preferred media type is not available" do
|
17
|
+
describe "and the file responds to :content_type" do
|
18
|
+
let(:file) { double(path: 'foo.jpg', content_type: 'foo/bar') }
|
19
|
+
it { is_expected.to eq 'foo/bar' }
|
20
|
+
end
|
21
|
+
describe "and the file does not respond to :content_type" do
|
22
|
+
describe "and MIME types are present" do
|
23
|
+
describe "with an object that responds to :path" do
|
24
|
+
let(:file) { double(path: 'foo.jpg') }
|
25
|
+
it { is_expected.to eq 'image/jpeg' }
|
26
|
+
end
|
27
|
+
describe "with a file path" do
|
28
|
+
let(:file) { 'foo.jpg' }
|
29
|
+
it { is_expected.to eq 'image/jpeg' }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
describe "and MIME types are not present" do
|
33
|
+
describe "with an object that responds to :path" do
|
34
|
+
let(:file) { double(path: 'foo.bar') }
|
35
|
+
it { is_expected.to eq 'application/octet-stream' }
|
36
|
+
end
|
37
|
+
describe "with a file path" do
|
38
|
+
let(:file) { 'foo.bar' }
|
39
|
+
it { is_expected.to eq 'application/octet-stream' }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -1,23 +1,20 @@
|
|
1
1
|
module Ddr::Models
|
2
|
-
RSpec.describe
|
2
|
+
RSpec.describe RightsStatement, ddr_aux: true do
|
3
3
|
|
4
4
|
describe ".call" do
|
5
|
-
describe "when the object has a
|
6
|
-
let(:obj) { double(pid: "test:1",
|
7
|
-
describe "and the
|
5
|
+
describe "when the object has a rights statement URL" do
|
6
|
+
let(:obj) { double(pid: "test:1", rights: ["http://example.com"]) }
|
7
|
+
describe "and the rights statement is found" do
|
8
8
|
before {
|
9
9
|
allow(described_class).to receive(:get).with(:find, url: "http://example.com") {
|
10
|
-
{"id"=>1, "url"=>"http://example.com", "title"=>"A
|
10
|
+
{"id"=>1, "url"=>"http://example.com", "title"=>"A Rights Statement"}
|
11
11
|
}
|
12
12
|
}
|
13
|
-
it "returns a
|
13
|
+
it "returns a Rights Statement instance" do
|
14
14
|
expect(described_class.call(obj)).to be_a(described_class)
|
15
15
|
end
|
16
|
-
it "sets `pid` to the object pid" do
|
17
|
-
expect(described_class.call(obj).pid).to eq("test:1")
|
18
|
-
end
|
19
16
|
end
|
20
|
-
describe "and the
|
17
|
+
describe "and the rights statement is not found" do
|
21
18
|
before {
|
22
19
|
allow(described_class).to receive(:get).with(:find, url: "http://example.com")
|
23
20
|
.and_raise(ActiveResource::ResourceNotFound, "404")
|
@@ -28,8 +25,8 @@ module Ddr::Models
|
|
28
25
|
end
|
29
26
|
end
|
30
27
|
|
31
|
-
describe "when the object does not have a
|
32
|
-
let(:obj) { double(pid: "test:1",
|
28
|
+
describe "when the object does not have a rights statement" do
|
29
|
+
let(:obj) { double(pid: "test:1", rights: []) }
|
33
30
|
it "returns nil" do
|
34
31
|
expect(described_class.call(obj)).to be_nil
|
35
32
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
RSpec.describe SolrDocument, type: :model, contacts: true do
|
4
2
|
|
5
3
|
describe "class methods" do
|
@@ -195,4 +193,61 @@ RSpec.describe SolrDocument, type: :model, contacts: true do
|
|
195
193
|
end
|
196
194
|
end
|
197
195
|
|
196
|
+
describe "datastreams" do
|
197
|
+
let(:profile) do <<-EOS
|
198
|
+
{"datastreams":{"DC":{"dsLabel":"Dublin Core Record for this object","dsVersionID":"DC1.0","dsCreateDate":"2016-02-09T12:38:56Z","dsState":"A","dsMIME":"text/xml","dsFormatURI":"http://www.openarchives.org/OAI/2.0/oai_dc/","dsControlGroup":"X","dsSize":340,"dsVersionable":true,"dsInfoType":null,"dsLocation":"duke:308221+DC+DC1.0","dsLocationType":null,"dsChecksumType":"SHA-1","dsChecksum":"69880409098d8dec1a5c41240a9daac2dd6832e0"}}}
|
199
|
+
EOS
|
200
|
+
end
|
201
|
+
before {
|
202
|
+
subject[Ddr::Index::Fields::OBJECT_PROFILE] = [ profile ]
|
203
|
+
}
|
204
|
+
specify {
|
205
|
+
expect(subject.has_datastream?("DC")).to be true
|
206
|
+
expect(subject.has_datastream?("foo")).to be false
|
207
|
+
}
|
208
|
+
end
|
209
|
+
|
210
|
+
describe "#streamable?" do
|
211
|
+
specify {
|
212
|
+
allow(subject).to receive(:has_datastream?).with(Ddr::Datastreams::STREAMABLE_MEDIA) { false }
|
213
|
+
expect(subject).not_to be_streamable
|
214
|
+
}
|
215
|
+
specify {
|
216
|
+
allow(subject).to receive(:has_datastream?).with(Ddr::Datastreams::STREAMABLE_MEDIA) { true }
|
217
|
+
expect(subject).to be_streamable
|
218
|
+
}
|
219
|
+
end
|
220
|
+
|
221
|
+
describe "#streamable_media_path" do
|
222
|
+
specify {
|
223
|
+
allow(subject).to receive(:streamable?) { false }
|
224
|
+
expect(subject.streamable_media_path).to be_nil
|
225
|
+
}
|
226
|
+
specify {
|
227
|
+
allow(subject).to receive(:datastreams) do
|
228
|
+
{"streamableMedia"=>{"dsLocation"=>"file:/foo/bar/baz.txt"}}
|
229
|
+
end
|
230
|
+
expect(subject.streamable_media_path).to eq "/foo/bar/baz.txt"
|
231
|
+
}
|
232
|
+
end
|
233
|
+
|
234
|
+
describe "#rights" do
|
235
|
+
specify {
|
236
|
+
obj = Item.create(rights: ["http://example.com"])
|
237
|
+
doc = described_class.find(obj.id)
|
238
|
+
expect(doc.rights).to eq ["http://example.com"]
|
239
|
+
}
|
240
|
+
end
|
241
|
+
|
242
|
+
describe "#rights_statement" do
|
243
|
+
let(:rights_statement) { Ddr::Models::RightsStatement.new(url: "http://example.com") }
|
244
|
+
before do
|
245
|
+
allow(Ddr::Models::RightsStatement).to receive(:get).with(:find, url: "http://example.com") do
|
246
|
+
{ url: "http://example.com" }
|
247
|
+
end
|
248
|
+
allow(subject).to receive(:rights) { ["http://example.com"] }
|
249
|
+
end
|
250
|
+
its(:rights_statement) { is_expected.to eq rights_statement }
|
251
|
+
end
|
252
|
+
|
198
253
|
end
|
data/spec/models/target_spec.rb
CHANGED
@@ -6,5 +6,6 @@ RSpec.describe Target, type: :model, targets: true do
|
|
6
6
|
it_behaves_like "it has an association", :belongs_to, :collection, :is_external_target_for, "Collection"
|
7
7
|
it_behaves_like "a non-collection model"
|
8
8
|
it_behaves_like "an unpublishable object"
|
9
|
+
it_behaves_like "an object that cannot be streamable"
|
9
10
|
|
10
11
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -119,6 +119,17 @@ RSpec.configure do |config|
|
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
+
config.before(:each) do
|
123
|
+
allow(Ddr::Models::AdminSet).to receive(:find_by_code).with("foo") {
|
124
|
+
Ddr::Models::AdminSet.new(code: 'foo', title: 'Foo Admin Set')
|
125
|
+
}
|
126
|
+
allow(Ddr::Models::Language).to receive(:find_by_code).with("cym") {
|
127
|
+
Ddr::Models::Language.new(code: 'cym', label: 'Welsh')
|
128
|
+
}
|
129
|
+
allow(Ddr::Models::Language).to receive(:find_by_code).with("Not a Code")
|
130
|
+
.and_raise(ActiveResource::ResourceNotFound, "404")
|
131
|
+
end
|
132
|
+
|
122
133
|
config.after(:each) do
|
123
134
|
ActiveFedora::Base.destroy_all
|
124
135
|
end
|
@@ -154,4 +154,16 @@ RSpec.shared_examples "a DDR model" do
|
|
154
154
|
expect(subject).to have_thumbnail
|
155
155
|
}
|
156
156
|
end
|
157
|
+
|
158
|
+
describe "#rights_statement" do
|
159
|
+
let(:rights_statement) { Ddr::Models::RightsStatement.new(url: "http://example.com") }
|
160
|
+
before do
|
161
|
+
allow(Ddr::Models::RightsStatement).to receive(:get).with(:find, url: "http://example.com") do
|
162
|
+
{ url: "http://example.com" }
|
163
|
+
end
|
164
|
+
subject.rights = ["http://example.com"]
|
165
|
+
end
|
166
|
+
its(:rights_statement) { is_expected.to eq rights_statement }
|
167
|
+
end
|
168
|
+
|
157
169
|
end
|
@@ -2,6 +2,7 @@ RSpec.shared_examples "a governable object" do
|
|
2
2
|
let(:object) do
|
3
3
|
described_class.new.tap do |obj|
|
4
4
|
obj.title = [ 'Describable' ]
|
5
|
+
obj.admin_set = "foo" if obj.is_a?(Collection)
|
5
6
|
obj.identifier = [ 'id001' ]
|
6
7
|
obj.save(validate: false)
|
7
8
|
end
|
@@ -11,7 +12,7 @@ RSpec.shared_examples "a governable object" do
|
|
11
12
|
it "should set its admin policy with #admin_policy= and get with #admin_policy" do
|
12
13
|
object.admin_policy = coll
|
13
14
|
object.save(validate: false)
|
14
|
-
expect(ActiveFedora::Base.find(object.pid
|
15
|
+
expect(ActiveFedora::Base.find(object.pid).admin_policy).to eq(coll)
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
RSpec.shared_examples "an object that cannot be streamable" do
|
2
|
+
it { is_expected.to_not be_streamable }
|
3
|
+
its(:can_be_streamable?) { is_expected.to be false }
|
4
|
+
end
|
5
|
+
|
6
|
+
RSpec.shared_examples "an object that can be streamable" do
|
7
|
+
it { is_expected.to_not be_streamable }
|
8
|
+
its(:can_be_streamable?) { is_expected.to be true }
|
9
|
+
|
10
|
+
describe "when streamable media is present" do
|
11
|
+
before {
|
12
|
+
subject.add_file(fixture_file_upload('bird.jpg', 'image/jpeg'), 'streamableMedia')
|
13
|
+
subject.save!
|
14
|
+
}
|
15
|
+
specify {
|
16
|
+
expect(subject).to be_streamable
|
17
|
+
expect(subject.streamable_media_type).to eq 'image/jpeg'
|
18
|
+
expect(subject.streamable_media_path).to be_present
|
19
|
+
expect(subject.streamable_media_path).to eq subject.streamableMedia.file_path
|
20
|
+
}
|
21
|
+
end
|
22
|
+
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: 2.
|
4
|
+
version: 2.8.0.rc1
|
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: 2017-05-
|
12
|
+
date: 2017-05-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -504,6 +504,7 @@ files:
|
|
504
504
|
- lib/ddr/datastreams/metadata_datastream.rb
|
505
505
|
- lib/ddr/datastreams/multires_image_datastream.rb
|
506
506
|
- lib/ddr/datastreams/plain_text_datastream.rb
|
507
|
+
- lib/ddr/datastreams/streamable_media_datastream.rb
|
507
508
|
- lib/ddr/datastreams/structural_metadata_datastream.rb
|
508
509
|
- lib/ddr/derivatives.rb
|
509
510
|
- lib/ddr/derivatives/generator.rb
|
@@ -569,13 +570,12 @@ files:
|
|
569
570
|
- lib/ddr/models/has_struct_metadata.rb
|
570
571
|
- lib/ddr/models/has_thumbnail.rb
|
571
572
|
- lib/ddr/models/indexing.rb
|
572
|
-
- lib/ddr/models/
|
573
|
-
- lib/ddr/models/
|
574
|
-
- lib/ddr/models/licenses/inherited_license.rb
|
575
|
-
- lib/ddr/models/licenses/license.rb
|
576
|
-
- lib/ddr/models/licenses/parent_license.rb
|
573
|
+
- lib/ddr/models/language.rb
|
574
|
+
- lib/ddr/models/media_type.rb
|
577
575
|
- lib/ddr/models/permanent_id.rb
|
576
|
+
- lib/ddr/models/rights_statement.rb
|
578
577
|
- lib/ddr/models/solr_document.rb
|
578
|
+
- lib/ddr/models/streamable.rb
|
579
579
|
- lib/ddr/models/structure.rb
|
580
580
|
- lib/ddr/models/structures/agent.rb
|
581
581
|
- lib/ddr/models/structures/div.rb
|
@@ -715,7 +715,6 @@ files:
|
|
715
715
|
- spec/models/component_spec.rb
|
716
716
|
- spec/models/contact_spec.rb
|
717
717
|
- spec/models/descriptive_metadata_datastream_spec.rb
|
718
|
-
- spec/models/effective_license_spec.rb
|
719
718
|
- spec/models/events_spec.rb
|
720
719
|
- spec/models/file_characterization_spec.rb
|
721
720
|
- spec/models/file_management_spec.rb
|
@@ -725,8 +724,10 @@ files:
|
|
725
724
|
- spec/models/has_struct_metadata_spec.rb
|
726
725
|
- spec/models/indexing_spec.rb
|
727
726
|
- spec/models/item_spec.rb
|
728
|
-
- spec/models/
|
727
|
+
- spec/models/language_spec.rb
|
728
|
+
- spec/models/media_type_spec.rb
|
729
729
|
- spec/models/permanent_id_spec.rb
|
730
|
+
- spec/models/rights_statement_spec.rb
|
730
731
|
- spec/models/solr_document_spec.rb
|
731
732
|
- spec/models/structure_spec.rb
|
732
733
|
- spec/models/structures/agent_spec.rb
|
@@ -757,6 +758,7 @@ files:
|
|
757
758
|
- spec/support/shared_examples_for_non_collection_models.rb
|
758
759
|
- spec/support/shared_examples_for_publication.rb
|
759
760
|
- spec/support/shared_examples_for_role_sets.rb
|
761
|
+
- spec/support/shared_examples_for_streamable_media.rb
|
760
762
|
- spec/support/structural_metadata_helper.rb
|
761
763
|
- spec/utils_spec.rb
|
762
764
|
homepage: https://github.com/duke-libraries/ddr-models
|
@@ -775,9 +777,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
775
777
|
version: '0'
|
776
778
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
777
779
|
requirements:
|
778
|
-
- - "
|
780
|
+
- - ">"
|
779
781
|
- !ruby/object:Gem::Version
|
780
|
-
version:
|
782
|
+
version: 1.3.1
|
781
783
|
requirements: []
|
782
784
|
rubyforge_project:
|
783
785
|
rubygems_version: 2.6.8
|
@@ -899,7 +901,6 @@ test_files:
|
|
899
901
|
- spec/models/component_spec.rb
|
900
902
|
- spec/models/contact_spec.rb
|
901
903
|
- spec/models/descriptive_metadata_datastream_spec.rb
|
902
|
-
- spec/models/effective_license_spec.rb
|
903
904
|
- spec/models/events_spec.rb
|
904
905
|
- spec/models/file_characterization_spec.rb
|
905
906
|
- spec/models/file_management_spec.rb
|
@@ -909,8 +910,10 @@ test_files:
|
|
909
910
|
- spec/models/has_struct_metadata_spec.rb
|
910
911
|
- spec/models/indexing_spec.rb
|
911
912
|
- spec/models/item_spec.rb
|
912
|
-
- spec/models/
|
913
|
+
- spec/models/language_spec.rb
|
914
|
+
- spec/models/media_type_spec.rb
|
913
915
|
- spec/models/permanent_id_spec.rb
|
916
|
+
- spec/models/rights_statement_spec.rb
|
914
917
|
- spec/models/solr_document_spec.rb
|
915
918
|
- spec/models/structure_spec.rb
|
916
919
|
- spec/models/structures/agent_spec.rb
|
@@ -941,5 +944,6 @@ test_files:
|
|
941
944
|
- spec/support/shared_examples_for_non_collection_models.rb
|
942
945
|
- spec/support/shared_examples_for_publication.rb
|
943
946
|
- spec/support/shared_examples_for_role_sets.rb
|
947
|
+
- spec/support/shared_examples_for_streamable_media.rb
|
944
948
|
- spec/support/structural_metadata_helper.rb
|
945
949
|
- spec/utils_spec.rb
|