ddr-models 3.0.0.alpha.2 → 3.0.0.alpha.3
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/.travis.yml +5 -2
- data/lib/ddr/actions/fixity_check.rb +8 -5
- data/lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb +1 -1
- data/lib/ddr/auth/grouper_gateway.rb +51 -53
- data/lib/ddr/datastreams/datastream_behavior.rb +65 -66
- data/lib/ddr/events/event.rb +2 -2
- data/lib/ddr/events/fixity_check_event.rb +3 -2
- data/lib/ddr/index/fields.rb +1 -0
- data/lib/ddr/managers/derivatives_manager.rb +3 -3
- data/lib/ddr/managers/permanent_id_manager.rb +2 -2
- data/lib/ddr/models.rb +5 -2
- data/lib/ddr/models/attached_file_profile.rb +12 -0
- data/lib/ddr/models/attached_files_profile.rb +21 -0
- data/lib/ddr/models/base.rb +77 -74
- data/lib/ddr/models/describable.rb +3 -3
- data/lib/ddr/models/governable.rb +1 -1
- data/lib/ddr/models/indexing.rb +1 -0
- data/lib/ddr/models/licenses/license.rb +8 -2
- data/lib/ddr/models/metadata/descriptive_metadata.rb +6 -10
- data/lib/ddr/models/metadata/metadata_mapping.rb +45 -0
- data/lib/ddr/models/object_api.rb +11 -0
- data/lib/ddr/models/solr_document.rb +16 -9
- data/lib/ddr/models/url_safe_id.rb +9 -0
- data/lib/ddr/models/version.rb +1 -1
- data/lib/ddr/utils.rb +3 -3
- data/spec/auth/ability_spec.rb +9 -9
- data/spec/jobs/fits_file_characterization_spec.rb +3 -3
- data/spec/models/active_fedora_base_spec.rb +4 -4
- data/spec/models/active_fedora_datastream_spec.rb +6 -8
- data/spec/models/collection_spec.rb +1 -1
- data/spec/models/descriptive_metadata_spec.rb +0 -3
- data/spec/models/effective_license_spec.rb +4 -4
- data/spec/models/indexing_spec.rb +1 -1
- data/spec/models/license_spec.rb +3 -3
- data/spec/spec_helper.rb +6 -5
- data/spec/support/shared_examples_for_ddr_models.rb +1 -0
- data/spec/support/shared_examples_for_describables.rb +2 -2
- data/spec/support/shared_examples_for_events.rb +6 -6
- data/spec/support/shared_examples_for_fixity_checkable_spec.rb +15 -0
- data/spec/support/shared_examples_for_governables.rb +1 -1
- metadata +9 -4
- data/lib/ddr/models/metadata/metadata_mapper.rb +0 -32
- data/lib/ddr/models/metadata/metadata_mappers.rb +0 -18
data/spec/auth/ability_spec.rb
CHANGED
@@ -21,11 +21,11 @@ module Ddr::Auth
|
|
21
21
|
describe "\"#{dsid}\"" do
|
22
22
|
let(:ds) { obj.datastreams[dsid] }
|
23
23
|
describe "can #{permission.inspect} object" do
|
24
|
-
before { subject.can permission, obj.
|
24
|
+
before { subject.can permission, obj.id }
|
25
25
|
it { should be_able_to(:download, ds) }
|
26
26
|
end
|
27
27
|
describe "cannot #{permission.inspect} object" do
|
28
|
-
before { subject.cannot permission, obj.
|
28
|
+
before { subject.cannot permission, obj.id }
|
29
29
|
it { should_not be_able_to(:download, ds) }
|
30
30
|
end
|
31
31
|
end
|
@@ -35,7 +35,7 @@ module Ddr::Auth
|
|
35
35
|
(Component.ds_specs.keys.map(&:to_s) - DatastreamAbilityDefinitions::DATASTREAM_DOWNLOAD_ABILITIES.keys).each do |dsid|
|
36
36
|
describe "\"#{dsid}\"" do
|
37
37
|
let(:ds) { obj.datastreams[dsid] }
|
38
|
-
before { subject.can :download, obj.
|
38
|
+
before { subject.can :download, obj.id }
|
39
39
|
it { should_not be_able_to(:download, ds) }
|
40
40
|
end
|
41
41
|
end
|
@@ -175,23 +175,23 @@ module Ddr::Auth
|
|
175
175
|
end
|
176
176
|
|
177
177
|
describe "with a Ddr model instance" do
|
178
|
-
let(:obj) { Collection.new(
|
179
|
-
let(:cache_key) { obj.
|
178
|
+
let(:obj) { Collection.new(id: "test-1") }
|
179
|
+
let(:cache_key) { obj.id }
|
180
180
|
let(:perm_obj) { obj }
|
181
181
|
it_behaves_like "it has role based abilities"
|
182
182
|
end
|
183
183
|
|
184
184
|
describe "with a Solr document" do
|
185
|
-
let(:obj) { SolrDocument.new({"id"=>"test
|
186
|
-
let(:cache_key) { obj.
|
185
|
+
let(:obj) { SolrDocument.new({"id"=>"test-1"}) }
|
186
|
+
let(:cache_key) { obj.id }
|
187
187
|
let(:perm_obj) { obj }
|
188
188
|
it_behaves_like "it has role based abilities"
|
189
189
|
end
|
190
190
|
|
191
191
|
describe "with a String" do
|
192
|
-
let(:obj) { "test
|
192
|
+
let(:obj) { "test-1" }
|
193
193
|
let(:cache_key) { obj }
|
194
|
-
let(:perm_obj) { SolrDocument.new({"id"=>"test
|
194
|
+
let(:perm_obj) { SolrDocument.new({"id"=>"test-1"}) }
|
195
195
|
before do
|
196
196
|
allow_any_instance_of(RoleBasedAbilityDefinitions).to receive(:permissions_doc).with(obj) { perm_obj }
|
197
197
|
end
|
@@ -24,7 +24,7 @@ module Ddr::Jobs
|
|
24
24
|
before do
|
25
25
|
allow(Open3).to receive(:capture3) { [ stdout_msg, stderr_msg, $? ] }
|
26
26
|
allow_any_instance_of(Process::Status).to receive(:success?) { true }
|
27
|
-
Ddr::Jobs::FitsFileCharacterization.perform(object.
|
27
|
+
Ddr::Jobs::FitsFileCharacterization.perform(object.id)
|
28
28
|
object.reload
|
29
29
|
end
|
30
30
|
it "should populate the fits datastream" do
|
@@ -38,7 +38,7 @@ module Ddr::Jobs
|
|
38
38
|
before do
|
39
39
|
allow(Open3).to receive(:capture3) { [ stdout_msg, stderr_msg, $? ] }
|
40
40
|
allow_any_instance_of(Process::Status).to receive(:success?) { false }
|
41
|
-
Ddr::Jobs::FitsFileCharacterization.perform(object.
|
41
|
+
Ddr::Jobs::FitsFileCharacterization.perform(object.id)
|
42
42
|
object.reload
|
43
43
|
end
|
44
44
|
it "should not populate the fits datastream" do
|
@@ -49,4 +49,4 @@ module Ddr::Jobs
|
|
49
49
|
end
|
50
50
|
|
51
51
|
end
|
52
|
-
end
|
52
|
+
end
|
@@ -6,22 +6,22 @@ RSpec.describe ActiveFedora::Base do
|
|
6
6
|
let!(:collection) { FactoryGirl.create(:collection) }
|
7
7
|
describe "when called on the wrong class" do
|
8
8
|
it "should raise an exception" do
|
9
|
-
expect { Item.find(collection.
|
9
|
+
expect { Item.find(collection.id) }.to raise_error(ActiveFedora::ActiveFedoraError)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
describe "when called on Ddr::Models::Base" do
|
13
13
|
it "should cast to the object's class" do
|
14
|
-
expect(Ddr::Models::Base.find(collection.
|
14
|
+
expect(Ddr::Models::Base.find(collection.id)).to eq(collection)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
describe "when called on ActiveFedora::Base" do
|
18
18
|
it "should cast to the object's class" do
|
19
|
-
expect(ActiveFedora::Base.find(collection.
|
19
|
+
expect(ActiveFedora::Base.find(collection.id)).to eq(collection)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
describe "when called on the object's class" do
|
23
23
|
it "should return the object" do
|
24
|
-
expect(Collection.find(collection.
|
24
|
+
expect(Collection.find(collection.id)).to eq(collection)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -65,20 +65,20 @@ module ActiveFedora
|
|
65
65
|
context "the datstream is new" do
|
66
66
|
before { allow(subject).to receive(:new_record?) { true } }
|
67
67
|
it "should raise an exception" do
|
68
|
-
expect { subject.validate_checksum!(
|
68
|
+
expect { subject.validate_checksum!("bb3200c2ddaee4bd7b9a4dc1ad3e10ed886eaef1") }.to raise_error(Ddr::Models::Error)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
context "the datastream content has changed" do
|
72
72
|
before { allow(subject).to receive(:content_changed?) { true } }
|
73
73
|
it "should raise an exception" do
|
74
|
-
expect { subject.validate_checksum!(
|
74
|
+
expect { subject.validate_checksum!("bb3200c2ddaee4bd7b9a4dc1ad3e10ed886eaef1") }.to raise_error(Ddr::Models::Error)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
78
78
|
context "with persisted content" do
|
79
79
|
before do
|
80
80
|
allow(subject).to receive(:new_record?) { false }
|
81
|
-
allow(subject).to receive(:pid) { "foobar
|
81
|
+
allow(subject).to receive(:pid) { "foobar-1" }
|
82
82
|
allow(subject).to receive(:checksum) { checksum }
|
83
83
|
end
|
84
84
|
context "and the repository internal checksum in invalid" do
|
@@ -99,21 +99,19 @@ module ActiveFedora
|
|
99
99
|
end
|
100
100
|
context "and the checksum type is nil" do
|
101
101
|
it "should compare the provided checksum with the datastream checksum" do
|
102
|
-
expect { subject.validate_checksum!(checksum.value) }
|
103
|
-
.not_to raise_error(Ddr::Models::Error)
|
102
|
+
expect { subject.validate_checksum!(checksum.value) }.not_to raise_error
|
104
103
|
end
|
105
104
|
end
|
106
105
|
context "and the checksum type is the same as the datastream checksum type" do
|
107
106
|
it "should compare the provided checksum with the datastream checksum" do
|
108
|
-
expect { subject.validate_checksum!(checksum.value, checksum.algorithm) }
|
109
|
-
.not_to raise_error(Ddr::Models::Error)
|
107
|
+
expect { subject.validate_checksum!(checksum.value, checksum.algorithm) }.not_to raise_error
|
110
108
|
end
|
111
109
|
end
|
112
110
|
context "and the checksum type differs from the datastream checksum type" do
|
113
111
|
let!(:md5digest) { "273ae0f4aa60d94e89bc0e0652ae2c8f" }
|
114
112
|
it "should generate a checksum for comparison" do
|
115
113
|
allow(subject).to receive(:content_digest).with("MD5") { md5digest }
|
116
|
-
expect { subject.validate_checksum!(md5digest, "MD5") }.not_to raise_error
|
114
|
+
expect { subject.validate_checksum!(md5digest, "MD5") }.not_to raise_error
|
117
115
|
end
|
118
116
|
end
|
119
117
|
context "and the checksum doesn't match" do
|
@@ -8,7 +8,7 @@ module Ddr::Models
|
|
8
8
|
let(:license) { License.new(url: url) }
|
9
9
|
before { allow(License).to receive(:find).with(url: url) { license } }
|
10
10
|
|
11
|
-
let(:obj) { double(
|
11
|
+
let(:obj) { double(id: "test-1", license: nil, parent: nil, admin_policy: nil, admin_policy_id: nil) }
|
12
12
|
|
13
13
|
describe "when the object has a license" do
|
14
14
|
before { allow(obj).to receive(:license) { url } }
|
@@ -17,7 +17,7 @@ module Ddr::Models
|
|
17
17
|
|
18
18
|
describe "when the object does not have a license" do
|
19
19
|
describe "and the object has a parent" do
|
20
|
-
let(:parent) { double(
|
20
|
+
let(:parent) { double(id: "test-2", license: nil) }
|
21
21
|
before do
|
22
22
|
allow(obj).to receive(:parent) { parent }
|
23
23
|
end
|
@@ -33,11 +33,11 @@ module Ddr::Models
|
|
33
33
|
end
|
34
34
|
describe "and the object does not have a parent" do
|
35
35
|
describe "and the object has an admin policy" do
|
36
|
-
let(:admin_policy) { double(
|
36
|
+
let(:admin_policy) { double(id: "test-3", license: nil) }
|
37
37
|
before { allow(obj).to receive(:admin_policy) { admin_policy } }
|
38
38
|
describe "and the admin policy has a different id from the object" do
|
39
39
|
before do
|
40
|
-
allow(obj).to receive(:admin_policy_id) { "test
|
40
|
+
allow(obj).to receive(:admin_policy_id) { "test-3" }
|
41
41
|
end
|
42
42
|
describe "and the admin policy has a license" do
|
43
43
|
before do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Ddr::Models
|
2
2
|
RSpec.describe Indexing do
|
3
3
|
|
4
|
-
let(:obj) { FactoryGirl.
|
4
|
+
let(:obj) { FactoryGirl.create(:item) }
|
5
5
|
|
6
6
|
let(:role1) { FactoryGirl.build(:role, :curator, :person, :resource) }
|
7
7
|
let(:role2) { FactoryGirl.build(:role, :curator, :person, :policy) }
|
data/spec/models/license_spec.rb
CHANGED
@@ -6,16 +6,16 @@ module Ddr::Models
|
|
6
6
|
|
7
7
|
describe "when the object has a license URL" do
|
8
8
|
let(:url) { "http://example.com" }
|
9
|
-
let(:obj) { double(
|
9
|
+
let(:obj) { double(id: "test-1", license: url) }
|
10
10
|
before do
|
11
11
|
allow(described_class).to receive(:find).with(url: url) { described_class.new(url: url, title: "A License") }
|
12
12
|
end
|
13
|
-
its(:pid) { is_expected.to eq("test
|
13
|
+
its(:pid) { is_expected.to eq("test-1") }
|
14
14
|
its(:to_s) { is_expected.to eq("A License") }
|
15
15
|
end
|
16
16
|
|
17
17
|
describe "when the object does not have a license" do
|
18
|
-
let(:obj) { double(
|
18
|
+
let(:obj) { double(id: "test-1", license: nil) }
|
19
19
|
it { is_expected.to be_nil }
|
20
20
|
end
|
21
21
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,22 +9,23 @@ require "rails"
|
|
9
9
|
require "rspec/rails"
|
10
10
|
require "rspec/its"
|
11
11
|
require "factory_girl_rails"
|
12
|
-
require "database_cleaner"
|
13
12
|
require "tempfile"
|
14
|
-
require "resque"
|
15
13
|
require "cancan/matchers"
|
16
14
|
require 'equivalent-xml/rspec_matchers'
|
15
|
+
require 'active_fedora/cleaner'
|
17
16
|
|
17
|
+
require "resque"
|
18
18
|
Resque.inline = true
|
19
19
|
|
20
20
|
OmniAuth.config.test_mode = true
|
21
21
|
|
22
22
|
Dir[File.join(File.dirname(__FILE__), "support", "*.rb")].each { |f| require f }
|
23
23
|
|
24
|
+
require "database_cleaner"
|
24
25
|
DatabaseCleaner.strategy = :truncation
|
25
26
|
|
26
27
|
# Silence deprecation warnings
|
27
|
-
warn "Default deprecation behavior set to :silence!"
|
28
|
+
warn "WARNING: Default deprecation behavior set to :silence!"
|
28
29
|
Deprecation.default_deprecation_behavior = :silence
|
29
30
|
|
30
31
|
RSpec.configure do |config|
|
@@ -105,7 +106,7 @@ RSpec.configure do |config|
|
|
105
106
|
|
106
107
|
config.before(:suite) do
|
107
108
|
DatabaseCleaner.clean
|
108
|
-
ActiveFedora::
|
109
|
+
ActiveFedora::Cleaner.clean!
|
109
110
|
Ddr::Derivatives.configure do |config|
|
110
111
|
config.update_derivatives = [ :multires_image, :thumbnail ]
|
111
112
|
end
|
@@ -127,7 +128,7 @@ RSpec.configure do |config|
|
|
127
128
|
end
|
128
129
|
|
129
130
|
config.after(:each) do
|
130
|
-
ActiveFedora::
|
131
|
+
ActiveFedora::Cleaner.clean!
|
131
132
|
end
|
132
133
|
|
133
134
|
end
|
@@ -4,6 +4,7 @@ RSpec.shared_examples "a DDR model" do
|
|
4
4
|
it_behaves_like "a governable object"
|
5
5
|
it_behaves_like "an object that has a display title"
|
6
6
|
it_behaves_like "an object that has identifiers"
|
7
|
+
it_behaves_like "a fixity checkable object"
|
7
8
|
|
8
9
|
describe "events" do
|
9
10
|
describe "on deletion with #destroy" do
|
@@ -19,9 +19,9 @@ RSpec.shared_examples "a describable object" do
|
|
19
19
|
describe "arguments" do
|
20
20
|
it "with fixed results" do
|
21
21
|
expect(object.desc_metadata_terms(:dcterms))
|
22
|
-
.to eq(Ddr::Models::
|
22
|
+
.to eq(Ddr::Models::MetadataMapping.dc11.unqualified_names + (Ddr::Models::MetadataMapping.dcterms.unqualified_names - Ddr::Models::MetadataMapping.dc11.unqualified_names))
|
23
23
|
expect(object.desc_metadata_terms(:dcterms))
|
24
|
-
.to match_array(Ddr::Models::
|
24
|
+
.to match_array(Ddr::Models::MetadataMapping.dcterms.unqualified_names)
|
25
25
|
expect(object.desc_metadata_terms(:duke)).to eq Ddr::Vocab::Vocabulary.term_names(Ddr::Vocab::DukeTerms)
|
26
26
|
expect(object.desc_metadata_terms(:dcterms_elements11)).to eq Ddr::Vocab::Vocabulary.term_names(RDF::DC11)
|
27
27
|
expect(object.desc_metadata_terms(:defined_attributes)).to match_array Ddr::Vocab::Vocabulary.term_names(RDF::DC11)
|
@@ -82,7 +82,7 @@ RSpec.shared_examples "an event" do
|
|
82
82
|
end
|
83
83
|
context "when attributes are set" do
|
84
84
|
let(:obj) { ActiveFedora::Base.create }
|
85
|
-
let(:event) { described_class.new(pid: obj.
|
85
|
+
let(:event) { described_class.new(pid: obj.id, outcome: Ddr::Events::Event::FAILURE, event_date_time: Time.utc(2013), software: "Test", summary: "A terrible disaster") }
|
86
86
|
it "should not overwrite attributes" do
|
87
87
|
expect { event.send(:set_defaults) }.not_to change { event.outcome }
|
88
88
|
expect { event.send(:set_defaults) }.not_to change { event.event_date_time }
|
@@ -93,25 +93,25 @@ RSpec.shared_examples "an event" do
|
|
93
93
|
end
|
94
94
|
|
95
95
|
describe "object getter" do
|
96
|
-
subject { described_class.new(pid: "test
|
96
|
+
subject { described_class.new(pid: "test-123") }
|
97
97
|
let(:object) { mock_object }
|
98
|
-
before { allow(ActiveFedora::Base).to receive(:find).with("test
|
98
|
+
before { allow(ActiveFedora::Base).to receive(:find).with("test-123") { object } }
|
99
99
|
it "should retrieve the object" do
|
100
100
|
expect(subject.object).to eq object
|
101
101
|
end
|
102
102
|
it "should cache the object" do
|
103
|
-
expect(ActiveFedora::Base).to receive(:find).with("test
|
103
|
+
expect(ActiveFedora::Base).to receive(:find).with("test-123").once
|
104
104
|
subject.object
|
105
105
|
subject.object
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
109
|
describe "object setter" do
|
110
|
-
let(:object) { mock_object(
|
110
|
+
let(:object) { mock_object(id: "test-123") }
|
111
111
|
it "should set the event pid and object" do
|
112
112
|
allow(object).to receive(:new_record?) { false }
|
113
113
|
subject.object = object
|
114
|
-
expect(subject.pid).to eq "test
|
114
|
+
expect(subject.pid).to eq "test-123"
|
115
115
|
expect(subject.object).to eq object
|
116
116
|
end
|
117
117
|
it "should raise an ArgumentError if object is a new record" do
|
@@ -0,0 +1,15 @@
|
|
1
|
+
RSpec.shared_examples "a fixity checkable object" do
|
2
|
+
|
3
|
+
let(:object) { described_class.new }
|
4
|
+
|
5
|
+
describe "fixity check" do
|
6
|
+
before do
|
7
|
+
object.thumbnail.content = '1234567890'
|
8
|
+
object.save(validate: false)
|
9
|
+
end
|
10
|
+
it "should be able to perform a fixity check" do
|
11
|
+
expect(Ddr::Actions::FixityCheck.execute(object)).to_not be_nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -11,7 +11,7 @@ RSpec.shared_examples "a governable object" do
|
|
11
11
|
it "should set its admin policy with #admin_policy= and get with #admin_policy" do
|
12
12
|
object.admin_policy = coll
|
13
13
|
object.save(validate: false)
|
14
|
-
expect(ActiveFedora::Base.find(object.
|
14
|
+
expect(ActiveFedora::Base.find(object.id).admin_policy).to eq(coll)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
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.alpha.
|
4
|
+
version: 3.0.0.alpha.3
|
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: 2015-10-
|
12
|
+
date: 2015-10-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -494,6 +494,8 @@ files:
|
|
494
494
|
- lib/ddr/models.rb
|
495
495
|
- lib/ddr/models/access_controllable.rb
|
496
496
|
- lib/ddr/models/admin_set.rb
|
497
|
+
- lib/ddr/models/attached_file_profile.rb
|
498
|
+
- lib/ddr/models/attached_files_profile.rb
|
497
499
|
- lib/ddr/models/base.rb
|
498
500
|
- lib/ddr/models/describable.rb
|
499
501
|
- lib/ddr/models/engine.rb
|
@@ -518,14 +520,15 @@ files:
|
|
518
520
|
- lib/ddr/models/licenses/parent_license.rb
|
519
521
|
- lib/ddr/models/metadata/descriptive_metadata.rb
|
520
522
|
- lib/ddr/models/metadata/metadata.rb
|
521
|
-
- lib/ddr/models/metadata/
|
522
|
-
- lib/ddr/models/metadata/metadata_mappers.rb
|
523
|
+
- lib/ddr/models/metadata/metadata_mapping.rb
|
523
524
|
- lib/ddr/models/metadata/metadata_term.rb
|
524
525
|
- lib/ddr/models/metadata/metadata_vocabularies.rb
|
525
526
|
- lib/ddr/models/metadata/metadata_vocabulary.rb
|
527
|
+
- lib/ddr/models/object_api.rb
|
526
528
|
- lib/ddr/models/solr_document.rb
|
527
529
|
- lib/ddr/models/struct_div.rb
|
528
530
|
- lib/ddr/models/structure.rb
|
531
|
+
- lib/ddr/models/url_safe_id.rb
|
529
532
|
- lib/ddr/models/version.rb
|
530
533
|
- lib/ddr/models/year_facet.rb
|
531
534
|
- lib/ddr/notifications.rb
|
@@ -669,6 +672,7 @@ files:
|
|
669
672
|
- spec/support/shared_examples_for_ddr_models.rb
|
670
673
|
- spec/support/shared_examples_for_describables.rb
|
671
674
|
- spec/support/shared_examples_for_events.rb
|
675
|
+
- spec/support/shared_examples_for_fixity_checkable_spec.rb
|
672
676
|
- spec/support/shared_examples_for_governables.rb
|
673
677
|
- spec/support/shared_examples_for_has_content.rb
|
674
678
|
- spec/support/shared_examples_for_indexing.rb
|
@@ -832,6 +836,7 @@ test_files:
|
|
832
836
|
- spec/support/shared_examples_for_ddr_models.rb
|
833
837
|
- spec/support/shared_examples_for_describables.rb
|
834
838
|
- spec/support/shared_examples_for_events.rb
|
839
|
+
- spec/support/shared_examples_for_fixity_checkable_spec.rb
|
835
840
|
- spec/support/shared_examples_for_governables.rb
|
836
841
|
- spec/support/shared_examples_for_has_content.rb
|
837
842
|
- spec/support/shared_examples_for_indexing.rb
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module Ddr::Models
|
2
|
-
#
|
3
|
-
# Maps vocabulary terms to names
|
4
|
-
#
|
5
|
-
class MetadataMapper
|
6
|
-
extend MetadataMappers
|
7
|
-
|
8
|
-
attr_reader :mapping
|
9
|
-
|
10
|
-
# param vocab [MetadataVocabulary] the vocabulary
|
11
|
-
def initialize(vocab)
|
12
|
-
@mapping = vocab.terms.each_with_object({}) do |term, memo|
|
13
|
-
memo[term.qualified_name] = term
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def terms
|
18
|
-
mapping.values
|
19
|
-
end
|
20
|
-
|
21
|
-
def unqualified_names
|
22
|
-
mapping.values.map(&:unqualified_name)
|
23
|
-
end
|
24
|
-
|
25
|
-
def merge(other)
|
26
|
-
merged = self.dup
|
27
|
-
merged.mapping.merge! other.mapping
|
28
|
-
merged
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|