ddr-models 2.3.2 → 2.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -3
  3. data/ddr-models.gemspec +1 -1
  4. data/lib/ddr/auth.rb +10 -6
  5. data/lib/ddr/auth/group.rb +2 -1
  6. data/lib/ddr/auth/grouper_gateway.rb +7 -6
  7. data/lib/ddr/auth/permissions.rb +2 -1
  8. data/lib/ddr/auth/roles.rb +3 -2
  9. data/lib/ddr/auth/roles/role_set.rb +3 -2
  10. data/lib/ddr/datastreams/administrative_metadata_datastream.rb +3 -0
  11. data/lib/ddr/derivatives/png_generator.rb +1 -1
  12. data/lib/ddr/index/fields.rb +11 -1
  13. data/lib/ddr/index/filter.rb +4 -3
  14. data/lib/ddr/index/legacy_license_fields.rb +0 -2
  15. data/lib/ddr/index/query_clause.rb +2 -2
  16. data/lib/ddr/index/query_value.rb +6 -3
  17. data/lib/ddr/jobs.rb +5 -1
  18. data/lib/ddr/jobs/fits_file_characterization.rb +2 -40
  19. data/lib/ddr/jobs/fixity_check.rb +13 -0
  20. data/lib/ddr/jobs/job.rb +36 -0
  21. data/lib/ddr/jobs/queue.rb +27 -0
  22. data/lib/ddr/jobs/update_index.rb +13 -0
  23. data/lib/ddr/managers/derivatives_manager.rb +21 -17
  24. data/lib/ddr/models.rb +14 -2
  25. data/lib/ddr/models/access_controllable.rb +3 -6
  26. data/lib/ddr/models/admin_set.rb +5 -3
  27. data/lib/ddr/models/base.rb +2 -3
  28. data/lib/ddr/models/contact.rb +17 -0
  29. data/lib/ddr/models/file_characterization.rb +37 -0
  30. data/lib/ddr/models/has_admin_metadata.rb +2 -1
  31. data/lib/ddr/models/has_content.rb +4 -2
  32. data/lib/ddr/models/indexing.rb +5 -0
  33. data/lib/ddr/models/licenses/license.rb +5 -3
  34. data/lib/ddr/models/solr_document.rb +1 -1
  35. data/lib/ddr/models/version.rb +1 -1
  36. data/lib/ddr/models/with_content_file.rb +37 -0
  37. data/lib/ddr/vocab/asset.rb +3 -0
  38. data/spec/derivatives/png_generator_spec.rb +7 -0
  39. data/spec/factories/test_model_factories.rb +1 -1
  40. data/spec/fixtures/arrow1rightred_e0.gif +0 -0
  41. data/spec/fixtures/bird.jpg +0 -0
  42. data/spec/index/query_value_spec.rb +33 -0
  43. data/spec/jobs/fits_file_characterization_spec.rb +8 -44
  44. data/spec/jobs/fixity_check_spec.rb +22 -0
  45. data/spec/jobs/job_spec.rb +40 -0
  46. data/spec/jobs/update_index_spec.rb +22 -0
  47. data/spec/managers/derivatives_manager_spec.rb +16 -12
  48. data/spec/models/admin_set_spec.rb +3 -3
  49. data/spec/models/contact_spec.rb +22 -0
  50. data/spec/models/effective_license_spec.rb +17 -7
  51. data/spec/models/file_characterization_spec.rb +39 -0
  52. data/spec/models/has_admin_metadata_spec.rb +8 -5
  53. data/spec/models/indexing_spec.rb +2 -0
  54. data/spec/models/license_spec.rb +3 -1
  55. data/spec/models/solr_document_spec.rb +6 -3
  56. data/spec/models/with_content_file_spec.rb +37 -0
  57. data/spec/spec_helper.rb +2 -0
  58. metadata +43 -30
  59. data/lib/ddr/contacts.rb +0 -25
  60. data/lib/ddr/index_fields.rb +0 -14
  61. data/spec/auth/ldap_gateway_spec.rb +0 -9
  62. data/spec/contacts/contacts_spec.rb +0 -26
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ module Ddr::Jobs
4
+ RSpec.describe FixityCheck do
5
+
6
+ it "should use the :fixity queue" do
7
+ expect(described_class.queue).to eq(:fixity)
8
+ end
9
+
10
+ describe ".perform" do
11
+ let!(:obj) { double(fixity_check: nil) }
12
+ before do
13
+ allow(ActiveFedora::Base).to receive(:find).with("test:1") { obj }
14
+ end
15
+ it "should call `fixity_check` on the object" do
16
+ expect(obj).to receive(:fixity_check)
17
+ described_class.perform("test:1")
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,40 @@
1
+ module Ddr::Jobs
2
+ RSpec.describe Job do
3
+
4
+ before(:all) do
5
+ class TestJob
6
+ extend Job
7
+
8
+ @queue = :test
9
+
10
+ def perform(object_id)
11
+ puts object_id
12
+ end
13
+ end
14
+ end
15
+
16
+ after(:all) do
17
+ Ddr::Jobs.send(:remove_const, :TestJob)
18
+ end
19
+
20
+ let(:queued) do
21
+ [{"class"=>"Ddr::Jobs::TestJob", "args"=>["test-1"]},
22
+ {"class"=>"Ddr::Jobs::OtherJob", "args"=>["test-2"]},
23
+ {"class"=>"Ddr::Jobs::TestJob", "args"=>["test-3"]},
24
+ ]
25
+ end
26
+
27
+ before(:each) do
28
+ allow(Resque).to receive(:size).with(:test) { 3 }
29
+ allow(Resque).to receive(:peek).with(:test, 0, 3) { queued }
30
+ end
31
+
32
+ describe ".queued_object_ids" do
33
+ it "returns the list of object_ids for queued jobs of this type" do
34
+ expect(TestJob.queued_object_ids)
35
+ .to contain_exactly("test-1", "test-3")
36
+ end
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ module Ddr::Jobs
4
+ RSpec.describe UpdateIndex do
5
+
6
+ it "should use the :index queue" do
7
+ expect(described_class.queue).to eq(:index)
8
+ end
9
+
10
+ describe ".perform" do
11
+ let!(:obj) { double(update_index: nil) }
12
+ before do
13
+ allow(ActiveFedora::Base).to receive(:find).with("test:1") { obj }
14
+ end
15
+ it "should call `update_index` on the object" do
16
+ expect(obj).to receive(:update_index)
17
+ described_class.perform("test:1")
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -28,7 +28,7 @@ module Ddr
28
28
  context "all derivatives" do
29
29
  context "not multires_image_able" do
30
30
  let(:object) { ContentBearing.new }
31
- context "content is image" do
31
+ context "content is an image" do
32
32
  let(:file) { fixture_file_upload("imageA.tif", "image/tiff") }
33
33
  it "should generate a thumbnail and not a ptif" do
34
34
  expect(object.derivatives).to receive(:generate_derivative!).with(Ddr::Derivatives::DERIVATIVES[:thumbnail])
@@ -36,15 +36,7 @@ module Ddr
36
36
  object.derivatives.update_derivatives(:now)
37
37
  end
38
38
  end
39
- context "content is a PDF" do
40
- let(:file) { fixture_file_upload("sample.pdf", "application/pdf") }
41
- it "should generate a thumbnail and not a ptif" do
42
- expect(object.derivatives).to receive(:generate_derivative!).with(Ddr::Derivatives::DERIVATIVES[:thumbnail])
43
- expect(object.derivatives).to_not receive(:generate_derivative!).with(Ddr::Derivatives::DERIVATIVES[:multires_image])
44
- object.derivatives.update_derivatives(:now)
45
- end
46
- end
47
- context "content is neither an image nor a PDF" do
39
+ context "content is not an image" do
48
40
  let(:file) { fixture_file_upload("sample.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document") }
49
41
  it "should generate neither a thumbnail nor a ptif" do
50
42
  expect(object.derivatives).to_not receive(:generate_derivative!).with(Ddr::Derivatives::DERIVATIVES[:thumbnail])
@@ -64,7 +56,7 @@ module Ddr
64
56
  end
65
57
  end
66
58
  context "content is not tiff image" do
67
- let(:file) { fixture_file_upload("sample.pdf", "application/pdf") }
59
+ let(:file) { fixture_file_upload("bird.jpg", "image/jpeg") }
68
60
  it "should generate a thumbnail but not a ptif" do
69
61
  expect(object.derivatives).to receive(:generate_derivative!).with(Ddr::Derivatives::DERIVATIVES[:thumbnail])
70
62
  expect(object.derivatives).to_not receive(:generate_derivative!).with(Ddr::Derivatives::DERIVATIVES[:multires_image])
@@ -85,7 +77,7 @@ module Ddr
85
77
  object.derivatives.update_derivatives(:now)
86
78
  end
87
79
  end
88
- end
80
+ end
89
81
 
90
82
  describe "derivative generation" do
91
83
  let(:file) { fixture_file_upload("imageA.tif", "image/tiff") }
@@ -120,6 +112,18 @@ end
120
112
  end
121
113
  end
122
114
 
115
+ describe "exception during derivative generation" do
116
+ let(:object) { ContentBearing.create }
117
+ before do
118
+ allow(Dir::Tmpname).to receive(:make_tmpname).with('', nil) { 'test-temp-dir' }
119
+ # simulate raising of exception during derivative generation
120
+ allow_any_instance_of(Ddr::Managers::DerivativesManager).to receive(:generate_derivative!).and_raise(StandardError)
121
+ end
122
+ it "should delete the temporary work directory" do
123
+ expect(File.exist?(File.join(Dir.tmpdir, 'test-temp-dir'))).to be false
124
+ end
125
+ end
126
+
123
127
  end
124
128
  end
125
129
  end
@@ -3,11 +3,12 @@ module Ddr::Models
3
3
 
4
4
  describe ".call" do
5
5
  subject { described_class.call(obj) }
6
+ let(:obj) { Item.new }
6
7
 
7
8
  describe "when the object has an admin set" do
8
- let(:obj) { double(admin_set: "dvs") }
9
9
  before do
10
- allow(described_class).to receive(:find).with(code: "dvs") do
10
+ obj.admin_set = "dvs"
11
+ allow(described_class).to receive(:get).with(:find, code: "dvs") do
11
12
  described_class.new("id"=>1, "code"=>"dvs", "title"=>"Data and Visualization Services", "created_at"=>"2015-09-15T16:15:58.514Z", "updated_at"=>"2015-09-15T16:15:58.514Z")
12
13
  end
13
14
  end
@@ -16,7 +17,6 @@ module Ddr::Models
16
17
  end
17
18
 
18
19
  describe "when the object does not have an admin set" do
19
- let(:obj) { double(admin_set: nil) }
20
20
  it { is_expected.to be_nil }
21
21
  end
22
22
  end
@@ -0,0 +1,22 @@
1
+ module Ddr::Models
2
+ RSpec.describe Contact do
3
+
4
+ describe ".call" do
5
+ subject { described_class.call(slug) }
6
+ let(:slug) { 'abc' }
7
+
8
+ before do
9
+ allow(described_class).to receive(:get).with(:find, slug: slug) do
10
+ described_class.new(
11
+ "id"=>1, "slug"=>"abc", "name"=>"A, B, and C Services", "short_name"=>"ABCS",
12
+ "url"=>"http://library.inst.edu/abc", "phone"=>"555-1234", "email"=>"abc@library.inst.edu",
13
+ "ask"=>"http://library.inst.edu/abc-ask", "created_at"=>"2015-09-15T16:15:58.514Z",
14
+ "updated_at"=>"2015-09-15T16:15:58.514Z")
15
+ end
16
+ end
17
+
18
+ its(:to_s) { is_expected.to eq("A, B, and C Services") }
19
+ end
20
+
21
+ end
22
+ end
@@ -6,34 +6,41 @@ module Ddr::Models
6
6
  let(:url) { "https://creativecommons.org/licenses/by-nc-nd/4.0/" }
7
7
 
8
8
  let(:license) { License.new(url: url) }
9
- before { allow(License).to receive(:find).with(url: url) { license } }
10
9
 
11
- let(:obj) { double(pid: "test:1", id: "test:1", license: nil, parent: nil, admin_policy: nil, admin_policy_id: nil) }
10
+ let(:obj) { Component.new(pid: "test:1") }
11
+ let(:parent) { Item.new(pid: "test:2") }
12
+ let(:admin_policy) { Collection.new(pid: "test:3") }
12
13
 
13
14
  describe "when the object has a license" do
14
- before { allow(obj).to receive(:license) { url } }
15
+ before do
16
+ allow(License).to receive(:call).with(obj) { license }
17
+ end
15
18
  it { is_expected.to eq(license) }
16
19
  end
17
20
 
18
21
  describe "when the object does not have a license" do
22
+ before do
23
+ allow(License).to receive(:call).with(obj) { nil }
24
+ end
19
25
  describe "and the object has a parent" do
20
- let(:parent) { double(pid: "test:2", license: nil) }
21
26
  before do
22
27
  allow(obj).to receive(:parent) { parent }
23
28
  end
24
29
  describe "and the parent has a license" do
25
30
  before do
26
- allow(parent).to receive(:license) { url }
31
+ allow(License).to receive(:call).with(parent) { license }
27
32
  end
28
33
  it { is_expected.to eq(license) }
29
34
  end
30
35
  describe "and the parent does not have a license" do
36
+ before do
37
+ allow(License).to receive(:call).with(parent) { nil }
38
+ end
31
39
  it { is_expected.to be_nil }
32
40
  end
33
41
  end
34
42
  describe "and the object does not have a parent" do
35
43
  describe "and the object has an admin policy" do
36
- let(:admin_policy) { double(pid: "test:3", id: "test:3", license: nil) }
37
44
  before { allow(obj).to receive(:admin_policy) { admin_policy } }
38
45
  describe "and the admin policy has a different id from the object" do
39
46
  before do
@@ -41,11 +48,14 @@ module Ddr::Models
41
48
  end
42
49
  describe "and the admin policy has a license" do
43
50
  before do
44
- allow(admin_policy).to receive(:license) { url }
51
+ allow(License).to receive(:call).with(admin_policy) { license }
45
52
  end
46
53
  it { is_expected.to eq(license) }
47
54
  end
48
55
  describe "and the admin policy does not have a license" do
56
+ before do
57
+ allow(License).to receive(:call).with(admin_policy) { nil }
58
+ end
49
59
  it { is_expected.to be_nil }
50
60
  end
51
61
  end
@@ -0,0 +1,39 @@
1
+ module Ddr::Models
2
+ RSpec.describe FileCharacterization do
3
+
4
+ subject { described_class.new(obj) }
5
+
6
+ before {
7
+ obj.content.checksumType = "SHA-1"
8
+ obj.save!
9
+ }
10
+
11
+ let(:obj) { FactoryGirl.create(:component) }
12
+ let(:fits_output) { "<fits/>" }
13
+
14
+ describe "when there is an error running FITS" do
15
+ before {
16
+ allow(subject).to receive(:run_fits).and_raise(FileCharacterization::FITSError)
17
+ }
18
+ specify {
19
+ begin
20
+ subject.call
21
+ rescue FileCharacterization::FITSError
22
+ ensure
23
+ expect(subject.fits).not_to have_content
24
+ end
25
+ }
26
+ end
27
+
28
+ describe "when FITS runs successfully" do
29
+ before {
30
+ allow(subject).to receive(:run_fits) { fits_output }
31
+ }
32
+ specify {
33
+ subject.call
34
+ expect(subject.fits.content).to eq(fits_output)
35
+ }
36
+ end
37
+
38
+ end
39
+ end
@@ -178,14 +178,17 @@ module Ddr::Models
178
178
 
179
179
  describe "contacts" do
180
180
  before do
181
- allow(YAML).to receive(:load_file) { { 'a' => { 'name' => 'Contact A', 'short_name' => 'A' },
182
- 'b' => { 'name' => 'Contact B', 'short_name' => 'B' } } }
183
- Ddr::Contacts.load_contacts
181
+ allow(Ddr::Models::Contact).to receive(:get).with(:find, slug: 'xa') do
182
+ Ddr::Models::Contact.new('id'=>1, 'slug'=>'xa', 'name'=>'Contact A', 'short_name'=>'A')
183
+ end
184
+ allow(Ddr::Models::Contact).to receive(:get).with(:find, slug: 'yb') do
185
+ Ddr::Models::Contact.new('id'=>1, 'slug'=>'yb', 'name'=>'Contact B', 'short_name'=>'B')
186
+ end
184
187
  end
185
188
  describe "#research_help" do
186
- before { subject.research_help_contact = 'b' }
189
+ before { subject.research_help_contact = 'yb' }
187
190
  it "should return the appropriate contact" do
188
- expect(subject.research_help.slug).to eq('b')
191
+ expect(subject.research_help.slug).to eq('yb')
189
192
  end
190
193
  end
191
194
  end
@@ -21,6 +21,7 @@ module Ddr::Models
21
21
  obj.permanent_url = "http://id.library.duke.edu/ark:/99999/fk4zzz"
22
22
  obj.display_format = "Image"
23
23
  obj.roles.grant role1, role2, role3, role4
24
+ obj.aspace_id = "aspace_dccea43034e1b8261e14cf999e86449d"
24
25
  end
25
26
 
26
27
  its([Indexing::LICENSE]) { is_expected.to eq("cc-by-nc-nd-40") }
@@ -35,6 +36,7 @@ module Ddr::Models
35
36
  its([Indexing::ACCESS_ROLE]) { is_expected.to eq(obj.roles.to_json) }
36
37
  its([Indexing::POLICY_ROLE]) { is_expected.to contain_exactly(role2.agent.first, role3.agent.first, role4.agent.first) }
37
38
  its([Indexing::RESOURCE_ROLE]) { is_expected.to contain_exactly(role1.agent.first) }
39
+ its([Indexing::ASPACE_ID]) { is_expected.to eq("aspace_dccea43034e1b8261e14cf999e86449d") }
38
40
 
39
41
  end
40
42
  end
@@ -8,7 +8,9 @@ module Ddr::Models
8
8
  let(:url) { "http://example.com" }
9
9
  let(:obj) { double(pid: "test:1", license: url) }
10
10
  before do
11
- allow(described_class).to receive(:find).with(url: url) { described_class.new(url: url, title: "A License") }
11
+ allow(described_class).to receive(:get).with(:find, url: url) do
12
+ described_class.new(url: url, title: "A License")
13
+ end
12
14
  end
13
15
  its(:pid) { is_expected.to eq("test:1") }
14
16
  its(:to_s) { is_expected.to eq("A License") }
@@ -128,9 +128,12 @@ RSpec.describe SolrDocument, type: :model, contacts: true do
128
128
 
129
129
  describe "contacts" do
130
130
  before do
131
- allow(YAML).to receive(:load_file) { { 'xa' => { 'name' => 'Contact A', 'short_name' => 'A' },
132
- 'yb' => { 'name' => 'Contact B', 'short_name' => 'B' } } }
133
- Ddr::Contacts.load_contacts
131
+ allow(Ddr::Models::Contact).to receive(:get).with(:find, slug: 'xa') do
132
+ Ddr::Models::Contact.new('id'=>1, 'slug'=>'xa', 'name'=>'Contact A', 'short_name'=>'A')
133
+ end
134
+ allow(Ddr::Models::Contact).to receive(:get).with(:find, slug: 'yb') do
135
+ Ddr::Models::Contact.new('id'=>1, 'slug'=>'yb', 'name'=>'Contact B', 'short_name'=>'B')
136
+ end
134
137
  end
135
138
  describe "#research_help" do
136
139
  context "object has research help contact" do
@@ -0,0 +1,37 @@
1
+ module Ddr::Models
2
+ RSpec.describe WithContentFile do
3
+
4
+ let(:obj) { FactoryGirl.create(:component) }
5
+
6
+ before {
7
+ obj.content.checksumType = "SHA-1"
8
+ obj.save!
9
+ }
10
+
11
+ it "yields a temp file path to the block and deletes the temp file afterwards" do
12
+ WithContentFile.new(obj) do |path|
13
+ @path = path
14
+ expect(File.exist?(path)).to be true
15
+ end
16
+ expect(File.exist?(@path)).to be false
17
+ end
18
+
19
+ it "deletes the temp file even when an exception is raised in the block" do
20
+ begin
21
+ WithContentFile.new(obj) do |path|
22
+ @path = path
23
+ expect(File.exist?(path)).to be true
24
+ raise Error, "error"
25
+ end
26
+ rescue Error
27
+ expect(File.exist?(@path)).to be false
28
+ end
29
+ end
30
+
31
+ it "raises an exception when the checksum verification fails" do
32
+ allow(obj.content).to receive(:checksum) { "foo" }
33
+ expect { WithContentFile.new(obj) { |p| nil } }.to raise_error(ChecksumInvalid)
34
+ end
35
+
36
+ end
37
+ end
@@ -1,5 +1,7 @@
1
1
  ENV['RAILS_ENV'] ||= "test"
2
2
 
3
+ ENV['DDR_AUX_API_URL'] ||= "http://localhost:3000/api"
4
+
3
5
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
6
 
5
7
  require "ddr-models"
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.3.2
4
+ version: 2.4.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: 2015-12-01 00:00:00.000000000 Z
12
+ date: 2015-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: 4.1.6
28
+ - !ruby/object:Gem::Dependency
29
+ name: activeresource
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: active-fedora
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -185,26 +199,6 @@ dependencies:
185
199
  - - "~>"
186
200
  - !ruby/object:Gem::Version
187
201
  version: '1.12'
188
- - !ruby/object:Gem::Dependency
189
- name: ddr-aux-client
190
- requirement: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '1.2'
195
- - - ">="
196
- - !ruby/object:Gem::Version
197
- version: 1.2.2
198
- type: :runtime
199
- prerelease: false
200
- version_requirements: !ruby/object:Gem::Requirement
201
- requirements:
202
- - - "~>"
203
- - !ruby/object:Gem::Version
204
- version: '1.2'
205
- - - ">="
206
- - !ruby/object:Gem::Version
207
- version: 1.2.2
208
202
  - !ruby/object:Gem::Dependency
209
203
  name: ddr-antivirus
210
204
  requirement: !ruby/object:Gem::Requirement
@@ -428,7 +422,6 @@ files:
428
422
  - lib/ddr/auth/test_helpers.rb
429
423
  - lib/ddr/auth/user.rb
430
424
  - lib/ddr/auth/web_auth_context.rb
431
- - lib/ddr/contacts.rb
432
425
  - lib/ddr/datastreams.rb
433
426
  - lib/ddr/datastreams/administrative_metadata_datastream.rb
434
427
  - lib/ddr/datastreams/datastream_behavior.rb
@@ -469,10 +462,13 @@ files:
469
462
  - lib/ddr/index/query_value.rb
470
463
  - lib/ddr/index/response.rb
471
464
  - lib/ddr/index/unique_key_field.rb
472
- - lib/ddr/index_fields.rb
473
465
  - lib/ddr/jobs.rb
474
466
  - lib/ddr/jobs/fits_file_characterization.rb
467
+ - lib/ddr/jobs/fixity_check.rb
468
+ - lib/ddr/jobs/job.rb
475
469
  - lib/ddr/jobs/permanent_id.rb
470
+ - lib/ddr/jobs/queue.rb
471
+ - lib/ddr/jobs/update_index.rb
476
472
  - lib/ddr/managers.rb
477
473
  - lib/ddr/managers/derivatives_manager.rb
478
474
  - lib/ddr/managers/manager.rb
@@ -485,10 +481,12 @@ files:
485
481
  - lib/ddr/models/access_controllable.rb
486
482
  - lib/ddr/models/admin_set.rb
487
483
  - lib/ddr/models/base.rb
484
+ - lib/ddr/models/contact.rb
488
485
  - lib/ddr/models/describable.rb
489
486
  - lib/ddr/models/engine.rb
490
487
  - lib/ddr/models/error.rb
491
488
  - lib/ddr/models/event_loggable.rb
489
+ - lib/ddr/models/file_characterization.rb
492
490
  - lib/ddr/models/file_management.rb
493
491
  - lib/ddr/models/finding_aid.rb
494
492
  - lib/ddr/models/fixity_checkable.rb
@@ -510,6 +508,7 @@ files:
510
508
  - lib/ddr/models/struct_div.rb
511
509
  - lib/ddr/models/structure.rb
512
510
  - lib/ddr/models/version.rb
511
+ - lib/ddr/models/with_content_file.rb
513
512
  - lib/ddr/models/year_facet.rb
514
513
  - lib/ddr/notifications.rb
515
514
  - lib/ddr/utils.rb
@@ -531,7 +530,6 @@ files:
531
530
  - spec/auth/effective_roles_spec.rb
532
531
  - spec/auth/group_spec.rb
533
532
  - spec/auth/groups_spec.rb
534
- - spec/auth/ldap_gateway_spec.rb
535
533
  - spec/auth/legacy_default_permissions_spec.rb
536
534
  - spec/auth/legacy_permissions_spec.rb
537
535
  - spec/auth/roles/detached_role_set_spec.rb
@@ -542,7 +540,6 @@ files:
542
540
  - spec/auth/superuser_ability_spec.rb
543
541
  - spec/auth/user_spec.rb
544
542
  - spec/auth/web_auth_context_spec.rb
545
- - spec/contacts/contacts_spec.rb
546
543
  - spec/controllers/application_controller_spec.rb
547
544
  - spec/controllers/including_role_based_access_controls_enforcement_spec.rb
548
545
  - spec/controllers/users/sessions_controller_spec.rb
@@ -607,6 +604,8 @@ files:
607
604
  - spec/factories/user_factories.rb
608
605
  - spec/fixtures/16bit.tif
609
606
  - spec/fixtures/8bit.tif
607
+ - spec/fixtures/arrow1rightred_e0.gif
608
+ - spec/fixtures/bird.jpg
610
609
  - spec/fixtures/fits/document.xml
611
610
  - spec/fixtures/fits/image.xml
612
611
  - spec/fixtures/imageA.tif
@@ -619,7 +618,11 @@ files:
619
618
  - spec/index/filter_spec.rb
620
619
  - spec/index/filters_spec.rb
621
620
  - spec/index/query_spec.rb
621
+ - spec/index/query_value_spec.rb
622
622
  - spec/jobs/fits_file_characterization_spec.rb
623
+ - spec/jobs/fixity_check_spec.rb
624
+ - spec/jobs/job_spec.rb
625
+ - spec/jobs/update_index_spec.rb
623
626
  - spec/managers/derivatives_manager_spec.rb
624
627
  - spec/managers/technical_metadata_manager_spec.rb
625
628
  - spec/models/active_fedora_base_spec.rb
@@ -628,9 +631,11 @@ files:
628
631
  - spec/models/attachment_spec.rb
629
632
  - spec/models/collection_spec.rb
630
633
  - spec/models/component_spec.rb
634
+ - spec/models/contact_spec.rb
631
635
  - spec/models/descriptive_metadata_datastream_spec.rb
632
636
  - spec/models/effective_license_spec.rb
633
637
  - spec/models/events_spec.rb
638
+ - spec/models/file_characterization_spec.rb
634
639
  - spec/models/file_management_spec.rb
635
640
  - spec/models/finding_aid_spec.rb
636
641
  - spec/models/has_admin_metadata_spec.rb
@@ -643,6 +648,7 @@ files:
643
648
  - spec/models/struct_div_spec.rb
644
649
  - spec/models/structure_spec.rb
645
650
  - spec/models/target_spec.rb
651
+ - spec/models/with_content_file_spec.rb
646
652
  - spec/models/year_facet_spec.rb
647
653
  - spec/routing/user_routing_spec.rb
648
654
  - spec/spec_helper.rb
@@ -676,9 +682,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
676
682
  version: '0'
677
683
  required_rubygems_version: !ruby/object:Gem::Requirement
678
684
  requirements:
679
- - - ">="
685
+ - - ">"
680
686
  - !ruby/object:Gem::Version
681
- version: '0'
687
+ version: 1.3.1
682
688
  requirements: []
683
689
  rubyforge_project:
684
690
  rubygems_version: 2.2.2
@@ -695,7 +701,6 @@ test_files:
695
701
  - spec/auth/effective_roles_spec.rb
696
702
  - spec/auth/group_spec.rb
697
703
  - spec/auth/groups_spec.rb
698
- - spec/auth/ldap_gateway_spec.rb
699
704
  - spec/auth/legacy_default_permissions_spec.rb
700
705
  - spec/auth/legacy_permissions_spec.rb
701
706
  - spec/auth/roles/detached_role_set_spec.rb
@@ -706,7 +711,6 @@ test_files:
706
711
  - spec/auth/superuser_ability_spec.rb
707
712
  - spec/auth/user_spec.rb
708
713
  - spec/auth/web_auth_context_spec.rb
709
- - spec/contacts/contacts_spec.rb
710
714
  - spec/controllers/application_controller_spec.rb
711
715
  - spec/controllers/including_role_based_access_controls_enforcement_spec.rb
712
716
  - spec/controllers/users/sessions_controller_spec.rb
@@ -771,6 +775,8 @@ test_files:
771
775
  - spec/factories/user_factories.rb
772
776
  - spec/fixtures/16bit.tif
773
777
  - spec/fixtures/8bit.tif
778
+ - spec/fixtures/arrow1rightred_e0.gif
779
+ - spec/fixtures/bird.jpg
774
780
  - spec/fixtures/fits/document.xml
775
781
  - spec/fixtures/fits/image.xml
776
782
  - spec/fixtures/imageA.tif
@@ -783,7 +789,11 @@ test_files:
783
789
  - spec/index/filter_spec.rb
784
790
  - spec/index/filters_spec.rb
785
791
  - spec/index/query_spec.rb
792
+ - spec/index/query_value_spec.rb
786
793
  - spec/jobs/fits_file_characterization_spec.rb
794
+ - spec/jobs/fixity_check_spec.rb
795
+ - spec/jobs/job_spec.rb
796
+ - spec/jobs/update_index_spec.rb
787
797
  - spec/managers/derivatives_manager_spec.rb
788
798
  - spec/managers/technical_metadata_manager_spec.rb
789
799
  - spec/models/active_fedora_base_spec.rb
@@ -792,9 +802,11 @@ test_files:
792
802
  - spec/models/attachment_spec.rb
793
803
  - spec/models/collection_spec.rb
794
804
  - spec/models/component_spec.rb
805
+ - spec/models/contact_spec.rb
795
806
  - spec/models/descriptive_metadata_datastream_spec.rb
796
807
  - spec/models/effective_license_spec.rb
797
808
  - spec/models/events_spec.rb
809
+ - spec/models/file_characterization_spec.rb
798
810
  - spec/models/file_management_spec.rb
799
811
  - spec/models/finding_aid_spec.rb
800
812
  - spec/models/has_admin_metadata_spec.rb
@@ -807,6 +819,7 @@ test_files:
807
819
  - spec/models/struct_div_spec.rb
808
820
  - spec/models/structure_spec.rb
809
821
  - spec/models/target_spec.rb
822
+ - spec/models/with_content_file_spec.rb
810
823
  - spec/models/year_facet_spec.rb
811
824
  - spec/routing/user_routing_spec.rb
812
825
  - spec/spec_helper.rb