active-fedora 3.1.6 → 3.2.0.pre1
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.
- data/.gitignore +1 -0
- data/Gemfile.lock +22 -22
- data/History.txt +9 -3
- data/active-fedora.gemspec +3 -3
- data/config/predicate_mappings.yml +1 -0
- data/config/service_mappings.yml +9 -0
- data/lib/active_fedora.rb +7 -1
- data/lib/active_fedora/base.rb +84 -30
- data/lib/active_fedora/datastream.rb +4 -1
- data/lib/active_fedora/datastream_collections.rb +304 -293
- data/lib/active_fedora/metadata_datastream.rb +2 -24
- data/lib/active_fedora/metadata_datastream_helper.rb +32 -5
- data/lib/active_fedora/named_relationships.rb +95 -0
- data/lib/active_fedora/nested_attributes.rb +1 -1
- data/lib/active_fedora/predicates.rb +76 -0
- data/lib/active_fedora/reflection.rb +9 -1
- data/lib/active_fedora/relationship.rb +1 -0
- data/lib/active_fedora/relationship_graph.rb +152 -0
- data/lib/active_fedora/relationships_helper.rb +32 -41
- data/lib/active_fedora/rels_ext_datastream.rb +3 -10
- data/lib/active_fedora/semantic_node.rb +47 -203
- data/lib/active_fedora/service_definitions.rb +89 -0
- data/lib/active_fedora/unsaved_digital_object.rb +40 -0
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/base_spec.rb +106 -309
- data/spec/integration/datastream_collections_spec.rb +135 -0
- data/spec/integration/rels_ext_datastream_spec.rb +14 -35
- data/spec/integration/semantic_node_spec.rb +6 -10
- data/spec/unit/base_datastream_management_spec.rb +0 -3
- data/spec/unit/base_extra_spec.rb +5 -9
- data/spec/unit/base_spec.rb +103 -57
- data/spec/unit/{base_named_datastream_spec.rb → datastream_collections_spec.rb} +107 -150
- data/spec/unit/metadata_datastream_spec.rb +0 -1
- data/spec/unit/nokogiri_datastream_spec.rb +0 -1
- data/spec/unit/predicates_spec.rb +64 -0
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +0 -7
- data/spec/unit/relationship_graph_spec.rb +95 -0
- data/spec/unit/relationship_spec.rb +4 -4
- data/spec/unit/relationships_helper_spec.rb +43 -104
- data/spec/unit/rels_ext_datastream_spec.rb +6 -6
- data/spec/unit/semantic_node_spec.rb +27 -116
- data/spec/unit/service_definitions_spec.rb +52 -0
- data/spec/unit/solr_config_options_spec.rb +1 -1
- metadata +35 -17
@@ -1,45 +1,50 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require "active_fedora"
|
3
2
|
|
4
|
-
# Some tentative extensions to ActiveFedora::Base
|
5
3
|
|
6
|
-
|
7
|
-
|
8
|
-
@@last_pid = 0
|
9
|
-
|
10
|
-
def increment_pid
|
11
|
-
@@last_pid += 1
|
12
|
-
end
|
13
|
-
|
14
|
-
before(:each) do
|
15
|
-
@test_object = ActiveFedora::Base.new
|
16
|
-
end
|
4
|
+
DEPRECATION_MSG = "Deprecation: DatastreamCollections will not be included by default in the next version. To use has_datastream add 'include ActiveFedora::DatastreamCollections' to your model"
|
17
5
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
6
|
+
describe ActiveFedora::DatastreamCollections do
|
7
|
+
describe '.has_datastream' do
|
8
|
+
before(:all) do
|
9
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
10
|
+
|
11
|
+
class MockHasDatastream < ActiveFedora::Base
|
12
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
13
|
+
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
14
|
+
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
15
|
+
end
|
27
16
|
end
|
28
17
|
|
29
|
-
|
30
|
-
|
31
|
-
|
18
|
+
it 'should cache a definition of named datastream and create helper methods to add/remove/access them' do
|
19
|
+
@test_object2 = MockHasDatastream.new
|
20
|
+
#prefix should default to name in caps if not specified in has_datastream call
|
21
|
+
@test_object2.named_datastreams_desc.should == {"thumbnail"=>{:name=>"thumbnail",:prefix => "THUMB",
|
22
|
+
:type=>"ActiveFedora::Datastream", :mimeType=>"image/jpeg",
|
23
|
+
:controlGroup=>'M'},
|
24
|
+
"EAD"=> {:name=>"EAD", :prefix=>"EAD",
|
25
|
+
:type=>"ActiveFedora::Datastream", :mimeType=>"application/xml",
|
26
|
+
:controlGroup=>'M' },
|
27
|
+
"external"=> {:name=>"external", :prefix=>"EXTERNAL",
|
28
|
+
:type=>"ActiveFedora::Datastream", :controlGroup=>'E' }}
|
29
|
+
@test_object2.should respond_to(:thumbnail_append)
|
30
|
+
@test_object2.should respond_to(:thumbnail_file_append)
|
31
|
+
@test_object2.should respond_to(:thumbnail)
|
32
|
+
@test_object2.should respond_to(:thumbnail_ids)
|
33
|
+
@test_object2.should respond_to(:ead_append)
|
34
|
+
@test_object2.should respond_to(:ead_file_append)
|
35
|
+
@test_object2.should respond_to(:EAD)
|
36
|
+
@test_object2.should respond_to(:EAD_ids)
|
37
|
+
@test_object2.should respond_to(:external)
|
38
|
+
@test_object2.should respond_to(:external_ids)
|
32
39
|
end
|
33
40
|
end
|
34
|
-
|
35
|
-
it 'should provide #datastream_names' do
|
36
|
-
@test_object.should respond_to(:datastream_names)
|
37
|
-
end
|
38
|
-
|
39
41
|
describe '#datastream_names' do
|
40
|
-
|
41
|
-
|
42
|
-
|
42
|
+
before(:all) do
|
43
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
44
|
+
class MockDatastreamNames < ActiveFedora::Base
|
45
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
46
|
+
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
47
|
+
end
|
43
48
|
end
|
44
49
|
|
45
50
|
it 'should return an array of datastream names defined by has_datastream' do
|
@@ -48,19 +53,18 @@ describe ActiveFedora::Base do
|
|
48
53
|
end
|
49
54
|
end
|
50
55
|
|
51
|
-
it 'should provide #add_named_datastream' do
|
52
|
-
@test_object.should respond_to(:add_named_datastream)
|
53
|
-
end
|
54
|
-
|
55
56
|
describe '#add_named_datastream' do
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
before(:all) do
|
58
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
59
|
+
class MockAddNamedDatastream < ActiveFedora::Base
|
60
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
61
|
+
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
62
|
+
has_datastream :name=>"anymime", :type=>ActiveFedora::Datastream, :controlGroup=>'M'
|
63
|
+
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
64
|
+
end
|
61
65
|
end
|
62
|
-
|
63
66
|
before do
|
67
|
+
|
64
68
|
@test_object2 = MockAddNamedDatastream.new
|
65
69
|
@f = File.new(File.join( File.dirname(__FILE__), "../fixtures/minivan.jpg"))
|
66
70
|
@f2 = File.new(File.join( File.dirname(__FILE__), "../fixtures/dino.jpg" ))
|
@@ -140,15 +144,14 @@ describe ActiveFedora::Base do
|
|
140
144
|
end
|
141
145
|
end
|
142
146
|
|
143
|
-
it 'should provide #add_named_file_datastream' do
|
144
|
-
@test_object.should respond_to(:add_named_file_datastream)
|
145
|
-
end
|
146
|
-
|
147
147
|
describe '#add_named_file_datastream' do
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
148
|
+
before do
|
149
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
150
|
+
class MockAddNamedFileDatastream < ActiveFedora::Base
|
151
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
152
|
+
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
153
|
+
has_datastream :name=>"anymime", :type=>ActiveFedora::Datastream, :controlGroup=>'M'
|
154
|
+
end
|
152
155
|
end
|
153
156
|
|
154
157
|
it 'should add a datastream as controlGroup M with blob set to file' do
|
@@ -170,14 +173,13 @@ describe ActiveFedora::Base do
|
|
170
173
|
|
171
174
|
end
|
172
175
|
end
|
173
|
-
|
174
|
-
it 'should provide #update_named_datastream' do
|
175
|
-
@test_object.should respond_to(:update_named_datastream)
|
176
|
-
end
|
177
|
-
|
176
|
+
|
178
177
|
describe '#update_named_datastream' do
|
179
|
-
|
180
|
-
|
178
|
+
before do
|
179
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
180
|
+
class MockUpdateNamedDatastream < ActiveFedora::Base
|
181
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
182
|
+
end
|
181
183
|
end
|
182
184
|
|
183
185
|
it 'should update a datastream and not increment the dsid' do
|
@@ -231,32 +233,29 @@ describe ActiveFedora::Base do
|
|
231
233
|
@test_object2.thumbnail.first.content.should == f2.read
|
232
234
|
end
|
233
235
|
end
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
ds.class.should == ActiveFedora::Datastream
|
242
|
-
ds.dsLabel.should == "minivan.jpg"
|
243
|
-
ds.mimeType.should == "image/jpeg"
|
236
|
+
describe '#named_datastreams_desc' do
|
237
|
+
|
238
|
+
before do
|
239
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
240
|
+
class MockNamedDatastreamsDesc < ActiveFedora::Base
|
241
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
242
|
+
end
|
244
243
|
end
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
244
|
+
|
245
|
+
it 'should intialize a value to an empty hash and then not modify afterward' do
|
246
|
+
@test_object2 = MockNamedDatastreamsDesc.new
|
247
|
+
@test_object2.named_datastreams_desc.should == {"thumbnail"=>{:name=>"thumbnail",:prefix => "THUMB",
|
248
|
+
:type=>"ActiveFedora::Datastream", :mimeType=>"image/jpeg",
|
249
|
+
:controlGroup=>'M'}}
|
250
250
|
end
|
251
251
|
end
|
252
|
-
|
253
|
-
it 'should provide #is_named_datastream?' do
|
254
|
-
@test_object.should respond_to(:is_named_datastream?)
|
255
|
-
end
|
256
|
-
|
252
|
+
|
257
253
|
describe '#is_named_datastream?' do
|
258
|
-
|
259
|
-
|
254
|
+
before do
|
255
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
256
|
+
class MockIsNamedDatastream < ActiveFedora::Base
|
257
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
258
|
+
end
|
260
259
|
end
|
261
260
|
|
262
261
|
it 'should return true if a named datastream exists in model' do
|
@@ -266,15 +265,15 @@ describe ActiveFedora::Base do
|
|
266
265
|
end
|
267
266
|
end
|
268
267
|
|
269
|
-
it 'should provide #named_datastreams' do
|
270
|
-
@test_object.should respond_to(:named_datastreams)
|
271
|
-
end
|
272
268
|
|
273
269
|
describe '#named_datastreams' do
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
270
|
+
before do
|
271
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
272
|
+
class MockNamedDatastreams < ActiveFedora::Base
|
273
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
274
|
+
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
275
|
+
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
276
|
+
end
|
278
277
|
end
|
279
278
|
|
280
279
|
it 'should return a hash of datastream names to arrays of datastreams' do
|
@@ -316,15 +315,15 @@ describe ActiveFedora::Base do
|
|
316
315
|
end
|
317
316
|
|
318
317
|
|
319
|
-
|
320
|
-
@test_object.should respond_to(:named_datastreams_ids)
|
321
|
-
end
|
322
|
-
|
318
|
+
|
323
319
|
describe '#named_datastreams_ids' do
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
320
|
+
before do
|
321
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
322
|
+
class MockNamedDatastreamsIds < ActiveFedora::Base
|
323
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
324
|
+
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
325
|
+
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
326
|
+
end
|
328
327
|
end
|
329
328
|
|
330
329
|
it 'should provide a hash of datastreams names to array of datastream ids' do
|
@@ -342,28 +341,14 @@ describe ActiveFedora::Base do
|
|
342
341
|
end
|
343
342
|
end
|
344
343
|
|
345
|
-
#
|
346
|
-
# Class level methods
|
347
|
-
#
|
348
|
-
describe '#named_datastreams_desc' do
|
349
|
-
|
350
|
-
class MockNamedDatastreamsDesc < ActiveFedora::Base
|
351
|
-
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
352
|
-
end
|
353
|
-
|
354
|
-
it 'should intialize a value to an empty hash and then not modify afterward' do
|
355
|
-
@test_object.named_datastreams_desc.should == {}
|
356
|
-
@test_object2 = MockNamedDatastreamsDesc.new
|
357
|
-
@test_object2.named_datastreams_desc.should == {"thumbnail"=>{:name=>"thumbnail",:prefix => "THUMB",
|
358
|
-
:type=>"ActiveFedora::Datastream", :mimeType=>"image/jpeg",
|
359
|
-
:controlGroup=>'M'}}
|
360
|
-
end
|
361
|
-
end
|
362
344
|
|
363
345
|
describe '#create_named_datastream_finders' do
|
364
|
-
|
365
|
-
|
366
|
-
|
346
|
+
before do
|
347
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
348
|
+
class MockCreateNamedDatastreamFinder < ActiveFedora::Base
|
349
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
350
|
+
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
351
|
+
end
|
367
352
|
end
|
368
353
|
|
369
354
|
it 'should create helper methods to get named datastreams or dsids' do
|
@@ -398,10 +383,13 @@ describe ActiveFedora::Base do
|
|
398
383
|
end
|
399
384
|
|
400
385
|
describe '#create_named_datastream_update_methods' do
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
386
|
+
before do
|
387
|
+
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
388
|
+
class MockCreateNamedDatastreamUpdateMethods < ActiveFedora::Base
|
389
|
+
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
390
|
+
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
391
|
+
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
392
|
+
end
|
405
393
|
end
|
406
394
|
|
407
395
|
it 'should create append method for each has_datastream entry' do
|
@@ -433,35 +421,4 @@ describe ActiveFedora::Base do
|
|
433
421
|
t3_external1.controlGroup == 'E'
|
434
422
|
end
|
435
423
|
end
|
436
|
-
|
437
|
-
describe '#has_datastream' do
|
438
|
-
class MockHasDatastream < ActiveFedora::Base
|
439
|
-
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
440
|
-
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
441
|
-
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
442
|
-
end
|
443
|
-
|
444
|
-
it 'should cache a definition of named datastream and create helper methods to add/remove/access them' do
|
445
|
-
@test_object2 = MockHasDatastream.new
|
446
|
-
#prefix should default to name in caps if not specified in has_datastream call
|
447
|
-
@test_object2.named_datastreams_desc.should == {"thumbnail"=>{:name=>"thumbnail",:prefix => "THUMB",
|
448
|
-
:type=>"ActiveFedora::Datastream", :mimeType=>"image/jpeg",
|
449
|
-
:controlGroup=>'M'},
|
450
|
-
"EAD"=> {:name=>"EAD", :prefix=>"EAD",
|
451
|
-
:type=>"ActiveFedora::Datastream", :mimeType=>"application/xml",
|
452
|
-
:controlGroup=>'M' },
|
453
|
-
"external"=> {:name=>"external", :prefix=>"EXTERNAL",
|
454
|
-
:type=>"ActiveFedora::Datastream", :controlGroup=>'E' }}
|
455
|
-
@test_object2.should respond_to(:thumbnail_append)
|
456
|
-
@test_object2.should respond_to(:thumbnail_file_append)
|
457
|
-
@test_object2.should respond_to(:thumbnail)
|
458
|
-
@test_object2.should respond_to(:thumbnail_ids)
|
459
|
-
@test_object2.should respond_to(:ead_append)
|
460
|
-
@test_object2.should respond_to(:ead_file_append)
|
461
|
-
@test_object2.should respond_to(:EAD)
|
462
|
-
@test_object2.should respond_to(:EAD_ids)
|
463
|
-
@test_object2.should respond_to(:external)
|
464
|
-
@test_object2.should respond_to(:external_ids)
|
465
|
-
end
|
466
|
-
end
|
467
424
|
end
|
@@ -44,7 +44,6 @@ describe ActiveFedora::MetadataDatastream do
|
|
44
44
|
@mock_repo.expects(:datastream).with(:pid => nil, :dsid => 'mdDs')
|
45
45
|
@mock_repo.expects(:add_datastream).with(:pid => nil, :dsid => 'mdDs', :checksumType => 'DISABLED', :versionable => true, :content => 'fake xml', :controlGroup => 'M', :dsState => 'A', :mimeType=>'text/xml')
|
46
46
|
@test_ds.expects(:to_xml).returns("fake xml")
|
47
|
-
@test_ds.expects(:dirty?).returns(true)
|
48
47
|
@test_ds.serialize!
|
49
48
|
@test_ds.save
|
50
49
|
@test_ds.mimeType.should == 'text/xml'
|
@@ -43,7 +43,6 @@ describe ActiveFedora::NokogiriDatastream do
|
|
43
43
|
it "should initialize from #xml_template if no xml is provided" do
|
44
44
|
ActiveFedora::NokogiriDatastream.expects(:xml_template).returns("<fake template/>")
|
45
45
|
n = ActiveFedora::NokogiriDatastream.new(nil, nil)
|
46
|
-
n.expects(:content).returns('')
|
47
46
|
n.ensure_xml_loaded
|
48
47
|
n.ng_xml.should be_equivalent_to("<fake template/>")
|
49
48
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe ActiveFedora::Predicates do
|
5
|
+
it 'should provide .default_predicate_namespace' do
|
6
|
+
ActiveFedora::Predicates.default_predicate_namespace.should == 'info:fedora/fedora-system:def/relations-external#'
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#predicate_mappings" do
|
10
|
+
|
11
|
+
it 'should return a hash' do
|
12
|
+
ActiveFedora::Predicates.predicate_mappings.should be_kind_of Hash
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should provide mappings to the fedora ontology via the info:fedora/fedora-system:def/relations-external default namespace mapping" do
|
16
|
+
ActiveFedora::Predicates.predicate_mappings.keys.include?(ActiveFedora::Predicates.default_predicate_namespace).should be_true
|
17
|
+
ActiveFedora::Predicates.predicate_mappings[ActiveFedora::Predicates.default_predicate_namespace].should be_kind_of Hash
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should provide predicate mappings for entire Fedora Relationship Ontology' do
|
21
|
+
desired_mappings = Hash[:is_member_of => "isMemberOf",
|
22
|
+
:has_member => "hasMember",
|
23
|
+
:is_part_of => "isPartOf",
|
24
|
+
:has_part => "hasPart",
|
25
|
+
:is_member_of_collection => "isMemberOfCollection",
|
26
|
+
:has_collection_member => "hasCollectionMember",
|
27
|
+
:is_constituent_of => "isConstituentOf",
|
28
|
+
:has_constituent => "hasConstituent",
|
29
|
+
:is_subset_of => "isSubsetOf",
|
30
|
+
:has_subset => "hasSubset",
|
31
|
+
:is_derivation_of => "isDerivationOf",
|
32
|
+
:has_derivation => "hasDerivation",
|
33
|
+
:is_dependent_of => "isDependentOf",
|
34
|
+
:has_dependent => "hasDependent",
|
35
|
+
:is_description_of => "isDescriptionOf",
|
36
|
+
:has_description => "hasDescription",
|
37
|
+
:is_metadata_for => "isMetadataFor",
|
38
|
+
:has_metadata => "hasMetadata",
|
39
|
+
:is_annotation_of => "isAnnotationOf",
|
40
|
+
:has_annotation => "hasAnnotation",
|
41
|
+
:has_equivalent => "hasEquivalent",
|
42
|
+
:conforms_to => "conformsTo",
|
43
|
+
:has_model => "hasModel"]
|
44
|
+
desired_mappings.each_pair do |k,v|
|
45
|
+
ActiveFedora::Predicates.predicate_mappings[ActiveFedora::Predicates.default_predicate_namespace].should have_key(k)
|
46
|
+
ActiveFedora::Predicates.predicate_mappings[ActiveFedora::Predicates.default_predicate_namespace][k].should == v
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should provide #predicate_lookup that maps symbols to common RELS-EXT predicates' do
|
52
|
+
ActiveFedora::Predicates.should respond_to(:predicate_lookup)
|
53
|
+
ActiveFedora::Predicates.predicate_lookup(:is_part_of).should == "isPartOf"
|
54
|
+
ActiveFedora::Predicates.predicate_lookup(:is_member_of).should == "isMemberOf"
|
55
|
+
ActiveFedora::Predicates.predicate_lookup("isPartOfCollection").should == "isPartOfCollection"
|
56
|
+
ActiveFedora::Predicates.predicate_config[:predicate_mapping].merge!({"some_namespace"=>{:has_foo=>"hasFOO"}})
|
57
|
+
ActiveFedora::Predicates.find_predicate(:has_foo).should == ["hasFOO","some_namespace"]
|
58
|
+
ActiveFedora::Predicates.predicate_lookup(:has_foo,"some_namespace").should == "hasFOO"
|
59
|
+
lambda { ActiveFedora::Predicates.predicate_lookup(:has_foo) }.should raise_error ActiveFedora::UnregisteredPredicateError
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
end
|
@@ -24,9 +24,6 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
24
24
|
end
|
25
25
|
it "from_xml should parse everything correctly" do
|
26
26
|
#originally just tested that lcsh encoding and stuff worked, but the other stuff is worth testing
|
27
|
-
stub_get("meh:leh", ['RELS-EXT', 'sensitive_passages', 'significant_passages', 'dublin_core', 'properties'])
|
28
|
-
stub_get_content("meh:leh", ['dublin_core'])
|
29
|
-
ActiveFedora::RubydoraConnection.instance.expects(:nextid).returns("meh:leh")
|
30
27
|
tmpl = OralHistorySampleModel.new.datastreams['dublin_core']
|
31
28
|
|
32
29
|
tmpl.expects(:subject_append).with('sh1')
|
@@ -69,7 +66,6 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
69
66
|
it "should have identity in and out" do
|
70
67
|
sample = fixture('oh_qdc.xml')
|
71
68
|
tmpl = OralHistorySampleModel.new.datastreams['dublin_core']
|
72
|
-
tmpl.expects(:content).returns('')
|
73
69
|
x1 = Nokogiri::XML::Document.parse(sample).xpath('/wrapper/foxml:datastream/foxml:datastreamVersion/foxml:xmlContent/dc').first.to_xml
|
74
70
|
z = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(x1, tmpl)
|
75
71
|
y = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(z.to_dc_xml, tmpl)
|
@@ -78,7 +74,6 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
78
74
|
|
79
75
|
it "should handle arbitrary attribs" do
|
80
76
|
tmpl = OralHistorySampleModel.new.datastreams['dublin_core']
|
81
|
-
tmpl.expects(:content).returns('')
|
82
77
|
tmpl.field :mycomplicated, :string, :xml_node=>'alt', :element_attrs=>{:foo=>'bar'}
|
83
78
|
tmpl.mycomplicated_values='fubar'
|
84
79
|
Nokogiri::XML(tmpl.to_dc_xml).should be_equivalent_to('<dc xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:dcterms=\'http://purl.org/dc/terms/\'><dcterms:alt foo=\'bar\'>fubar</dcterms:alt></dc>')
|
@@ -90,7 +85,6 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
90
85
|
doc = Nokogiri::XML::Document.parse(File.open( File.dirname(__FILE__)+'/../fixtures/changeme155.xml') )
|
91
86
|
stream = doc.xpath('//foxml:datastream[@ID=\'dublin_core\']/foxml:datastreamVersion/foxml:xmlContent/dc')
|
92
87
|
ds = ActiveFedora::QualifiedDublinCoreDatastream.new(nil, nil)
|
93
|
-
ds.expects(:content).returns('')
|
94
88
|
n = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(stream.to_xml, ds)
|
95
89
|
n.spatial_values.should == ["Boston [7013445]", "Dorchester [7013575]", "Roxbury [7015002]"]
|
96
90
|
n.title_values.should == ["Oral history with Frances Addelson, 1997 November 14"]
|
@@ -135,7 +129,6 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
135
129
|
it "should call .content= with to_dc_xml" do
|
136
130
|
result = @test_ds.to_dc_xml
|
137
131
|
@test_ds.expects(:content=).with(result)
|
138
|
-
@test_ds.expects(:dirty?).returns(true)
|
139
132
|
@test_ds.serialize!
|
140
133
|
end
|
141
134
|
end
|