hydra-pcdm 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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -0
  3. data/Gemfile +0 -4
  4. data/README.md +2 -2
  5. data/hydra-pcdm.gemspec +2 -1
  6. data/lib/hydra/pcdm.rb +21 -30
  7. data/lib/hydra/pcdm/ancestor_checker.rb +18 -0
  8. data/lib/hydra/pcdm/collection_indexer.rb +2 -2
  9. data/lib/hydra/pcdm/deep_member_iterator.rb +31 -0
  10. data/lib/hydra/pcdm/models/concerns/collection_behavior.rb +20 -57
  11. data/lib/hydra/pcdm/models/concerns/object_behavior.rb +12 -37
  12. data/lib/hydra/pcdm/models/concerns/pcdm_behavior.rb +34 -0
  13. data/lib/hydra/pcdm/object_indexer.rb +1 -1
  14. data/lib/hydra/pcdm/services/file/get_mime_type.rb +1 -1
  15. data/lib/hydra/pcdm/validators.rb +8 -0
  16. data/lib/hydra/pcdm/validators/ancestor_validator.rb +26 -0
  17. data/lib/hydra/pcdm/validators/composite_validator.rb +17 -0
  18. data/lib/hydra/pcdm/validators/pcdm_object_validator.rb +9 -0
  19. data/lib/hydra/pcdm/validators/pcdm_validator.rb +9 -0
  20. data/lib/hydra/pcdm/version.rb +1 -1
  21. data/lib/hydra/pcdm/vocab/pcdm_terms.rb +1 -1
  22. data/spec/hydra/pcdm/ancestor_checker_spec.rb +29 -0
  23. data/spec/hydra/pcdm/collection_indexer_spec.rb +11 -11
  24. data/spec/hydra/pcdm/deep_member_iterator_spec.rb +52 -0
  25. data/spec/hydra/pcdm/models/collection_spec.rb +691 -17
  26. data/spec/hydra/pcdm/models/file_spec.rb +16 -0
  27. data/spec/hydra/pcdm/models/object_spec.rb +576 -27
  28. data/spec/hydra/pcdm/object_indexer_spec.rb +6 -6
  29. data/spec/spec_helper.rb +8 -1
  30. metadata +31 -52
  31. data/lib/hydra/pcdm/services/collection/add_collection.rb +0 -20
  32. data/lib/hydra/pcdm/services/collection/add_object.rb +0 -19
  33. data/lib/hydra/pcdm/services/collection/add_related_object.rb +0 -21
  34. data/lib/hydra/pcdm/services/collection/get_collections.rb +0 -18
  35. data/lib/hydra/pcdm/services/collection/get_objects.rb +0 -18
  36. data/lib/hydra/pcdm/services/collection/get_related_objects.rb +0 -17
  37. data/lib/hydra/pcdm/services/collection/remove_collection.rb +0 -36
  38. data/lib/hydra/pcdm/services/collection/remove_object.rb +0 -43
  39. data/lib/hydra/pcdm/services/collection/remove_related_object.rb +0 -36
  40. data/lib/hydra/pcdm/services/object/add_object.rb +0 -20
  41. data/lib/hydra/pcdm/services/object/add_related_object.rb +0 -21
  42. data/lib/hydra/pcdm/services/object/get_objects.rb +0 -18
  43. data/lib/hydra/pcdm/services/object/get_related_objects.rb +0 -17
  44. data/lib/hydra/pcdm/services/object/remove_object.rb +0 -43
  45. data/lib/hydra/pcdm/services/object/remove_related_object.rb +0 -36
  46. data/spec/hydra/pcdm/services/collection/add_collection_spec.rb +0 -197
  47. data/spec/hydra/pcdm/services/collection/add_object_spec.rb +0 -132
  48. data/spec/hydra/pcdm/services/collection/add_related_object_spec.rb +0 -94
  49. data/spec/hydra/pcdm/services/collection/get_collections_spec.rb +0 -40
  50. data/spec/hydra/pcdm/services/collection/get_objects_spec.rb +0 -40
  51. data/spec/hydra/pcdm/services/collection/get_related_objects_spec.rb +0 -37
  52. data/spec/hydra/pcdm/services/collection/remove_collection_spec.rb +0 -143
  53. data/spec/hydra/pcdm/services/collection/remove_object_spec.rb +0 -180
  54. data/spec/hydra/pcdm/services/collection/remove_related_object_spec.rb +0 -146
  55. data/spec/hydra/pcdm/services/file/add_type_spec.rb +0 -19
  56. data/spec/hydra/pcdm/services/object/add_object_spec.rb +0 -186
  57. data/spec/hydra/pcdm/services/object/add_related_object_spec.rb +0 -94
  58. data/spec/hydra/pcdm/services/object/get_objects_spec.rb +0 -33
  59. data/spec/hydra/pcdm/services/object/get_related_objects_spec.rb +0 -39
  60. data/spec/hydra/pcdm/services/object/remove_object_spec.rb +0 -158
  61. data/spec/hydra/pcdm/services/object/remove_related_object_spec.rb +0 -126
@@ -1,146 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::PCDM::RemoveRelatedObjectFromCollection do
4
-
5
- subject { Hydra::PCDM::Collection.create }
6
-
7
- let(:object1) { Hydra::PCDM::Object.create }
8
- let(:object2) { Hydra::PCDM::Object.create }
9
- let(:object3) { Hydra::PCDM::Object.create }
10
- let(:object4) { Hydra::PCDM::Object.create }
11
- let(:object5) { Hydra::PCDM::Object.create }
12
-
13
- let(:collection1) { Hydra::PCDM::Collection.create }
14
- let(:collection2) { Hydra::PCDM::Collection.create }
15
-
16
- describe '#call' do
17
- context 'when it is the only related object' do
18
- before do
19
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object1 )
20
- subject.save
21
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [object1]
22
- end
23
-
24
- it 'should remove related object' do
25
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, object1 ) ).to eq object1
26
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq []
27
- end
28
-
29
- it 'should remove related object only when objects & collections' do
30
- Hydra::PCDM::AddCollectionToCollection.call( subject, collection1 )
31
- Hydra::PCDM::AddCollectionToCollection.call( subject, collection2 )
32
- Hydra::PCDM::AddObjectToCollection.call( subject, object3 )
33
- Hydra::PCDM::AddObjectToCollection.call( subject, object2 )
34
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, object1 ) ).to eq object1
35
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq []
36
- expect( Hydra::PCDM::GetCollectionsFromCollection.call( subject )).to eq [collection1,collection2]
37
- expect( Hydra::PCDM::GetObjectsFromCollection.call( subject )).to eq [object3,object2]
38
- end
39
- end
40
-
41
- context 'when multiple related objects' do
42
- before do
43
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object1 )
44
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object2 )
45
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object3 )
46
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object4 )
47
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object5 )
48
- subject.save
49
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [object1,object2,object3,object4,object5]
50
- end
51
-
52
- it 'should remove first related object' do
53
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, object1 ) ).to eq object1
54
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [object2,object3,object4,object5]
55
- end
56
-
57
- it 'should remove last related object' do
58
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, object5 ) ).to eq object5
59
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [object1,object2,object3,object4]
60
- end
61
-
62
- it 'should remove middle related object' do
63
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, object3 ) ).to eq object3
64
- expect( Hydra::PCDM::GetRelatedObjectsFromCollection.call( subject.reload )).to eq [object1,object2,object4,object5]
65
- end
66
- end
67
-
68
- context 'when related object is missing' do
69
- it 'should return nil when 0 related objects and 0 collections and objects' do
70
- subject.save
71
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject.reload, object1 )).to be nil
72
- end
73
-
74
- it 'should return nil when 0 related objects, but has collections and objects' do
75
- Hydra::PCDM::AddCollectionToCollection.call( subject, collection1 )
76
- Hydra::PCDM::AddCollectionToCollection.call( subject, collection2 )
77
- Hydra::PCDM::AddObjectToCollection.call( subject, object1 )
78
- Hydra::PCDM::AddObjectToCollection.call( subject, object2 )
79
- subject.save
80
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject.reload, object1 )).to be nil
81
- end
82
-
83
- it 'should return nil when other related objects' do
84
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object1 )
85
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object2 )
86
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object4 )
87
- Hydra::PCDM::AddRelatedObjectToCollection.call( subject, object5 )
88
- subject.save
89
- expect( Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject.reload, object3 )).to be nil
90
- end
91
- end
92
- end
93
-
94
- context 'with unacceptable related objects' do
95
- let(:collection1) { Hydra::PCDM::Collection.create }
96
- let(:file1) { Hydra::PCDM::File.new }
97
- let(:non_PCDM_object) { "I'm not a PCDM object" }
98
- let(:af_base_object) { ActiveFedora::Base.create }
99
-
100
- let(:error_type) { ArgumentError }
101
- let(:error_message) { 'child_related_object must be a pcdm object' }
102
-
103
- it 'should NOT remove Hydra::PCDM::Collections from related_objects aggregation' do
104
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, collection1 ) }.to raise_error(error_type,error_message)
105
- end
106
-
107
- it 'should NOT remove Hydra::PCDM::Files from related_objects aggregation' do
108
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, file1 ) }.to raise_error(error_type,error_message)
109
- end
110
-
111
- it 'should NOT remove non-PCDM objects from related_objects aggregation' do
112
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, non_PCDM_object ) }.to raise_error(error_type,error_message)
113
- end
114
-
115
- it 'should NOT remove AF::Base objects from related_objects aggregation' do
116
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( subject, af_base_object ) }.to raise_error(error_type,error_message)
117
- end
118
- end
119
-
120
- context 'with unacceptable parent collection' do
121
- let(:object2) { Hydra::PCDM::Object.create }
122
- let(:object1) { Hydra::PCDM::Object.create }
123
- let(:file1) { Hydra::PCDM::File.new }
124
- let(:non_PCDM_object) { "I'm not a PCDM object" }
125
- let(:af_base_object) { ActiveFedora::Base.create }
126
-
127
- let(:error_type) { ArgumentError }
128
- let(:error_message) { 'parent_collection must be a pcdm collection' }
129
-
130
- it 'should NOT accept Hydra::PCDM::Objects as parent collection' do
131
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( object1, object2 ) }.to raise_error(error_type,error_message)
132
- end
133
-
134
- it 'should NOT accept Hydra::PCDM::Files as parent collection' do
135
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( file1, object2 ) }.to raise_error(error_type,error_message)
136
- end
137
-
138
- it 'should NOT accept non-PCDM objects as parent collection' do
139
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( non_PCDM_object, object2 ) }.to raise_error(error_type,error_message)
140
- end
141
-
142
- it 'should NOT accept AF::Base objects as parent collection' do
143
- expect{ Hydra::PCDM::RemoveRelatedObjectFromCollection.call( af_base_object, object2 ) }.to raise_error(error_type,error_message)
144
- end
145
- end
146
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::PCDM::AddTypeToFile do
4
-
5
- let(:file) { Hydra::PCDM::File.new }
6
-
7
- context "with a file that has no type" do
8
- let(:uri) { ::RDF::URI("http://example.com/MyType") }
9
- subject { described_class.call(file, uri).metadata_node.type }
10
- it { is_expected.to include(uri)}
11
- end
12
-
13
- context "when adding a type that already exists" do
14
- let(:uri) { RDFVocabularies::PCDMTerms.File }
15
- subject { described_class.call(file, uri).metadata_node.type }
16
- it { is_expected.to eql [uri] }
17
- end
18
-
19
- end
@@ -1,186 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::PCDM::AddObjectToObject do
4
-
5
- let(:subject) { Hydra::PCDM::Object.create }
6
-
7
- describe '#call' do
8
- context 'with acceptable objects' do
9
- let(:object1) { Hydra::PCDM::Object.create }
10
- let(:object2) { Hydra::PCDM::Object.create }
11
- let(:object3) { Hydra::PCDM::Object.create }
12
- let(:object4) { Hydra::PCDM::Object.create }
13
- let(:object5) { Hydra::PCDM::Object.create }
14
-
15
- it 'should add an object to empty object' do
16
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
17
- expect( Hydra::PCDM::GetObjectsFromObject.call( subject ) ).to eq [object1]
18
- end
19
-
20
- it 'should add an object to an object with objects' do
21
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
22
- Hydra::PCDM::AddObjectToObject.call( subject, object2 )
23
- expect( Hydra::PCDM::GetObjectsFromObject.call( subject ) ).to eq [object1,object2]
24
- end
25
-
26
- it 'should allow objects to repeat' do
27
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
28
- Hydra::PCDM::AddObjectToObject.call( subject, object2 )
29
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
30
- expect( Hydra::PCDM::GetObjectsFromObject.call( subject ) ).to eq [object1,object2,object1]
31
- end
32
-
33
- it 'should aggregate objects in a sub-object of a object' do
34
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
35
- object1.save
36
- Hydra::PCDM::AddObjectToObject.call( object1, object2 )
37
- object2.save
38
- expect(subject.objects).to eq [object1]
39
- expect(object1.objects).to eq [object2]
40
- end
41
-
42
- context 'with files and objects' do
43
- let(:file1) { subject.files.build }
44
- let(:file2) { subject.files.build }
45
-
46
- before do
47
- file1.content = "I'm a file"
48
- file2.content = "I am too"
49
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
50
- Hydra::PCDM::AddObjectToObject.call( subject, object2 )
51
- subject.save!
52
- end
53
-
54
- it 'should add an object to an object with files and objects' do
55
- Hydra::PCDM::AddObjectToObject.call( subject, object3 )
56
- expect( Hydra::PCDM::GetObjectsFromObject.call( subject ) ).to eq [object1,object2,object3]
57
- end
58
- end
59
-
60
- describe 'adding objects that are ancestors' do
61
- let(:error_message) { "an object can't be an ancestor of itself" }
62
-
63
- context 'when the source object is the same' do
64
- it 'raises an error' do
65
- expect{ Hydra::PCDM::AddObjectToObject.call( object1, object1 )}.to raise_error(ArgumentError, error_message)
66
- end
67
- end
68
-
69
- before do
70
- Hydra::PCDM::AddObjectToObject.call( object1, object2 )
71
- object1.save
72
- end
73
-
74
- it 'raises and error' do
75
- expect{ Hydra::PCDM::AddObjectToObject.call( object2, object1 )}.to raise_error(ArgumentError, error_message)
76
- end
77
-
78
- context 'with more ancestors' do
79
- before do
80
- Hydra::PCDM::AddObjectToObject.call( object2, object3 )
81
- object2.save
82
- end
83
-
84
- it 'raises an error' do
85
- expect{ Hydra::PCDM::AddObjectToObject.call( object3, object1 )}.to raise_error(ArgumentError, error_message)
86
- end
87
-
88
- context 'with a more complicated example' do
89
- before do
90
- Hydra::PCDM::AddObjectToObject.call( object3, object4 )
91
- Hydra::PCDM::AddObjectToObject.call( object3, object5 )
92
- object3.save
93
- end
94
-
95
- it 'raises errors' do
96
- expect{ Hydra::PCDM::AddObjectToObject.call( object4, object1 )}.to raise_error(ArgumentError, error_message)
97
- expect{ Hydra::PCDM::AddObjectToObject.call( object4, object2 )}.to raise_error(ArgumentError, error_message)
98
- end
99
- end
100
- end
101
- end
102
-
103
- describe 'aggregates objects that implement Hydra::PCDM' do
104
- before do
105
- class DummyIncObject < ActiveFedora::Base
106
- include Hydra::PCDM::ObjectBehavior
107
- end
108
- end
109
- after { Object.send(:remove_const, :DummyIncObject) }
110
- let(:iobject1) { DummyIncObject.create }
111
-
112
- it 'should accept implementing object as a child' do
113
- Hydra::PCDM::AddObjectToObject.call( subject, iobject1 )
114
- subject.save
115
- expect( Hydra::PCDM::GetObjectsFromObject.call( subject ) ).to eq [iobject1]
116
- end
117
- end
118
-
119
- describe 'aggregates objects that extend Hydra::PCDM' do
120
- before do
121
- class DummyExtObject < Hydra::PCDM::Object
122
- end
123
- end
124
- after { Object.send(:remove_const, :DummyExtObject) }
125
- let(:eobject1) { DummyExtObject.create }
126
-
127
- it 'should accept extending object as a child' do
128
- Hydra::PCDM::AddObjectToObject.call( subject, eobject1 )
129
- subject.save
130
- expect( Hydra::PCDM::GetObjectsFromObject.call( subject ) ).to eq [eobject1]
131
- end
132
- end
133
- end
134
-
135
- context 'with unacceptable objects' do
136
- let(:collection1) { Hydra::PCDM::Collection.create }
137
- let(:file1) { Hydra::PCDM::File.new }
138
- let(:non_PCDM_object) { "I'm not a PCDM object" }
139
- let(:af_base_object) { ActiveFedora::Base.create }
140
-
141
- let(:error_message) { 'child_object must be a pcdm object' }
142
-
143
- it 'should NOT aggregate Hydra::PCDM::Collection in objects aggregation' do
144
- expect{ Hydra::PCDM::AddObjectToObject.call( subject, collection1 ) }.to raise_error(ArgumentError,error_message)
145
- end
146
-
147
- it 'should NOT aggregate Hydra::PCDM::Files in objects aggregation' do
148
- expect{ Hydra::PCDM::AddObjectToObject.call( subject, file1 ) }.to raise_error(ArgumentError,error_message)
149
- end
150
-
151
- it 'should NOT aggregate non-PCDM objects in objects aggregation' do
152
- expect{ Hydra::PCDM::AddObjectToObject.call( subject, non_PCDM_object ) }.to raise_error(ArgumentError,error_message)
153
- end
154
-
155
- it 'should NOT aggregate AF::Base objects in objects aggregation' do
156
- expect{ Hydra::PCDM::AddObjectToObject.call( subject, af_base_object ) }.to raise_error(ArgumentError,error_message)
157
- end
158
- end
159
-
160
- context 'with unacceptable parent object' do
161
- let(:collection1) { Hydra::PCDM::Collection.create }
162
- let(:object2) { Hydra::PCDM::Object.create }
163
- let(:file1) { Hydra::PCDM::File.new }
164
- let(:non_PCDM_object) { "I'm not a PCDM object" }
165
- let(:af_base_object) { ActiveFedora::Base.create }
166
-
167
- let(:error_message) { 'parent_object must be a pcdm object' }
168
-
169
- it 'should NOT accept Hydra::PCDM::Collections as parent object' do
170
- expect{ Hydra::PCDM::AddObjectToObject.call( collection1, object2 ) }.to raise_error(ArgumentError,error_message)
171
- end
172
-
173
- it 'should NOT accept Hydra::PCDM::Files as parent object' do
174
- expect{ Hydra::PCDM::AddObjectToObject.call( file1, object2 ) }.to raise_error(ArgumentError,error_message)
175
- end
176
-
177
- it 'should NOT accept non-PCDM objects as parent object' do
178
- expect{ Hydra::PCDM::AddObjectToObject.call( non_PCDM_object, object2 ) }.to raise_error(ArgumentError,error_message)
179
- end
180
-
181
- it 'should NOT accept AF::Base objects as parent object' do
182
- expect{ Hydra::PCDM::AddObjectToObject.call( af_base_object, object2 ) }.to raise_error(ArgumentError,error_message)
183
- end
184
- end
185
- end
186
- end
@@ -1,94 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Hydra::PCDM::AddRelatedObjectToObject do
4
-
5
- let(:subject) { Hydra::PCDM::Object.create }
6
-
7
- describe '#call' do
8
-
9
- context 'with acceptable objects' do
10
- let(:object1) { Hydra::PCDM::Object.create }
11
- let(:object2) { Hydra::PCDM::Object.create }
12
- let(:object3) { Hydra::PCDM::Object.create }
13
- let(:file1) { Hydra::PCDM::File.new }
14
-
15
- it 'should add a related object to empty object' do
16
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object1 )
17
- expect( Hydra::PCDM::GetRelatedObjectsFromObject.call( subject ) ).to eq [object1]
18
- end
19
-
20
- it 'should add a related object to object with related objects' do
21
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object1 )
22
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object2 )
23
- related_objects = Hydra::PCDM::GetRelatedObjectsFromObject.call( subject )
24
- expect( related_objects.include? object1 ).to be true
25
- expect( related_objects.include? object2 ).to be true
26
- expect( related_objects.size ).to eq 2
27
- end
28
-
29
- context 'with files and objects' do
30
- let(:file1) { subject.files.build }
31
- let(:file2) { subject.files.build }
32
-
33
- before do
34
- file1.content = "I'm a file"
35
- file2.content = "I am too"
36
- Hydra::PCDM::AddObjectToObject.call( subject, object1 )
37
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object2 )
38
- subject.save!
39
- end
40
-
41
- it 'should add an object to an object with files and objects' do
42
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object3 )
43
- related_objects = Hydra::PCDM::GetRelatedObjectsFromObject.call( subject )
44
- expect( related_objects.include? object2 ).to be true
45
- expect( related_objects.include? object3 ).to be true
46
- expect( related_objects.size ).to eq 2
47
- end
48
- end
49
- end
50
-
51
- context 'with unacceptable objects' do
52
- let(:collection1) { Hydra::PCDM::Collection.create }
53
- let(:file1) { Hydra::PCDM::File.new }
54
- let(:non_PCDM_object) { "I'm not a PCDM object" }
55
- let(:af_base_object) { ActiveFedora::Base.create }
56
-
57
- let(:error_message) { 'child_related_object must be a pcdm object' }
58
-
59
- it 'should NOT aggregate Hydra::PCDM::Collection in related objects aggregation' do
60
- expect{ Hydra::PCDM::AddRelatedObjectToObject.call( subject, collection1 ) }.to raise_error(ArgumentError,error_message)
61
- end
62
-
63
- it 'should NOT aggregate Hydra::PCDM::Files in related objects aggregation' do
64
- expect{ Hydra::PCDM::AddRelatedObjectToObject.call( subject, file1 ) }.to raise_error(ArgumentError,error_message)
65
- end
66
-
67
- it 'should NOT aggregate non-PCDM objects in related objects aggregation' do
68
- expect{ Hydra::PCDM::AddRelatedObjectToObject.call( subject, non_PCDM_object ) }.to raise_error(ArgumentError,error_message)
69
- end
70
-
71
- it 'should NOT aggregate AF::Base objects in related objects aggregation' do
72
- expect{ Hydra::PCDM::AddRelatedObjectToObject.call( subject, af_base_object ) }.to raise_error(ArgumentError,error_message)
73
- end
74
-
75
- end
76
-
77
- context 'with invalid bahaviors' do
78
- let(:object1) { Hydra::PCDM::Object.create }
79
- let(:object2) { Hydra::PCDM::Object.create }
80
-
81
- it 'should NOT allow related objects to repeat' do
82
- skip 'skipping this test because issue #92 needs to be addressed' do
83
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object1 )
84
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object2 )
85
- Hydra::PCDM::AddRelatedObjectToObject.call( subject, object1 )
86
- related_objects = Hydra::PCDM::GetRelatedObjectsFromObject.call( subject )
87
- expect( related_objects.include? object1 ).to be true
88
- expect( related_objects.include? object2 ).to be true
89
- expect( related_objects.size ).to eq 2
90
- end
91
- end
92
- end
93
- end
94
- end