active-fedora 3.3.2 → 4.0.0.rc1
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/Gemfile.lock +21 -22
- data/History.txt +9 -0
- data/README.textile +1 -1
- data/TODO +1 -0
- data/active-fedora.gemspec +3 -3
- data/config/fedora.yml +9 -3
- data/lib/active_fedora.rb +43 -33
- data/lib/active_fedora/base.rb +80 -31
- data/lib/active_fedora/config.rb +38 -0
- data/lib/active_fedora/content_model.rb +0 -6
- data/lib/active_fedora/datastream.rb +22 -0
- data/lib/active_fedora/delegating.rb +24 -25
- data/lib/active_fedora/digital_object.rb +2 -1
- data/lib/active_fedora/file_management.rb +1 -0
- data/lib/active_fedora/fixture_exporter.rb +1 -1
- data/lib/active_fedora/fixture_loader.rb +3 -3
- data/lib/active_fedora/metadata_datastream.rb +6 -0
- data/lib/active_fedora/model.rb +24 -5
- data/lib/active_fedora/nokogiri_datastream.rb +1 -0
- data/lib/active_fedora/ntriples_rdf_datastream.rb +0 -1
- data/lib/active_fedora/persistence.rb +2 -1
- data/lib/active_fedora/predicates.rb +27 -27
- data/lib/active_fedora/rdf_datastream.rb +104 -30
- data/lib/active_fedora/rels_ext_datastream.rb +14 -10
- data/lib/active_fedora/rubydora_connection.rb +4 -27
- data/lib/active_fedora/service_definitions.rb +2 -3
- data/lib/active_fedora/solr_digital_object.rb +22 -8
- data/lib/active_fedora/solr_service.rb +1 -1
- data/lib/active_fedora/unsaved_digital_object.rb +1 -4
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora.rake +6 -6
- data/lib/tasks/active_fedora_dev.rake +0 -1
- data/spec/fixtures/mixed_rdf_descMetadata.nt +6 -0
- data/spec/fixtures/rails_root/config/fedora.yml +3 -1
- data/spec/fixtures/sharded_fedora.yml +11 -0
- data/spec/integration/base_file_management_spec.rb +6 -3
- data/spec/integration/base_find_by_fields_spec.rb +15 -16
- data/spec/integration/base_spec.rb +11 -178
- data/spec/integration/datastream_collections_spec.rb +1 -1
- data/spec/integration/full_featured_model_spec.rb +1 -2
- data/spec/integration/model_spec.rb +8 -9
- data/spec/integration/mods_article_integration_spec.rb +1 -1
- data/spec/integration/nokogiri_datastream_spec.rb +1 -1
- data/spec/integration/ntriples_datastream_spec.rb +80 -0
- data/spec/integration/rels_ext_datastream_spec.rb +0 -1
- data/spec/integration/semantic_node_spec.rb +18 -26
- data/spec/integration/solr_service_spec.rb +51 -1
- data/{lib/active_fedora → spec}/samples/hydra-mods_article_datastream.rb +0 -0
- data/{lib/active_fedora → spec}/samples/hydra-rights_metadata_datastream.rb +0 -0
- data/{lib/active_fedora → spec}/samples/marpa-dc_datastream.rb +0 -0
- data/spec/samples/models/hydrangea_article.rb +2 -2
- data/spec/samples/samples.rb +2 -0
- data/{lib/active_fedora → spec}/samples/special_thing.rb +3 -3
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/active_fedora_spec.rb +17 -50
- data/spec/unit/base_extra_spec.rb +4 -0
- data/spec/unit/base_file_management_spec.rb +5 -2
- data/spec/unit/base_spec.rb +692 -628
- data/spec/unit/config_spec.rb +19 -0
- data/spec/unit/content_model_spec.rb +1 -24
- data/spec/unit/datastream_collections_spec.rb +11 -14
- data/spec/unit/datastreams_spec.rb +49 -54
- data/spec/unit/model_spec.rb +24 -53
- data/spec/unit/nokogiri_datastream_spec.rb +6 -1
- data/spec/unit/ntriples_datastream_spec.rb +73 -0
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -1
- data/spec/unit/relationships_spec.rb +6 -3
- data/spec/unit/rels_ext_datastream_spec.rb +19 -0
- data/spec/unit/rubydora_connection_spec.rb +2 -56
- data/spec/unit/solr_service_spec.rb +3 -1
- data/spec/unit/unsaved_digital_object_spec.rb +2 -2
- metadata +46 -33
- data/lib/active_fedora/dcrdf_datastream.rb +0 -11
- data/lib/active_fedora/relationship.rb +0 -47
- data/lib/active_fedora/samples.rb +0 -3
- data/spec/integration/dc_rdf_datastream_spec.rb +0 -24
- data/spec/unit/dc_rdf_datastream_spec.rb +0 -50
- data/spec/unit/relationship_spec.rb +0 -92
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveFedora::Config do
|
4
|
+
describe "with a single fedora instance" do
|
5
|
+
subject { ActiveFedora::Config.new('spec/fixtures/rails_root/config/fedora.yml', 'test') }
|
6
|
+
its(:path) { should == 'spec/fixtures/rails_root/config/fedora.yml'}
|
7
|
+
its(:credentials) { should == {:url => 'http://testhost.com:8983/fedora', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'}}
|
8
|
+
it { should_not be_sharded }
|
9
|
+
end
|
10
|
+
describe "with several fedora shards" do
|
11
|
+
subject { ActiveFedora::Config.new('spec/fixtures/sharded_fedora.yml', 'test') }
|
12
|
+
its(:path) { should == 'spec/fixtures/sharded_fedora.yml'}
|
13
|
+
its(:credentials) { should == [{:url => 'http://127.0.0.1:8983/fedora1', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'},
|
14
|
+
{:url => 'http://127.0.0.1:8983/fedora2', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'},
|
15
|
+
{:url => 'http://127.0.0.1:8983/fedora3', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'}]}
|
16
|
+
it { should be_sharded }
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -1,9 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
require 'active_fedora'
|
4
|
-
require 'mocha'
|
5
|
-
|
6
|
-
|
7
3
|
describe ActiveFedora::ContentModel do
|
8
4
|
|
9
5
|
before(:all) do
|
@@ -24,7 +20,7 @@ describe ActiveFedora::ContentModel do
|
|
24
20
|
|
25
21
|
before(:each) do
|
26
22
|
stub_get('__nextid__')
|
27
|
-
ActiveFedora::
|
23
|
+
ActiveFedora::Base.stubs(:assign_pid).returns("__nextid__")
|
28
24
|
Rubydora::Repository.any_instance.stubs(:client).returns(@mock_client)
|
29
25
|
@test_cmodel = ActiveFedora::ContentModel.new
|
30
26
|
end
|
@@ -55,25 +51,6 @@ describe ActiveFedora::ContentModel do
|
|
55
51
|
end
|
56
52
|
|
57
53
|
|
58
|
-
describe "#pid_from_ruby_class" do
|
59
|
-
before do
|
60
|
-
ActiveSupport::Deprecation.stubs(:warn)
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should construct pids" do
|
64
|
-
ActiveFedora::ContentModel.pid_from_ruby_class(@test_cmodel.class).should == "info:fedora/afmodel:ActiveFedora_ContentModel"
|
65
|
-
ActiveFedora::ContentModel.pid_from_ruby_class(@test_cmodel.class, :namespace => "foo", :pid_suffix => "BarBar").should == "info:fedora/foo:ActiveFedora_ContentModelBarBar"
|
66
|
-
end
|
67
|
-
it "should construct pids with the namespace declared in the model" do
|
68
|
-
ActiveFedora::ContentModel.stubs(:pid_namespace).returns("test-cModel")
|
69
|
-
ActiveFedora::ContentModel.pid_from_ruby_class(@test_cmodel.class).should == "info:fedora/test-cModel:ActiveFedora_ContentModel"
|
70
|
-
end
|
71
|
-
it "should construct pids with the suffix declared in the model" do
|
72
|
-
ActiveFedora::ContentModel.stubs(:pid_suffix).returns("-TEST-SUFFIX")
|
73
|
-
ActiveFedora::ContentModel.pid_from_ruby_class(@test_cmodel.class).should == 'info:fedora/afmodel:ActiveFedora_ContentModel-TEST-SUFFIX'
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
54
|
describe "models_asserted_by" do
|
78
55
|
it "should return an array of all of the content models asserted by the given object" do
|
79
56
|
mock_object = mock("ActiveFedora Object")
|
@@ -1,14 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
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"
|
5
|
-
|
6
3
|
describe ActiveFedora::DatastreamCollections do
|
7
4
|
describe '.has_datastream' do
|
8
5
|
before(:all) do
|
9
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
10
6
|
|
11
7
|
class MockHasDatastream < ActiveFedora::Base
|
8
|
+
include ActiveFedora::DatastreamCollections
|
12
9
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
13
10
|
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
14
11
|
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
@@ -40,8 +37,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
40
37
|
end
|
41
38
|
describe '#datastream_names' do
|
42
39
|
before(:all) do
|
43
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
44
40
|
class MockDatastreamNames < ActiveFedora::Base
|
41
|
+
include ActiveFedora::DatastreamCollections
|
45
42
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
46
43
|
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
47
44
|
end
|
@@ -55,8 +52,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
55
52
|
|
56
53
|
describe '#add_named_datastream' do
|
57
54
|
before(:all) do
|
58
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
59
55
|
class MockAddNamedDatastream < ActiveFedora::Base
|
56
|
+
include ActiveFedora::DatastreamCollections
|
60
57
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
61
58
|
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
62
59
|
has_datastream :name=>"anymime", :type=>ActiveFedora::Datastream, :controlGroup=>'M'
|
@@ -146,8 +143,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
146
143
|
|
147
144
|
describe '#add_named_file_datastream' do
|
148
145
|
before do
|
149
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
150
146
|
class MockAddNamedFileDatastream < ActiveFedora::Base
|
147
|
+
include ActiveFedora::DatastreamCollections
|
151
148
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
152
149
|
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
153
150
|
has_datastream :name=>"anymime", :type=>ActiveFedora::Datastream, :controlGroup=>'M'
|
@@ -176,8 +173,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
176
173
|
|
177
174
|
describe '#update_named_datastream' do
|
178
175
|
before do
|
179
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
180
176
|
class MockUpdateNamedDatastream < ActiveFedora::Base
|
177
|
+
include ActiveFedora::DatastreamCollections
|
181
178
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
182
179
|
end
|
183
180
|
end
|
@@ -236,8 +233,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
236
233
|
describe '#named_datastreams_desc' do
|
237
234
|
|
238
235
|
before do
|
239
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
240
236
|
class MockNamedDatastreamsDesc < ActiveFedora::Base
|
237
|
+
include ActiveFedora::DatastreamCollections
|
241
238
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
242
239
|
end
|
243
240
|
end
|
@@ -252,8 +249,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
252
249
|
|
253
250
|
describe '#is_named_datastream?' do
|
254
251
|
before do
|
255
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
256
252
|
class MockIsNamedDatastream < ActiveFedora::Base
|
253
|
+
include ActiveFedora::DatastreamCollections
|
257
254
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
258
255
|
end
|
259
256
|
end
|
@@ -268,8 +265,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
268
265
|
|
269
266
|
describe '#named_datastreams' do
|
270
267
|
before do
|
271
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
272
268
|
class MockNamedDatastreams < ActiveFedora::Base
|
269
|
+
include ActiveFedora::DatastreamCollections
|
273
270
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
274
271
|
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
275
272
|
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
@@ -318,8 +315,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
318
315
|
|
319
316
|
describe '#named_datastreams_ids' do
|
320
317
|
before do
|
321
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
322
318
|
class MockNamedDatastreamsIds < ActiveFedora::Base
|
319
|
+
include ActiveFedora::DatastreamCollections
|
323
320
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
324
321
|
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
325
322
|
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
@@ -344,8 +341,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
344
341
|
|
345
342
|
describe '#create_named_datastream_finders' do
|
346
343
|
before do
|
347
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
348
344
|
class MockCreateNamedDatastreamFinder < ActiveFedora::Base
|
345
|
+
include ActiveFedora::DatastreamCollections
|
349
346
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
350
347
|
has_datastream :name=>"high", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
351
348
|
end
|
@@ -384,8 +381,8 @@ describe ActiveFedora::DatastreamCollections do
|
|
384
381
|
|
385
382
|
describe '#create_named_datastream_update_methods' do
|
386
383
|
before do
|
387
|
-
ActiveSupport::Deprecation.expects(:warn).with(DEPRECATION_MSG)
|
388
384
|
class MockCreateNamedDatastreamUpdateMethods < ActiveFedora::Base
|
385
|
+
include ActiveFedora::DatastreamCollections
|
389
386
|
has_datastream :name=>"thumbnail",:prefix => "THUMB", :type=>ActiveFedora::Datastream, :mimeType=>"image/jpeg", :controlGroup=>'M'
|
390
387
|
has_datastream :name=>"EAD", :type=>ActiveFedora::Datastream, :mimeType=>"application/xml", :controlGroup=>'M'
|
391
388
|
has_datastream :name=>"external", :type=>ActiveFedora::Datastream, :controlGroup=>'E'
|
@@ -29,7 +29,8 @@ describe ActiveFedora::Datastreams do
|
|
29
29
|
@this_pid = increment_pid.to_s
|
30
30
|
stub_get(@this_pid)
|
31
31
|
Rubydora::Repository.any_instance.stubs(:client).returns(@mock_client)
|
32
|
-
ActiveFedora::
|
32
|
+
ActiveFedora::Base.stubs(:assign_pid).returns(@this_pid)
|
33
|
+
#ActiveFedora::RubydoraConnection.instance.stubs(:nextid).returns(@this_pid)
|
33
34
|
end
|
34
35
|
|
35
36
|
describe "creates datastreams" do
|
@@ -52,6 +53,7 @@ describe ActiveFedora::Datastreams do
|
|
52
53
|
stub_add_ds(@this_pid, ['RELS-EXT', 'someData', 'withText', 'withText2'])
|
53
54
|
|
54
55
|
@n = FooHistory.new()
|
56
|
+
FooHistory.stubs(:assign_pid).returns(@this_pid)
|
55
57
|
@n.datastreams['RELS-EXT'].expects(:changed?).returns(true).at_least_once
|
56
58
|
@n.expects(:update_index)
|
57
59
|
@n.save
|
@@ -71,7 +73,7 @@ describe ActiveFedora::Datastreams do
|
|
71
73
|
|
72
74
|
|
73
75
|
it "should create specified datastreams with appropriate control group" do
|
74
|
-
ActiveFedora.
|
76
|
+
ActiveFedora.stubs(:config_for_environment).returns(:url=>'sub_url')
|
75
77
|
stub_ingest(@this_pid)
|
76
78
|
stub_add_ds(@this_pid, ['RELS-EXT', 'DC', 'rightsMetadata', 'properties', 'descMetadata', 'UKETD_DC'])
|
77
79
|
stub_get(@this_pid, ['RELS-EXT', 'DC', 'rightsMetadata', 'properties', 'descMetadata', 'UKETD_DC'])
|
@@ -94,6 +96,7 @@ describe ActiveFedora::Datastreams do
|
|
94
96
|
|
95
97
|
end
|
96
98
|
@n = UketdObject.new()
|
99
|
+
UketdObject.stubs(:assign_pid).returns(@this_pid)
|
97
100
|
@n.save
|
98
101
|
@n.datastreams["DC"].controlGroup.should eql("X")
|
99
102
|
@n.datastreams["rightsMetadata"].controlGroup.should eql("X")
|
@@ -120,39 +123,35 @@ describe ActiveFedora::Datastreams do
|
|
120
123
|
end
|
121
124
|
stub_ingest(@this_pid)
|
122
125
|
@n = MoreFooHistory.new
|
126
|
+
MoreFooHistory.stubs(:assign_pid).returns(@this_pid)
|
123
127
|
@n.save
|
124
128
|
@n.datastreams['externalDisseminator'].dsLocation.should == "http://exampl.com/mypic.jpg"
|
125
129
|
end
|
126
130
|
|
127
|
-
|
128
|
-
|
129
|
-
|
131
|
+
describe "control_group E without a url" do
|
132
|
+
before do
|
133
|
+
class MoreFooHistory < ActiveFedora::Base
|
134
|
+
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"externalDisseminator",:control_group => "E"
|
135
|
+
end
|
136
|
+
stub_ingest(@this_pid)
|
137
|
+
@n = MoreFooHistory.new
|
138
|
+
MoreFooHistory.stubs(:assign_pid).returns(@this_pid)
|
130
139
|
end
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
@n.save
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should fail validation if a :url is not added before save" do
|
138
|
-
class MoreFooHistory < ActiveFedora::Base
|
139
|
-
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"externalDisseminator",:control_group => "E"
|
140
|
+
it "should allow :control_group => 'E' without a :url option" do
|
141
|
+
@n.datastreams['externalDisseminator'].dsLocation.present?.should == false
|
142
|
+
@n.save
|
140
143
|
end
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
144
|
+
|
145
|
+
it "should fail validation if a :url is not added before save" do
|
146
|
+
@n.datastreams['externalDisseminator'].validate_content_present.should == false
|
147
|
+
@n.save
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should pass validation if a :url is added before save" do
|
151
|
+
@n.datastreams['externalDisseminator'].dsLocation = "http://exampl.com/mypic.jpg"
|
152
|
+
@n.datastreams['externalDisseminator'].validate_content_present.should == true
|
153
|
+
@n.save
|
150
154
|
end
|
151
|
-
stub_ingest(@this_pid)
|
152
|
-
@n = MoreFooHistory.new
|
153
|
-
@n.datastreams['externalDisseminator'].dsLocation = "http://exampl.com/mypic.jpg"
|
154
|
-
@n.datastreams['externalDisseminator'].validate_content_present.should == true
|
155
|
-
@n.save
|
156
155
|
end
|
157
156
|
end
|
158
157
|
|
@@ -172,38 +171,34 @@ describe ActiveFedora::Datastreams do
|
|
172
171
|
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"externalDisseminator",:control_group => "R", :url => "http://exampl.com/mypic.jpg"
|
173
172
|
end
|
174
173
|
@n = MoreFooHistory.new
|
174
|
+
MoreFooHistory.stubs(:assign_pid).returns(@this_pid)
|
175
175
|
@n.save
|
176
176
|
end
|
177
177
|
|
178
|
-
|
179
|
-
|
180
|
-
|
178
|
+
describe "control_group R without url" do
|
179
|
+
before do
|
180
|
+
class MoreFooHistory < ActiveFedora::Base
|
181
|
+
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"externalDisseminator",:control_group => "R"
|
182
|
+
end
|
183
|
+
MoreFooHistory.stubs(:assign_pid).returns(@this_pid)
|
184
|
+
stub_ingest(@this_pid)
|
185
|
+
@n = MoreFooHistory.new
|
181
186
|
end
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
@n.save
|
186
|
-
end
|
187
|
-
|
188
|
-
it "should fail validation if a :url is not added before save" do
|
189
|
-
class MoreFooHistory < ActiveFedora::Base
|
190
|
-
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"externalDisseminator",:control_group => "R"
|
187
|
+
it "should allow :control_group => 'R' without a :url option" do
|
188
|
+
@n.datastreams['externalDisseminator'].dsLocation.present?.should == false
|
189
|
+
@n.save
|
191
190
|
end
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
191
|
+
|
192
|
+
it "should fail validation if a :url is not added before save" do
|
193
|
+
@n.datastreams['externalDisseminator'].validate_content_present.should == false
|
194
|
+
@n.save
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should pass validation if a :url is added before save" do
|
198
|
+
@n.datastreams['externalDisseminator'].dsLocation = "http://exampl.com/mypic.jpg"
|
199
|
+
@n.datastreams['externalDisseminator'].validate_content_present.should == true
|
200
|
+
@n.save
|
201
201
|
end
|
202
|
-
stub_ingest(@this_pid)
|
203
|
-
@n = MoreFooHistory.new
|
204
|
-
@n.datastreams['externalDisseminator'].dsLocation = "http://exampl.com/mypic.jpg"
|
205
|
-
@n.datastreams['externalDisseminator'].validate_content_present.should == true
|
206
|
-
@n.save
|
207
202
|
end
|
208
203
|
end
|
209
204
|
end
|
data/spec/unit/model_spec.rb
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
require 'active_fedora'
|
4
|
-
require 'active_fedora/model'
|
5
|
-
require "rexml/document"
|
6
|
-
require 'mocha'
|
7
|
-
|
8
|
-
|
9
3
|
describe ActiveFedora::Model do
|
10
4
|
|
11
5
|
before(:all) do
|
@@ -18,7 +12,7 @@ describe ActiveFedora::Model do
|
|
18
12
|
end
|
19
13
|
|
20
14
|
before(:each) do
|
21
|
-
ActiveFedora::
|
15
|
+
ActiveFedora::Base.stubs(:assign_pid).returns('_nextid_')
|
22
16
|
@test_instance = SpecModel::Basic.new
|
23
17
|
@property = stub("myproperty", :name => "mock_prop", :instance_variable_name => "@mock_prop")
|
24
18
|
SpecModel::Basic.extend(ActiveFedora::Model)
|
@@ -27,7 +21,7 @@ describe ActiveFedora::Model do
|
|
27
21
|
end
|
28
22
|
|
29
23
|
after(:all) do
|
30
|
-
|
24
|
+
Object.send(:remove_const, :SpecModel)
|
31
25
|
end
|
32
26
|
|
33
27
|
it 'should provide #attribute_set and #attribute_get' do
|
@@ -35,24 +29,6 @@ describe ActiveFedora::Model do
|
|
35
29
|
SpecModel::Basic.should respond_to(:attribute_get)
|
36
30
|
end
|
37
31
|
|
38
|
-
describe "#attribute_set" do
|
39
|
-
it "should look up the property's ivar name from properties hash" do
|
40
|
-
pending
|
41
|
-
SpecModel::Basic.expects(:properties).with(@test_property.name)
|
42
|
-
SpecModel::Basic.expects(:set_instance_variable).with(@test_property.instance_variable_name, "new value")
|
43
|
-
SpecModel::Basic.attribute_set(@test_property.name, "new value")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "#attribute_get" do
|
48
|
-
it "should look up the property's ivar name from properties hash" do
|
49
|
-
pending
|
50
|
-
SpecModel::Basic.expects(:properties).with(@test_property.name)
|
51
|
-
SpecModel::Basic.expects(:get_instance_variable).with(@test_property.instance_variable_name)
|
52
|
-
SpecModel::Basic.attribute_get(@test_property.name, "new value")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
32
|
it 'should provide #create_property_getter' do
|
57
33
|
SpecModel::Basic.should respond_to(:create_property_getter)
|
58
34
|
end
|
@@ -104,33 +80,15 @@ describe ActiveFedora::Model do
|
|
104
80
|
mock_result.expects(:hits).returns([{"id" => "changeme:30"}, {"id" => "changeme:22"}])
|
105
81
|
mock_solr.expects(:query).with('has_model_s:info\\:fedora/afmodel\\:SpecModel_Basic', :rows=>1001).returns(mock_result)
|
106
82
|
ActiveFedora::SolrService.expects(:instance).returns(mock("SolrService", :conn => mock_solr))
|
107
|
-
|
108
|
-
|
83
|
+
SpecModel::Basic.expects(:load_instance).with("changeme:30").returns("Fake Object1")
|
84
|
+
SpecModel::Basic.expects(:load_instance).with("changeme:22").returns("Fake Object2")
|
109
85
|
SpecModel::Basic.find(:all, :rows=>1001).should == ["Fake Object1", "Fake Object2"]
|
110
86
|
end
|
111
87
|
|
112
88
|
it "(String) should query solr for an object with the given id and return that object" do
|
113
|
-
|
114
|
-
|
89
|
+
SpecModel::Basic.expects(:load_instance).with("changeme:30").returns("Fake Object")
|
115
90
|
SpecModel::Basic.find("changeme:30").should == "Fake Object"
|
116
91
|
end
|
117
|
-
|
118
|
-
describe"(:pid => xxx)" do
|
119
|
-
it "should pull the inner object from fedora if it already exists in fedora" do
|
120
|
-
pending
|
121
|
-
ActiveFedora::RubydoraConnection.instance.expects(:save).never
|
122
|
-
mock_obj = mock("Fedora Object")
|
123
|
-
ActiveFedora::RubydoraConnection.instance.expects(:find_objects).returns([mock_obj])
|
124
|
-
ActiveFedora::Base.new(:pid=>"test:1").inner_object.should equal(mock_obj)
|
125
|
-
end
|
126
|
-
it "should save the inner_object to fedora if it does not already exist" do
|
127
|
-
pending
|
128
|
-
ActiveFedora::RubydoraConnection.instance.expects(:save)
|
129
|
-
ActiveFedora::RubydoraConnection.instance.expects(:find_objects).returns([])
|
130
|
-
ActiveFedora::Base.new(:pid=>"test:1")
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
92
|
end
|
135
93
|
|
136
94
|
describe '#count' do
|
@@ -178,10 +136,9 @@ describe ActiveFedora::Model do
|
|
178
136
|
end
|
179
137
|
|
180
138
|
describe "load_instance" do
|
181
|
-
it "should use
|
182
|
-
|
183
|
-
|
184
|
-
ActiveFedora::RubydoraConnection.expects(:instance).returns(mock_repo)
|
139
|
+
it "should use SpecModel::Basic.allocate.init_with to instantiate an object" do
|
140
|
+
SpecModel::Basic.any_instance.expects(:init_with)
|
141
|
+
SpecModel::Basic.expects(:connection_for_pid).with("_PID_")
|
185
142
|
SpecModel::Basic.load_instance("_PID_")
|
186
143
|
end
|
187
144
|
end
|
@@ -193,15 +150,29 @@ describe ActiveFedora::Model do
|
|
193
150
|
include ActiveFedora::Model
|
194
151
|
end
|
195
152
|
end
|
153
|
+
|
196
154
|
end
|
197
155
|
|
198
156
|
after :all do
|
199
157
|
SpecModel.send(:remove_const, :CamelCased)
|
200
158
|
end
|
159
|
+
subject {SpecModel::CamelCased}
|
201
160
|
|
202
|
-
|
203
|
-
|
161
|
+
its(:to_class_uri) {should == 'info:fedora/afmodel:SpecModel_CamelCased' }
|
162
|
+
|
163
|
+
context "with the namespace declared in the model" do
|
164
|
+
before do
|
165
|
+
subject.stubs(:pid_namespace).returns("test-cModel")
|
166
|
+
end
|
167
|
+
its(:to_class_uri) {should == 'info:fedora/test-cModel:SpecModel_CamelCased' }
|
204
168
|
end
|
169
|
+
context "with the suffix declared in the model" do
|
170
|
+
before do
|
171
|
+
subject.stubs(:pid_suffix).returns("-TEST-SUFFIX")
|
172
|
+
end
|
173
|
+
its(:to_class_uri) {should == 'info:fedora/afmodel:SpecModel_CamelCased-TEST-SUFFIX' }
|
174
|
+
end
|
175
|
+
|
205
176
|
|
206
177
|
it "should turn an afmodel URI into a Model class name" do
|
207
178
|
ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:SpecModel_CamelCased').should == ['SpecModel::CamelCased', 'afmodel']
|