hydra-pcdm 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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