hydra-works 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.travis.yml +2 -5
  4. data/Gemfile +1 -3
  5. data/README.md +28 -13
  6. data/hydra-works.gemspec +4 -3
  7. data/lib/hydra/works.rb +7 -57
  8. data/lib/hydra/works/models/concerns/block_child_objects.rb +16 -0
  9. data/lib/hydra/works/models/concerns/collection_behavior.rb +27 -2
  10. data/lib/hydra/works/models/concerns/generic_file/contained_files.rb +5 -13
  11. data/lib/hydra/works/models/concerns/generic_file/derivatives.rb +9 -13
  12. data/lib/hydra/works/models/concerns/generic_file/mime_types.rb +14 -9
  13. data/lib/hydra/works/models/concerns/generic_file/versioned_content.rb +18 -0
  14. data/lib/hydra/works/models/concerns/generic_file/virus_check.rb +48 -0
  15. data/lib/hydra/works/models/concerns/generic_file_behavior.rb +24 -1
  16. data/lib/hydra/works/models/concerns/generic_work_behavior.rb +32 -3
  17. data/lib/hydra/works/models/generic_file.rb +3 -0
  18. data/lib/hydra/works/services/generic_file/add_file_to_generic_file.rb +127 -0
  19. data/lib/hydra/works/services/generic_file/generate/thumbnail.rb +1 -2
  20. data/lib/hydra/works/services/generic_file/persist_derivative.rb +22 -0
  21. data/lib/hydra/works/services/generic_file/upload_file.rb +11 -19
  22. data/lib/hydra/works/version.rb +1 -1
  23. data/lib/hydra/works/vocab/works_terms.rb +1 -1
  24. data/spec/fixtures/Example.ogg +0 -0
  25. data/spec/fixtures/charter.docx +0 -0
  26. data/spec/fixtures/countdown.avi +0 -0
  27. data/spec/fixtures/image.jp2 +0 -0
  28. data/spec/fixtures/piano_note.wav +0 -0
  29. data/spec/fixtures/test5.mp3 +0 -0
  30. data/spec/fixtures/world.png +0 -0
  31. data/spec/hydra/works/models/collection_spec.rb +499 -16
  32. data/spec/hydra/works/models/concerns/block_child_objects_spec.rb +19 -0
  33. data/spec/hydra/works/models/concerns/{file → generic_file}/contained_files_spec.rb +20 -17
  34. data/spec/hydra/works/models/concerns/generic_file/mime_types_spec.rb +76 -0
  35. data/spec/hydra/works/models/concerns/generic_file/versioned_content_spec.rb +32 -0
  36. data/spec/hydra/works/models/concerns/generic_file/virus_check_spec.rb +50 -0
  37. data/spec/hydra/works/models/concerns/generic_file_behavior_spec.rb +1 -1
  38. data/spec/hydra/works/models/generic_file_spec.rb +201 -14
  39. data/spec/hydra/works/models/generic_work_spec.rb +530 -14
  40. data/spec/hydra/works/services/generic_file/add_file_to_generic_file_spec.rb +110 -0
  41. data/spec/hydra/works/services/generic_file/upload_file_spec.rb +45 -28
  42. data/spec/hydra/works/services/persist_derivatives_spec.rb +93 -0
  43. data/spec/hydra/works_spec.rb +35 -35
  44. data/spec/spec_helper.rb +6 -0
  45. metadata +56 -95
  46. data/lib/hydra/works/models/concerns/aggregates_collections.rb +0 -16
  47. data/lib/hydra/works/models/concerns/aggregates_generic_files.rb +0 -20
  48. data/lib/hydra/works/models/concerns/aggregates_generic_works.rb +0 -20
  49. data/lib/hydra/works/processor.rb +0 -9
  50. data/lib/hydra/works/services/collection/add_collection.rb +0 -19
  51. data/lib/hydra/works/services/collection/add_generic_work.rb +0 -19
  52. data/lib/hydra/works/services/collection/add_related_object.rb +0 -19
  53. data/lib/hydra/works/services/collection/get_collections.rb +0 -17
  54. data/lib/hydra/works/services/collection/get_generic_works.rb +0 -17
  55. data/lib/hydra/works/services/collection/get_related_objects.rb +0 -17
  56. data/lib/hydra/works/services/collection/remove_collection.rb +0 -19
  57. data/lib/hydra/works/services/collection/remove_generic_work.rb +0 -20
  58. data/lib/hydra/works/services/collection/remove_related_object.rb +0 -19
  59. data/lib/hydra/works/services/generic_file/add_file.rb +0 -55
  60. data/lib/hydra/works/services/generic_file/add_generic_file.rb +0 -19
  61. data/lib/hydra/works/services/generic_file/add_original_file.rb +0 -11
  62. data/lib/hydra/works/services/generic_file/add_related_object.rb +0 -19
  63. data/lib/hydra/works/services/generic_file/add_versioned_original_file.rb +0 -10
  64. data/lib/hydra/works/services/generic_file/get_generic_files.rb +0 -17
  65. data/lib/hydra/works/services/generic_file/get_related_objects.rb +0 -17
  66. data/lib/hydra/works/services/generic_file/remove_generic_file.rb +0 -20
  67. data/lib/hydra/works/services/generic_file/remove_related_object.rb +0 -19
  68. data/lib/hydra/works/services/generic_work/add_generic_file.rb +0 -19
  69. data/lib/hydra/works/services/generic_work/add_generic_work.rb +0 -19
  70. data/lib/hydra/works/services/generic_work/add_related_object.rb +0 -19
  71. data/lib/hydra/works/services/generic_work/get_generic_files.rb +0 -17
  72. data/lib/hydra/works/services/generic_work/get_generic_works.rb +0 -17
  73. data/lib/hydra/works/services/generic_work/get_related_objects.rb +0 -17
  74. data/lib/hydra/works/services/generic_work/move_generic_file.rb +0 -19
  75. data/lib/hydra/works/services/generic_work/remove_generic_file.rb +0 -20
  76. data/lib/hydra/works/services/generic_work/remove_generic_work.rb +0 -20
  77. data/lib/hydra/works/services/generic_work/remove_related_object.rb +0 -19
  78. data/spec/hydra/works/services/collection/add_collection_spec.rb +0 -166
  79. data/spec/hydra/works/services/collection/add_generic_work_spec.rb +0 -155
  80. data/spec/hydra/works/services/collection/add_related_object_spec.rb +0 -149
  81. data/spec/hydra/works/services/collection/get_collections_spec.rb +0 -35
  82. data/spec/hydra/works/services/collection/get_generic_works_spec.rb +0 -35
  83. data/spec/hydra/works/services/collection/get_related_objects_spec.rb +0 -49
  84. data/spec/hydra/works/services/collection/remove_collection_spec.rb +0 -133
  85. data/spec/hydra/works/services/collection/remove_generic_work_spec.rb +0 -133
  86. data/spec/hydra/works/services/collection/remove_related_object_spec.rb +0 -128
  87. data/spec/hydra/works/services/generic_file/add_file_spec.rb +0 -28
  88. data/spec/hydra/works/services/generic_file/add_generic_file_spec.rb +0 -174
  89. data/spec/hydra/works/services/generic_file/add_related_object_spec.rb +0 -150
  90. data/spec/hydra/works/services/generic_file/get_generic_files_spec.rb +0 -19
  91. data/spec/hydra/works/services/generic_file/get_related_objects_spec.rb +0 -45
  92. data/spec/hydra/works/services/generic_file/remove_generic_file_spec.rb +0 -124
  93. data/spec/hydra/works/services/generic_file/remove_related_object_spec.rb +0 -123
  94. data/spec/hydra/works/services/generic_work/add_generic_file_spec.rb +0 -156
  95. data/spec/hydra/works/services/generic_work/add_generic_work_spec.rb +0 -157
  96. data/spec/hydra/works/services/generic_work/add_related_object_spec.rb +0 -148
  97. data/spec/hydra/works/services/generic_work/get_generic_files_spec.rb +0 -35
  98. data/spec/hydra/works/services/generic_work/get_generic_works_spec.rb +0 -35
  99. data/spec/hydra/works/services/generic_work/get_related_objects_spec.rb +0 -46
  100. data/spec/hydra/works/services/generic_work/move_generic_file_spec.rb +0 -21
  101. data/spec/hydra/works/services/generic_work/remove_generic_file_spec.rb +0 -132
  102. data/spec/hydra/works/services/generic_work/remove_generic_work_spec.rb +0 -133
  103. data/spec/hydra/works/services/generic_work/remove_related_object_spec.rb +0 -128
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::GetGenericFilesFromGenericWork do
4
-
5
- subject { Hydra::Works::GenericWork::Base.create }
6
-
7
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
8
- let(:generic_file2) { Hydra::Works::GenericFile::Base.create }
9
-
10
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
11
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
12
-
13
- describe '#call' do
14
- it 'should return empty array when only generic_works are aggregated' do
15
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
16
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work2 )
17
- subject.save
18
- expect(Hydra::Works::GetGenericFilesFromGenericWork.call( subject )).to eq []
19
- end
20
-
21
- context 'with generic_files and generic_works' do
22
- before do
23
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
24
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file2 )
25
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
26
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work2 )
27
- subject.save
28
- end
29
-
30
- it 'should only return generic_files' do
31
- expect(Hydra::Works::GetGenericFilesFromGenericWork.call( subject )).to eq [generic_file1,generic_file2]
32
- end
33
- end
34
- end
35
- end
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::GetGenericWorksFromGenericWork do
4
-
5
- subject { Hydra::Works::GenericWork::Base.create }
6
-
7
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
8
- let(:generic_file2) { Hydra::Works::GenericFile::Base.create }
9
-
10
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
11
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
12
-
13
- describe '#call' do
14
- it 'should return empty array when only generic_files are aggregated' do
15
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
16
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file2 )
17
- subject.save
18
- expect(Hydra::Works::GetGenericWorksFromGenericWork.call( subject )).to eq []
19
- end
20
-
21
- context 'with generic_files and generic_works' do
22
- before do
23
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
24
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file2 )
25
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
26
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work2 )
27
- subject.save
28
- end
29
-
30
- it 'should only return generic_works' do
31
- expect(Hydra::Works::GetGenericWorksFromGenericWork.call( subject )).to eq [generic_work1,generic_work2]
32
- end
33
- end
34
- end
35
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::GetRelatedObjectsFromGenericWork do
4
-
5
- subject { Hydra::Works::GenericWork::Base.create }
6
-
7
- let(:object1) { Hydra::PCDM::Object.create }
8
- let(:object2) { Hydra::PCDM::Object.create }
9
-
10
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
11
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
12
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
13
-
14
- describe '#call' do
15
- context 'with generic files and works' do
16
- before do
17
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
18
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
19
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
20
- subject.save
21
- end
22
-
23
- it 'should return empty array when only generic files and generic works are aggregated' do
24
- expect(Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject )).to eq []
25
- end
26
-
27
- it 'should only return related objects' do
28
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, object2 )
29
- expect(Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject )).to eq [object2]
30
- end
31
-
32
- it 'should return related objects of various types' do
33
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, generic_work2 )
34
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, generic_file1 )
35
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, object1 )
36
- related_objects = Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject )
37
- expect( related_objects.include? object1 ).to be true
38
- expect( related_objects.include? generic_work2 ).to be true
39
- expect( related_objects.include? generic_file1 ).to be true
40
- expect( related_objects.size ).to eq 3
41
- end
42
- end
43
- end
44
- end
45
-
46
-
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::MoveGenericFileToGenericWork do
4
- let(:source_work) { Hydra::Works::GenericWork::Base.create }
5
- let(:target_work) { Hydra::Works::GenericWork::Base.create }
6
- let(:file1) { Hydra::Works::GenericFile::Base.create }
7
- let(:file2) { Hydra::Works::GenericFile::Base.create }
8
- context "move generic file" do
9
- before do
10
- Hydra::Works::AddGenericFileToGenericWork.call(source_work, file1)
11
- Hydra::Works::AddGenericFileToGenericWork.call(source_work, file2)
12
- end
13
- it "moves file from one work to another" do
14
- expect(source_work.generic_files).to eq([file1, file2])
15
- expect(target_work.generic_files).to eq([])
16
- Hydra::Works::MoveGenericFileToGenericWork.call(source_work, target_work, file1)
17
- expect(source_work.generic_files).to eq([file2])
18
- expect(target_work.generic_files).to eq([file1])
19
- end
20
- end
21
- end
@@ -1,132 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::RemoveGenericFileFromGenericWork do
4
-
5
- subject { Hydra::Works::GenericWork::Base.create }
6
-
7
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
8
- let(:generic_file2) { Hydra::Works::GenericFile::Base.create }
9
- let(:generic_file3) { Hydra::Works::GenericFile::Base.create }
10
- let(:generic_file4) { Hydra::Works::GenericFile::Base.create }
11
- let(:generic_file5) { Hydra::Works::GenericFile::Base.create }
12
-
13
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
14
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
15
-
16
- describe '#call' do
17
- context 'when multiple collections' do
18
- before do
19
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
20
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file2 )
21
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work2 )
22
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file3 )
23
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file4 )
24
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
25
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file5 )
26
- subject.save
27
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file1,generic_file2,generic_file3,generic_file4,generic_file5]
28
- end
29
-
30
- it 'should remove first collection' do
31
- expect( Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, generic_file1 ) ).to eq generic_file1
32
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file2,generic_file3,generic_file4,generic_file5]
33
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work1]
34
- end
35
-
36
- it 'should remove last collection' do
37
- expect( Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, generic_file5 ) ).to eq generic_file5
38
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file1,generic_file2,generic_file3,generic_file4]
39
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work1]
40
- end
41
-
42
- it 'should remove middle collection' do
43
- expect( Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, generic_file3 ) ).to eq generic_file3
44
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file1,generic_file2,generic_file4,generic_file5]
45
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work1]
46
- end
47
- end
48
- end
49
-
50
- context 'with unacceptable generic files' do
51
- let(:collection1) { Hydra::Works::Collection.create }
52
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
53
- let(:pcdm_collection1) { Hydra::PCDM::Collection.create }
54
- let(:pcdm_object1) { Hydra::PCDM::Object.create }
55
- let(:pcdm_file1) { Hydra::PCDM::File.new }
56
- let(:non_PCDM_object) { "I'm not a PCDM object" }
57
- let(:af_base_object) { ActiveFedora::Base.create }
58
-
59
- let(:error_type) { ArgumentError }
60
- let(:error_message) { 'child_generic_file must be a hydra-works generic file' }
61
-
62
- it 'should NOT remove Hydra::Works::Collection from generic_files aggregation' do
63
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, collection1 ) }.to raise_error(ArgumentError,error_message)
64
- end
65
-
66
- it 'should NOT remove Hydra::Works::GenericWork from generic_files aggregation' do
67
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, generic_work1 ) }.to raise_error(ArgumentError,error_message)
68
- end
69
-
70
- it 'should NOT remove Hydra::PCDM::Collections from generic_files aggregation' do
71
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, pcdm_collection1 ) }.to raise_error(ArgumentError,error_message)
72
- end
73
-
74
- it 'should NOT remove Hydra::PCDM::Objects from generic_files aggregation' do
75
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, pcdm_object1 ) }.to raise_error(error_type,error_message)
76
- end
77
-
78
- it 'should NOT remove Hydra::PCDM::Files from generic_files aggregation' do
79
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, pcdm_file1 ) }.to raise_error(error_type,error_message)
80
- end
81
-
82
- it 'should NOT remove non-PCDM objects from generic_files aggregation' do
83
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, non_PCDM_object ) }.to raise_error(error_type,error_message)
84
- end
85
-
86
- it 'should NOT remove AF::Base objects from generic_works aggregation' do
87
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
88
- end
89
- end
90
-
91
- context 'with unacceptable parent generic work' do
92
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
93
- let(:collection1) { Hydra::Works::Collection.create }
94
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
95
- let(:pcdm_collection1) { Hydra::PCDM::Collection.create }
96
- let(:pcdm_object1) { Hydra::PCDM::Object.create }
97
- let(:pcdm_file1) { Hydra::PCDM::File.new }
98
- let(:non_PCDM_object) { "I'm not a PCDM object" }
99
- let(:af_base_object) { ActiveFedora::Base.create }
100
-
101
- let(:error_type) { ArgumentError }
102
- let(:error_message) { 'parent_generic_work must be a hydra-works generic work' }
103
-
104
- it 'should NOT accept Hydra::Works::Collection as parent generic work' do
105
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( collection1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
106
- end
107
-
108
- it 'should NOT accept Hydra::Works::GenericFile as parent generic work' do
109
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( generic_file1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
110
- end
111
-
112
- it 'should NOT accept Hydra::PCDM::Collections as parent generic work' do
113
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( pcdm_collection1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
114
- end
115
-
116
- it 'should NOT accept Hydra::PCDM::Objects as parent generic work' do
117
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( pcdm_object1, generic_work2 ) }.to raise_error(error_type,error_message)
118
- end
119
-
120
- it 'should NOT accept Hydra::PCDM::Files as parent generic work' do
121
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( pcdm_file1, generic_work2 ) }.to raise_error(error_type,error_message)
122
- end
123
-
124
- it 'should NOT accept non-PCDM objects as parent generic work' do
125
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( non_PCDM_object, generic_work2 ) }.to raise_error(error_type,error_message)
126
- end
127
-
128
- it 'should NOT accept AF::Base objects as parent generic work' do
129
- expect{ Hydra::Works::RemoveGenericFileFromGenericWork.call( af_base_object, generic_work2 ) }.to raise_error(error_type,error_message)
130
- end
131
- end
132
- end
@@ -1,133 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::RemoveGenericWorkFromGenericWork do
4
-
5
- subject { Hydra::Works::GenericWork::Base.create }
6
-
7
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
8
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
9
- let(:generic_work3) { Hydra::Works::GenericWork::Base.create }
10
- let(:generic_work4) { Hydra::Works::GenericWork::Base.create }
11
- let(:generic_work5) { Hydra::Works::GenericWork::Base.create }
12
-
13
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
14
- let(:generic_file2) { Hydra::Works::GenericFile::Base.create }
15
-
16
-
17
- describe '#call' do
18
- context 'when multiple collections' do
19
- before do
20
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
21
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work2 )
22
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file2 )
23
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work3 )
24
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work4 )
25
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
26
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work5 )
27
- subject.save
28
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work1,generic_work2,generic_work3,generic_work4,generic_work5]
29
- end
30
-
31
- it 'should remove first collection' do
32
- expect( Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, generic_work1 ) ).to eq generic_work1
33
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work3,generic_work4,generic_work5]
34
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file2,generic_file1]
35
- end
36
-
37
- it 'should remove last collection' do
38
- expect( Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, generic_work5 ) ).to eq generic_work5
39
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work1,generic_work2,generic_work3,generic_work4]
40
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file2,generic_file1]
41
- end
42
-
43
- it 'should remove middle collection' do
44
- expect( Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, generic_work3 ) ).to eq generic_work3
45
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work1,generic_work2,generic_work4,generic_work5]
46
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file2,generic_file1]
47
- end
48
- end
49
- end
50
-
51
- context 'with unacceptable generic works' do
52
- let(:collection1) { Hydra::Works::Collection.create }
53
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
54
- let(:pcdm_collection1) { Hydra::PCDM::Collection.create }
55
- let(:pcdm_object1) { Hydra::PCDM::Object.create }
56
- let(:pcdm_file1) { Hydra::PCDM::File.new }
57
- let(:non_PCDM_object) { "I'm not a PCDM object" }
58
- let(:af_base_object) { ActiveFedora::Base.create }
59
-
60
- let(:error_type) { ArgumentError }
61
- let(:error_message) { 'child_generic_work must be a hydra-works generic work' }
62
-
63
- it 'should NOT remove Hydra::Works::Collection from generic_works aggregation' do
64
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, collection1 ) }.to raise_error(ArgumentError,error_message)
65
- end
66
-
67
- it 'should NOT remove Hydra::Works::GenericFile from generic_works aggregation' do
68
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, generic_file1 ) }.to raise_error(ArgumentError,error_message)
69
- end
70
-
71
- it 'should NOT remove Hydra::PCDM::Collections from generic_works aggregation' do
72
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, pcdm_collection1 ) }.to raise_error(ArgumentError,error_message)
73
- end
74
-
75
- it 'should NOT remove Hydra::PCDM::Objects from generic_works aggregation' do
76
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, pcdm_object1 ) }.to raise_error(error_type,error_message)
77
- end
78
-
79
- it 'should NOT remove Hydra::PCDM::Files from generic_works aggregation' do
80
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, pcdm_file1 ) }.to raise_error(error_type,error_message)
81
- end
82
-
83
- it 'should NOT remove non-PCDM objects from generic_works aggregation' do
84
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, non_PCDM_object ) }.to raise_error(error_type,error_message)
85
- end
86
-
87
- it 'should NOT remove AF::Base objects from generic_works aggregation' do
88
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
89
- end
90
- end
91
-
92
- context 'with unacceptable parent generic work' do
93
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
94
- let(:collection1) { Hydra::Works::Collection.create }
95
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
96
- let(:pcdm_collection1) { Hydra::PCDM::Collection.create }
97
- let(:pcdm_object1) { Hydra::PCDM::Object.create }
98
- let(:pcdm_file1) { Hydra::PCDM::File.new }
99
- let(:non_PCDM_object) { "I'm not a PCDM object" }
100
- let(:af_base_object) { ActiveFedora::Base.create }
101
-
102
- let(:error_type) { ArgumentError }
103
- let(:error_message) { 'parent_generic_work must be a hydra-works generic work' }
104
-
105
- it 'should NOT accept Hydra::Works::Collection as parent generic work' do
106
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( collection1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
107
- end
108
-
109
- it 'should NOT accept Hydra::Works::GenericFile as parent generic work' do
110
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( generic_file1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
111
- end
112
-
113
- it 'should NOT accept Hydra::PCDM::Collections as parent generic work' do
114
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( pcdm_collection1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
115
- end
116
-
117
- it 'should NOT accept Hydra::PCDM::Objects as parent generic work' do
118
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( pcdm_object1, generic_work2 ) }.to raise_error(error_type,error_message)
119
- end
120
-
121
- it 'should NOT accept Hydra::PCDM::Files as parent generic work' do
122
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( pcdm_file1, generic_work2 ) }.to raise_error(error_type,error_message)
123
- end
124
-
125
- it 'should NOT accept non-PCDM objects as parent generic work' do
126
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( non_PCDM_object, generic_work2 ) }.to raise_error(error_type,error_message)
127
- end
128
-
129
- it 'should NOT accept AF::Base objects as parent generic work' do
130
- expect{ Hydra::Works::RemoveGenericWorkFromGenericWork.call( af_base_object, generic_work2 ) }.to raise_error(error_type,error_message)
131
- end
132
- end
133
- end
@@ -1,128 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::RemoveRelatedObjectFromGenericWork do
4
-
5
- subject { Hydra::Works::GenericWork::Base.create }
6
-
7
- let(:related_object1) { Hydra::PCDM::Object.create }
8
- let(:related_work2) { Hydra::Works::GenericWork::Base.create }
9
- let(:related_file3) { Hydra::Works::GenericFile::Base.create }
10
- let(:related_object4) { Hydra::PCDM::Object.create }
11
- let(:related_work5) { Hydra::Works::GenericWork::Base.create }
12
-
13
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
14
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
15
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
16
-
17
-
18
- describe '#call' do
19
- context 'when multiple related objects' do
20
- before do
21
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, related_object1 )
22
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, related_work2 )
23
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work2 )
24
- Hydra::Works::AddGenericFileToGenericWork.call( subject, generic_file1 )
25
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, related_file3 )
26
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, related_object4 )
27
- Hydra::Works::AddGenericWorkToGenericWork.call( subject, generic_work1 )
28
- Hydra::Works::AddRelatedObjectToGenericWork.call( subject, related_work5 )
29
- subject.save
30
- expect( Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject.reload )).to eq [related_object1,related_work2,related_file3,related_object4,related_work5]
31
- end
32
-
33
- it 'should remove first related object' do
34
- expect( Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, related_object1 ) ).to eq related_object1
35
- expect( Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject.reload )).to eq [related_work2,related_file3,related_object4,related_work5]
36
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work1]
37
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file1]
38
- end
39
-
40
- it 'should remove last related object' do
41
- expect( Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, related_work5 ) ).to eq related_work5
42
- expect( Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject.reload )).to eq [related_object1,related_work2,related_file3,related_object4]
43
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work1]
44
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file1]
45
- end
46
-
47
- it 'should remove middle related object' do
48
- expect( Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, related_file3 ) ).to eq related_file3
49
- expect( Hydra::Works::GetRelatedObjectsFromGenericWork.call( subject.reload )).to eq [related_object1,related_work2,related_object4,related_work5]
50
- expect( Hydra::Works::GetGenericWorksFromGenericWork.call( subject.reload )).to eq [generic_work2,generic_work1]
51
- expect( Hydra::Works::GetGenericFilesFromGenericWork.call( subject.reload )).to eq [generic_file1]
52
- end
53
- end
54
- end
55
-
56
- context 'with unacceptable related object' do
57
- let(:collection1) { Hydra::Works::Collection.create }
58
- let(:pcdm_collection1) { Hydra::PCDM::Collection.create }
59
- let(:pcdm_file1) { Hydra::PCDM::File.new }
60
- let(:non_PCDM_object) { "I'm not a PCDM object" }
61
- let(:af_base_object) { ActiveFedora::Base.create }
62
-
63
- let(:error_type) { ArgumentError }
64
- let(:error_message) { 'child_related_object must be a pcdm object' }
65
-
66
- it 'should NOT remove Hydra::Works::Collection from related_objects aggregation' do
67
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, collection1 ) }.to raise_error(ArgumentError,error_message)
68
- end
69
-
70
- it 'should NOT remove Hydra::PCDM::Collections from related_objects aggregation' do
71
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, pcdm_collection1 ) }.to raise_error(ArgumentError,error_message)
72
- end
73
-
74
- it 'should NOT remove Hydra::PCDM::Files from related_objects aggregation' do
75
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, pcdm_file1 ) }.to raise_error(error_type,error_message)
76
- end
77
-
78
- it 'should NOT remove non-PCDM objects from related_objects aggregation' do
79
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, non_PCDM_object ) }.to raise_error(error_type,error_message)
80
- end
81
-
82
- it 'should NOT remove AF::Base objects from related_objects aggregation' do
83
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
84
- end
85
- end
86
-
87
- context 'with unacceptable parent generic work' do
88
- let(:related_object2) { Hydra::PCDM::Object.create }
89
- let(:collection1) { Hydra::Works::Collection.create }
90
- let(:generic_file1) { Hydra::Works::GenericFile::Base.create }
91
- let(:pcdm_collection1) { Hydra::PCDM::Collection.create }
92
- let(:pcdm_object1) { Hydra::PCDM::Object.create }
93
- let(:pcdm_file1) { Hydra::PCDM::File.new }
94
- let(:non_PCDM_object) { "I'm not a PCDM object" }
95
- let(:af_base_object) { ActiveFedora::Base.create }
96
-
97
- let(:error_type) { ArgumentError }
98
- let(:error_message) { 'parent_generic_work must be a hydra-works generic work' }
99
-
100
- it 'should NOT accept Hydra::Works::Collection as parent generic work' do
101
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( collection1, related_object2 ) }.to raise_error(ArgumentError,error_message)
102
- end
103
-
104
- it 'should NOT accept Hydra::Works::GenericFile as parent generic work' do
105
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( generic_file1, related_object2 ) }.to raise_error(ArgumentError,error_message)
106
- end
107
-
108
- it 'should NOT accept Hydra::PCDM::Collections as parent generic work' do
109
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( pcdm_collection1, related_object2 ) }.to raise_error(ArgumentError,error_message)
110
- end
111
-
112
- it 'should NOT accept Hydra::PCDM::Objects as parent generic work' do
113
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( pcdm_object1, related_object2 ) }.to raise_error(error_type,error_message)
114
- end
115
-
116
- it 'should NOT accept Hydra::PCDM::Files as parent generic work' do
117
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( pcdm_file1, related_object2 ) }.to raise_error(error_type,error_message)
118
- end
119
-
120
- it 'should NOT accept non-PCDM objects as parent generic work' do
121
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( non_PCDM_object, related_object2 ) }.to raise_error(error_type,error_message)
122
- end
123
-
124
- it 'should NOT accept AF::Base objects as parent generic work' do
125
- expect{ Hydra::Works::RemoveRelatedObjectFromGenericWork.call( af_base_object, related_work2 ) }.to raise_error(error_type,error_message)
126
- end
127
- end
128
- end