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::GetCollectionsFromCollection do
4
-
5
- subject { Hydra::Works::Collection.create }
6
-
7
- let(:collection1) { Hydra::Works::Collection.create }
8
- let(:collection2) { Hydra::Works::Collection.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::AddGenericWorkToCollection.call( subject, generic_work1 )
16
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work2 )
17
- subject.save
18
- expect(Hydra::Works::GetCollectionsFromCollection.call( subject )).to eq []
19
- end
20
-
21
- context 'with other collections & generic_works' do
22
- before do
23
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
24
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
25
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work1 )
26
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work2 )
27
- subject.save
28
- end
29
-
30
- it 'should only return collections' do
31
- expect(Hydra::Works::GetCollectionsFromCollection.call( subject )).to eq [collection1,collection2]
32
- end
33
- end
34
- end
35
- end
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::GetGenericWorksFromCollection do
4
-
5
- subject { Hydra::Works::Collection.create }
6
-
7
- let(:collection1) { Hydra::Works::Collection.create }
8
- let(:collection2) { Hydra::Works::Collection.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 collections are aggregated' do
15
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
16
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
17
- subject.save
18
- expect(Hydra::Works::GetGenericWorksFromCollection.call( subject )).to eq []
19
- end
20
-
21
- context 'with collections and generic works' do
22
- before do
23
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
24
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
25
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work1 )
26
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work2 )
27
- subject.save
28
- end
29
-
30
- it 'should only return generic works' do
31
- expect(Hydra::Works::GetGenericWorksFromCollection.call( subject )).to eq [generic_work1,generic_work2]
32
- end
33
- end
34
- end
35
- end
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::GetRelatedObjectsFromCollection do
4
-
5
- subject { Hydra::Works::Collection.create }
6
-
7
- let(:collection1) { Hydra::Works::Collection.create }
8
- let(:collection2) { Hydra::Works::Collection.create }
9
-
10
- let(:object1) { Hydra::PCDM::Object.create }
11
- let(:object2) { Hydra::PCDM::Object.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
- describe '#call' do
18
- context 'with collections and generic works' do
19
- before do
20
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
21
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
22
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work1 )
23
- subject.save
24
- end
25
-
26
- it 'should return empty array when only collections and generic works are aggregated' do
27
- expect(Hydra::Works::GetRelatedObjectsFromCollection.call( subject )).to eq []
28
- end
29
-
30
- it 'should only return related objects' do
31
- Hydra::Works::AddRelatedObjectToCollection.call( subject, object2 )
32
- expect(Hydra::Works::GetRelatedObjectsFromCollection.call( subject )).to eq [object2]
33
- end
34
-
35
- it 'should return related objects of various types' do
36
- Hydra::Works::AddRelatedObjectToCollection.call( subject, generic_work2 )
37
- Hydra::Works::AddRelatedObjectToCollection.call( subject, generic_file1 )
38
- Hydra::Works::AddRelatedObjectToCollection.call( subject, object1 )
39
- related_objects = Hydra::Works::GetRelatedObjectsFromCollection.call( subject )
40
- expect( related_objects.include? object1 ).to be true
41
- expect( related_objects.include? generic_work2 ).to be true
42
- expect( related_objects.include? generic_file1 ).to be true
43
- expect( related_objects.size ).to eq 3
44
- end
45
- end
46
- end
47
- end
48
-
49
-
@@ -1,133 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::RemoveCollectionFromCollection do
4
-
5
- subject { Hydra::Works::Collection.create }
6
-
7
- let(:collection1) { Hydra::Works::Collection.create }
8
- let(:collection2) { Hydra::Works::Collection.create }
9
- let(:collection3) { Hydra::Works::Collection.create }
10
- let(:collection4) { Hydra::Works::Collection.create }
11
- let(:collection5) { Hydra::Works::Collection.create }
12
-
13
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
14
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
15
-
16
-
17
- describe '#call' do
18
- context 'when multiple collections' do
19
- before do
20
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
21
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
22
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work2 )
23
- Hydra::Works::AddCollectionToCollection.call( subject, collection3 )
24
- Hydra::Works::AddCollectionToCollection.call( subject, collection4 )
25
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work1 )
26
- Hydra::Works::AddCollectionToCollection.call( subject, collection5 )
27
- subject.save
28
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection1,collection2,collection3,collection4,collection5]
29
- end
30
-
31
- it 'should remove first collection' do
32
- expect( Hydra::Works::RemoveCollectionFromCollection.call( subject, collection1 ) ).to eq collection1
33
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection3,collection4,collection5]
34
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work2,generic_work1]
35
- end
36
-
37
- it 'should remove last collection' do
38
- expect( Hydra::Works::RemoveCollectionFromCollection.call( subject, collection5 ) ).to eq collection5
39
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection1,collection2,collection3,collection4]
40
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work2,generic_work1]
41
- end
42
-
43
- it 'should remove middle collection' do
44
- expect( Hydra::Works::RemoveCollectionFromCollection.call( subject, collection3 ) ).to eq collection3
45
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection1,collection2,collection4,collection5]
46
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work2,generic_work1]
47
- end
48
- end
49
- end
50
-
51
- context 'with unacceptable collections' do
52
- let(:generic_work1) { Hydra::Works::GenericWork::Base.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_collection must be a hydra-works collection' }
62
-
63
- it 'should NOT remove Hydra::Works::GenericWork from collections aggregation' do
64
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, generic_work1 ) }.to raise_error(ArgumentError,error_message)
65
- end
66
-
67
- it 'should NOT remove Hydra::Works::GenericFile from collections aggregation' do
68
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, generic_file1 ) }.to raise_error(ArgumentError,error_message)
69
- end
70
-
71
- it 'should NOT remove Hydra::PCDM::Collections from collections aggregation' do
72
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, pcdm_collection1 ) }.to raise_error(ArgumentError,error_message)
73
- end
74
-
75
- it 'should NOT remove Hydra::PCDM::Objects from collections aggregation' do
76
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, pcdm_object1 ) }.to raise_error(error_type,error_message)
77
- end
78
-
79
- it 'should NOT remove Hydra::PCDM::Files from collections aggregation' do
80
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, pcdm_file1 ) }.to raise_error(error_type,error_message)
81
- end
82
-
83
- it 'should NOT remove non-PCDM objects from collections aggregation' do
84
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, non_PCDM_object ) }.to raise_error(error_type,error_message)
85
- end
86
-
87
- it 'should NOT remove AF::Base objects from collections aggregation' do
88
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
89
- end
90
- end
91
-
92
- context 'with unacceptable parent collection' do
93
- let(:collection2) { Hydra::Works::Collection.create }
94
- let(:generic_work1) { Hydra::Works::GenericWork::Base.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_collection must be a hydra-works collection' }
104
-
105
- it 'should NOT accept Hydra::Works::GenericWork as parent collection' do
106
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( generic_work1, collection2 ) }.to raise_error(ArgumentError,error_message)
107
- end
108
-
109
- it 'should NOT accept Hydra::Works::GenericFile as parent collection' do
110
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( generic_file1, collection2 ) }.to raise_error(ArgumentError,error_message)
111
- end
112
-
113
- it 'should NOT accept Hydra::PCDM::Collections as parent collection' do
114
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( pcdm_collection1, collection2 ) }.to raise_error(ArgumentError,error_message)
115
- end
116
-
117
- it 'should NOT accept Hydra::PCDM::Objects as parent collection' do
118
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( pcdm_object1, collection2 ) }.to raise_error(error_type,error_message)
119
- end
120
-
121
- it 'should NOT accept Hydra::PCDM::Files as parent collection' do
122
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( pcdm_file1, collection2 ) }.to raise_error(error_type,error_message)
123
- end
124
-
125
- it 'should NOT accept non-PCDM objects as parent collection' do
126
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( non_PCDM_object, collection2 ) }.to raise_error(error_type,error_message)
127
- end
128
-
129
- it 'should NOT accept AF::Base objects as parent collection' do
130
- expect{ Hydra::Works::RemoveCollectionFromCollection.call( af_base_object, collection2 ) }.to raise_error(error_type,error_message)
131
- end
132
- end
133
- end
@@ -1,133 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::Works::RemoveGenericWorkFromCollection do
4
-
5
- subject { Hydra::Works::Collection.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(:collection1) { Hydra::Works::Collection.create }
14
- let(:collection2) { Hydra::Works::Collection.create }
15
-
16
-
17
- describe '#call' do
18
- context 'when multiple generic works' do
19
- before do
20
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work1 )
21
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work2 )
22
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
23
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work3 )
24
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work4 )
25
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
26
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work5 )
27
- subject.save
28
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work1,generic_work2,generic_work3,generic_work4,generic_work5]
29
- end
30
-
31
- it 'should remove first generic work' do
32
- expect( Hydra::Works::RemoveGenericWorkFromCollection.call( subject, generic_work1 ) ).to eq generic_work1
33
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work2,generic_work3,generic_work4,generic_work5]
34
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection1]
35
- end
36
-
37
- it 'should remove last generic work' do
38
- expect( Hydra::Works::RemoveGenericWorkFromCollection.call( subject, generic_work5 ) ).to eq generic_work5
39
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work1,generic_work2,generic_work3,generic_work4]
40
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection1]
41
- end
42
-
43
- it 'should remove middle generic work' do
44
- expect( Hydra::Works::RemoveGenericWorkFromCollection.call( subject, generic_work3 ) ).to eq generic_work3
45
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work1,generic_work2,generic_work4,generic_work5]
46
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection1]
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::RemoveGenericWorkFromCollection.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::RemoveGenericWorkFromCollection.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::RemoveGenericWorkFromCollection.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::RemoveGenericWorkFromCollection.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::RemoveGenericWorkFromCollection.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::RemoveGenericWorkFromCollection.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::RemoveGenericWorkFromCollection.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
89
- end
90
- end
91
-
92
- context 'with unacceptable parent collection' do
93
- let(:generic_work2) { Hydra::Works::GenericWork::Base.create }
94
- let(:generic_work1) { Hydra::Works::GenericWork::Base.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_collection must be a hydra-works collection' }
104
-
105
- it 'should NOT accept Hydra::Works::GenericWork as parent collection' do
106
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.call( generic_work1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
107
- end
108
-
109
- it 'should NOT accept Hydra::Works::GenericFile as parent collection' do
110
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.call( generic_file1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
111
- end
112
-
113
- it 'should NOT accept Hydra::PCDM::Collections as parent collection' do
114
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.call( pcdm_collection1, generic_work2 ) }.to raise_error(ArgumentError,error_message)
115
- end
116
-
117
- it 'should NOT accept Hydra::PCDM::Objects as parent collection' do
118
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.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 collection' do
122
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.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 collection' do
126
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.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 collection' do
130
- expect{ Hydra::Works::RemoveGenericWorkFromCollection.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::RemoveRelatedObjectFromCollection do
4
-
5
- subject { Hydra::Works::Collection.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(:collection1) { Hydra::Works::Collection.create }
14
- let(:collection2) { Hydra::Works::Collection.create }
15
- let(:generic_work1) { Hydra::Works::GenericWork::Base.create }
16
-
17
-
18
- describe '#call' do
19
- context 'when multiple related objects' do
20
- before do
21
- Hydra::Works::AddRelatedObjectToCollection.call( subject, related_object1 )
22
- Hydra::Works::AddRelatedObjectToCollection.call( subject, related_work2 )
23
- Hydra::Works::AddCollectionToCollection.call( subject, collection2 )
24
- Hydra::Works::AddGenericWorkToCollection.call( subject, generic_work1 )
25
- Hydra::Works::AddRelatedObjectToCollection.call( subject, related_file3 )
26
- Hydra::Works::AddRelatedObjectToCollection.call( subject, related_object4 )
27
- Hydra::Works::AddCollectionToCollection.call( subject, collection1 )
28
- Hydra::Works::AddRelatedObjectToCollection.call( subject, related_work5 )
29
- subject.save
30
- expect( Hydra::Works::GetRelatedObjectsFromCollection.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::RemoveRelatedObjectFromCollection.call( subject, related_object1 ) ).to eq related_object1
35
- expect( Hydra::Works::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [related_work2,related_file3,related_object4,related_work5]
36
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection1]
37
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work1]
38
- end
39
-
40
- it 'should remove last related object' do
41
- expect( Hydra::Works::RemoveRelatedObjectFromCollection.call( subject, related_work5 ) ).to eq related_work5
42
- expect( Hydra::Works::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [related_object1,related_work2,related_file3,related_object4]
43
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection1]
44
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work1]
45
- end
46
-
47
- it 'should remove middle related object' do
48
- expect( Hydra::Works::RemoveRelatedObjectFromCollection.call( subject, related_file3 ) ).to eq related_file3
49
- expect( Hydra::Works::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [related_object1,related_work2,related_object4,related_work5]
50
- expect( Hydra::Works::GetCollectionsFromCollection.call( subject.reload )).to eq [collection2,collection1]
51
- expect( Hydra::Works::GetGenericWorksFromCollection.call( subject.reload )).to eq [generic_work1]
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::RemoveRelatedObjectFromCollection.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::RemoveRelatedObjectFromCollection.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::RemoveRelatedObjectFromCollection.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::RemoveRelatedObjectFromCollection.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::RemoveRelatedObjectFromCollection.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
84
- end
85
- end
86
-
87
- context 'with unacceptable parent collection' do
88
- let(:related_object2) { Hydra::PCDM::Object.create }
89
- let(:generic_work1) { Hydra::Works::GenericWork::Base.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_collection must be a hydra-works collection' }
99
-
100
- it 'should NOT accept Hydra::Works::GenericWork as parent collection' do
101
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.call( generic_work1, related_object2 ) }.to raise_error(ArgumentError,error_message)
102
- end
103
-
104
- it 'should NOT accept Hydra::Works::GenericFile as parent collection' do
105
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.call( generic_file1, related_object2 ) }.to raise_error(ArgumentError,error_message)
106
- end
107
-
108
- it 'should NOT accept Hydra::PCDM::Collections as parent collection' do
109
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.call( pcdm_collection1, related_object2 ) }.to raise_error(ArgumentError,error_message)
110
- end
111
-
112
- it 'should NOT accept Hydra::PCDM::Objects as parent collection' do
113
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.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 collection' do
117
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.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 collection' do
121
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.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 collection' do
125
- expect{ Hydra::Works::RemoveRelatedObjectFromCollection.call( af_base_object, related_work2 ) }.to raise_error(error_type,error_message)
126
- end
127
- end
128
- end