active-fedora 6.4.2 → 6.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.mailmap +15 -6
- data/active-fedora.gemspec +2 -2
- data/gemfiles/gemfile.rails4 +1 -1
- data/lib/active_fedora.rb +8 -12
- data/lib/active_fedora/digital_object.rb +1 -0
- data/lib/active_fedora/model.rb +6 -6
- data/lib/active_fedora/om_datastream.rb +14 -3
- data/lib/active_fedora/querying.rb +6 -5
- data/lib/active_fedora/solr_service.rb +15 -10
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora_dev.rake +1 -17
- data/spec/config_helper.rb +1 -1
- data/spec/{unit → integration}/auditable_spec.rb +5 -7
- data/spec/integration/base_spec.rb +2 -1
- data/spec/integration/bug_spec.rb +6 -0
- data/spec/integration/complex_rdf_datastream_spec.rb +3 -3
- data/spec/integration/model_spec.rb +8 -7
- data/spec/integration/om_datastream_spec.rb +78 -73
- data/spec/integration/rdf_nested_attributes_spec.rb +2 -2
- data/spec/integration/solr_instance_loader_spec.rb +9 -4
- data/spec/integration/solr_service_spec.rb +2 -8
- data/spec/support/mock_fedora.rb +6 -6
- data/spec/unit/active_fedora_spec.rb +12 -1
- data/spec/unit/base_extra_spec.rb +10 -10
- data/spec/unit/base_spec.rb +18 -18
- data/spec/unit/content_model_spec.rb +6 -6
- data/spec/unit/datastream_spec.rb +1 -1
- data/spec/unit/datastreams_spec.rb +19 -19
- data/spec/unit/has_and_belongs_to_many_collection_spec.rb +6 -6
- data/spec/unit/has_many_collection_spec.rb +3 -3
- data/spec/unit/ntriples_datastream_spec.rb +2 -2
- data/spec/unit/om_datastream_spec.rb +6 -6
- data/spec/unit/query_spec.rb +11 -11
- data/spec/unit/rdf_list_spec.rb +2 -2
- data/spec/unit/rdfxml_rdf_datastream_spec.rb +2 -2
- data/spec/unit/rels_ext_datastream_spec.rb +6 -6
- data/spec/unit/semantic_node_spec.rb +5 -5
- data/spec/unit/solr_config_options_spec.rb +1 -1
- data/spec/unit/solr_service_spec.rb +42 -20
- metadata +10 -23
- data/spec/fixtures/auditable.foxml.xml +0 -110
- data/spec/fixtures/changeme155.xml +0 -255
- data/spec/fixtures/test_12.foxml.xml +0 -60
- data/spec/fixtures/test_fixture_mods_article1.foxml.xml +0 -234
- data/spec/fixtures/test_fixture_mods_article2.foxml.xml +0 -234
- data/spec/hydrangea_fixture_mods_article1.foxml.xml +0 -225
- data/spec/integration/mods_article_integration_spec.rb +0 -22
@@ -66,7 +66,7 @@ describe "Nesting attribute behavior of RDFDatastream" do
|
|
66
66
|
Object.send(:remove_const, :ComplexRDFDatastream)
|
67
67
|
Object.send(:remove_const, :DummyMADS)
|
68
68
|
end
|
69
|
-
subject { ComplexRDFDatastream.new(
|
69
|
+
subject { ComplexRDFDatastream.new(double('inner object', :pid=>'foo', :new? =>true), 'descMetadata') }
|
70
70
|
let(:params) do
|
71
71
|
{ myResource:
|
72
72
|
{
|
@@ -138,7 +138,7 @@ describe "Nesting attribute behavior of RDFDatastream" do
|
|
138
138
|
after(:each) do
|
139
139
|
Object.send(:remove_const, :SpecDatastream)
|
140
140
|
end
|
141
|
-
subject { SpecDatastream.new(
|
141
|
+
subject { SpecDatastream.new(double('inner object', :pid=>'foo', :new? =>true), 'descMetadata') }
|
142
142
|
before do
|
143
143
|
subject.attributes = { parts_attributes: [
|
144
144
|
{label: 'Alternator'},
|
@@ -3,6 +3,11 @@ require 'spec_helper'
|
|
3
3
|
require 'active_fedora'
|
4
4
|
|
5
5
|
describe ActiveFedora::SolrInstanceLoader do
|
6
|
+
before(:all) do
|
7
|
+
@test_object = ActiveFedora::Base.create
|
8
|
+
@test_object2 = ActiveFedora::Base.create
|
9
|
+
end
|
10
|
+
|
6
11
|
let(:context) { ActiveFedora::Base }
|
7
12
|
let(:pid) { nil }
|
8
13
|
let(:solr_doc) { nil }
|
@@ -10,7 +15,7 @@ describe ActiveFedora::SolrInstanceLoader do
|
|
10
15
|
subject { ActiveFedora::SolrInstanceLoader.new(context, pid, solr_doc) }
|
11
16
|
|
12
17
|
describe 'existing pid' do
|
13
|
-
let(:pid) {
|
18
|
+
let(:pid) { @test_object.pid }
|
14
19
|
describe 'without a solr document' do
|
15
20
|
it 'it finds the SOLR document and casts into an AF::Base object' do
|
16
21
|
expect(subject.object).to eq(active_fedora_object)
|
@@ -23,7 +28,7 @@ describe ActiveFedora::SolrInstanceLoader do
|
|
23
28
|
end
|
24
29
|
end
|
25
30
|
describe 'with a mismatching solr document' do
|
26
|
-
let(:mismatching_pid) {
|
31
|
+
let(:mismatching_pid) { @test_object2.pid }
|
27
32
|
let(:solr_doc) { ActiveFedora::Base.find_with_conditions(:id=>mismatching_pid).first }
|
28
33
|
it 'it raise ObjectNotFoundError' do
|
29
34
|
expect {
|
@@ -33,7 +38,7 @@ describe ActiveFedora::SolrInstanceLoader do
|
|
33
38
|
end
|
34
39
|
end
|
35
40
|
describe 'missing pid' do
|
36
|
-
let(:pid) { 'test:
|
41
|
+
let(:pid) { 'test:missing_pid' }
|
37
42
|
describe 'without a solr document' do
|
38
43
|
it 'it raise ObjectNotFoundError' do
|
39
44
|
expect {
|
@@ -50,7 +55,7 @@ describe ActiveFedora::SolrInstanceLoader do
|
|
50
55
|
end
|
51
56
|
end
|
52
57
|
describe 'with a mismatching solr document' do
|
53
|
-
let(:mismatching_pid) {
|
58
|
+
let(:mismatching_pid) { @test_object2.pid }
|
54
59
|
let(:solr_doc) { ActiveFedora::Base.find_with_conditions(:id=>mismatching_pid).first }
|
55
60
|
it 'it raise ObjectNotFoundError' do
|
56
61
|
expect {
|
@@ -9,9 +9,6 @@ describe ActiveFedora::SolrService do
|
|
9
9
|
def self.pid_namespace
|
10
10
|
"foo"
|
11
11
|
end
|
12
|
-
has_metadata :name => "properties", :type => ActiveFedora::SimpleDatastream do |m|
|
13
|
-
m.field "holding_id", :string
|
14
|
-
end
|
15
12
|
|
16
13
|
has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
17
14
|
end
|
@@ -19,8 +16,7 @@ describe ActiveFedora::SolrService do
|
|
19
16
|
@test_object.label = 'test_object'
|
20
17
|
@foo_object = FooObject.new
|
21
18
|
@foo_object.label = 'foo_object'
|
22
|
-
attributes = {"
|
23
|
-
"language"=>{0=>"Italian"},
|
19
|
+
attributes = {"language"=>{0=>"Italian"},
|
24
20
|
"creator"=>{0=>"Linguist, A."},
|
25
21
|
"geography"=>{0=>"Italy"},
|
26
22
|
"title"=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
|
@@ -30,7 +26,6 @@ describe ActiveFedora::SolrService do
|
|
30
26
|
@profiles = {
|
31
27
|
'test' => @test_object.inner_object.profile,
|
32
28
|
'foo' => @foo_object.inner_object.profile,
|
33
|
-
'foo_properties' => @foo_object.datastreams['properties'].profile,
|
34
29
|
'foo_descMetadata' => @foo_object.datastreams['descMetadata'].profile
|
35
30
|
}
|
36
31
|
@foo_content = @foo_object.datastreams['descMetadata'].content
|
@@ -61,14 +56,13 @@ describe ActiveFedora::SolrService do
|
|
61
56
|
['test_object','foo_object'].should include(r.label)
|
62
57
|
@test_object.inner_object.profile.should == @profiles['test']
|
63
58
|
@foo_object.inner_object.profile.should == @profiles['foo']
|
64
|
-
@foo_object.datastreams['properties'].profile.should == @profiles['foo_properties']
|
65
59
|
@foo_object.datastreams['descMetadata'].profile.should == @profiles['foo_descMetadata']
|
66
60
|
@foo_object.datastreams['descMetadata'].content.should be_equivalent_to(@foo_content)
|
67
61
|
end
|
68
62
|
end
|
69
63
|
|
70
64
|
it 'should instantiate all datastreams in the solr doc, even ones undeclared by the class' do
|
71
|
-
obj = ActiveFedora::Base.load_instance_from_solr
|
65
|
+
obj = ActiveFedora::Base.load_instance_from_solr @foo_object.pid
|
72
66
|
obj.datastreams.keys.should include('descMetadata')
|
73
67
|
end
|
74
68
|
|
data/spec/support/mock_fedora.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
def mock_client
|
2
2
|
return @mock_client if @mock_client
|
3
|
-
@mock_client =
|
4
|
-
@getter =
|
3
|
+
@mock_client = double("client")
|
4
|
+
@getter = double("getter")
|
5
5
|
@getter.stub(:get).and_return('')
|
6
6
|
@mock_client.stub(:[]).with("describe?xml=true").and_return('')
|
7
7
|
@mock_client
|
@@ -10,7 +10,7 @@ end
|
|
10
10
|
def stub_get(pid, datastreams=nil, record_exists=false)
|
11
11
|
pid.gsub!(/:/, '%3A')
|
12
12
|
if record_exists
|
13
|
-
mock_client.stub(:[]).with("objects/#{pid}?format=xml").and_return(
|
13
|
+
mock_client.stub(:[]).with("objects/#{pid}?format=xml").and_return(double('get getter', :get=>'foobar'))
|
14
14
|
else
|
15
15
|
mock_client.stub(:[]).with("objects/#{pid}?format=xml").and_raise(RestClient::ResourceNotFound)
|
16
16
|
end
|
@@ -23,7 +23,7 @@ end
|
|
23
23
|
|
24
24
|
def stub_ingest(pid=nil)
|
25
25
|
n = pid ? pid.gsub(/:/, '%3A') : nil
|
26
|
-
mock_client.should_receive(:[]).with("objects/#{n || 'new'}").and_return(
|
26
|
+
mock_client.should_receive(:[]).with("objects/#{n || 'new'}").and_return(double("ingester", :post=>pid))
|
27
27
|
end
|
28
28
|
|
29
29
|
def stub_add_ds(pid, dsids)
|
@@ -32,14 +32,14 @@ def stub_add_ds(pid, dsids)
|
|
32
32
|
client = mock_client.stub(:[]).with do |params|
|
33
33
|
/objects\/#{pid}\/datastreams\/#{dsid}/.match(params)
|
34
34
|
end
|
35
|
-
client.and_return(
|
35
|
+
client.and_return(double("ds_adder", :post=>pid, :get=>''))
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
def stub_get_content(pid, dsids)
|
40
40
|
pid.gsub!(/:/, '%3A')
|
41
41
|
dsids.each do |dsid|
|
42
|
-
mock_client.stub(:[]).with { |params| /objects\/#{pid}\/datastreams\/#{dsid}\/content/.match(params)}.and_return(
|
42
|
+
mock_client.stub(:[]).with { |params| /objects\/#{pid}\/datastreams\/#{dsid}\/content/.match(params)}.and_return(double("content_accessor", :post=>pid, :get=>''))
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -104,11 +104,22 @@ describe ActiveFedora do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
describe "#class_from_string" do
|
107
|
+
before do
|
108
|
+
module ParentClass
|
109
|
+
class SiblingClass
|
110
|
+
end
|
111
|
+
class OtherSiblingClass
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
107
115
|
it "should return class constants based on strings" do
|
108
116
|
ActiveFedora.class_from_string("Om").should == Om
|
109
117
|
ActiveFedora.class_from_string("ActiveFedora::RdfNode::TermProxy").should == ActiveFedora::RdfNode::TermProxy
|
110
118
|
ActiveFedora.class_from_string("TermProxy", ActiveFedora::RdfNode).should == ActiveFedora::RdfNode::TermProxy
|
111
|
-
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should find sibling classes" do
|
122
|
+
ActiveFedora.class_from_string("SiblingClass", ParentClass::OtherSiblingClass).should == ParentClass::SiblingClass
|
112
123
|
end
|
113
124
|
end
|
114
125
|
end
|
@@ -8,19 +8,19 @@ describe ActiveFedora::Base do
|
|
8
8
|
|
9
9
|
describe ".update_index" do
|
10
10
|
before do
|
11
|
-
mock_conn =
|
11
|
+
mock_conn = double("SolrConnection")
|
12
12
|
mock_conn.should_receive(:add)
|
13
13
|
mock_conn.should_receive(:commit)
|
14
|
-
mock_ss =
|
14
|
+
mock_ss = double("SolrService")
|
15
15
|
mock_ss.stub(:conn).and_return(mock_conn)
|
16
16
|
ActiveFedora::SolrService.stub(:instance).and_return(mock_ss)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should call .to_solr on all SimpleDatastreams AND RelsExtDatastreams and pass the resulting document to solr" do
|
20
20
|
# Actually uses self.to_solr internally to gather solr info from all metadata datastreams
|
21
|
-
mock1 =
|
22
|
-
mock2 =
|
23
|
-
mock3 =
|
21
|
+
mock1 = double("ds1", :to_solr => {})
|
22
|
+
mock2 = double("ds2", :to_solr => {})
|
23
|
+
mock3 = double("RELS-EXT", :to_solr => {})
|
24
24
|
|
25
25
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
26
26
|
mock1.should_receive(:solrize_profile).and_return({})
|
@@ -33,9 +33,9 @@ describe ActiveFedora::Base do
|
|
33
33
|
|
34
34
|
it "should call .to_solr on all RDFDatastreams and pass the resulting document to solr" do
|
35
35
|
# Actually uses self.to_solr internally to gather solr info from all metadata datastreams
|
36
|
-
mock1 =
|
37
|
-
mock2 =
|
38
|
-
mock3 =
|
36
|
+
mock1 = double("ds1", :to_solr => {})
|
37
|
+
mock2 = double("ds2", :to_solr => {})
|
38
|
+
mock3 = double("RELS-EXT", :to_solr => {})
|
39
39
|
|
40
40
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
41
41
|
mock1.should_receive(:solrize_profile).and_return({})
|
@@ -59,10 +59,10 @@ describe ActiveFedora::Base do
|
|
59
59
|
|
60
60
|
it "should delete object from repository and index" do
|
61
61
|
@test_object.inner_object.stub(:delete)
|
62
|
-
mock_conn =
|
62
|
+
mock_conn = double("SolrConnection")
|
63
63
|
mock_conn.should_receive(:delete_by_id).with("__DO_NOT_USE__")
|
64
64
|
mock_conn.should_receive(:commit)
|
65
|
-
mock_ss =
|
65
|
+
mock_ss = double("SolrService")
|
66
66
|
mock_ss.stub(:conn).and_return(mock_conn)
|
67
67
|
ActiveFedora::SolrService.stub(:instance).and_return(mock_ss)
|
68
68
|
@test_object.delete
|
data/spec/unit/base_spec.rb
CHANGED
@@ -28,8 +28,8 @@ describe ActiveFedora::Base do
|
|
28
28
|
it "should use fedora to generate pids" do
|
29
29
|
# TODO: This juggling of Fedora credentials & establishing connections should be handled by an establish_fedora_connection method,
|
30
30
|
# possibly wrap it all into a fedora_connection method - MZ 06-05-2012
|
31
|
-
stubfedora =
|
32
|
-
stubfedora.should_receive(:connection).and_return(
|
31
|
+
stubfedora = double("Fedora")
|
32
|
+
stubfedora.should_receive(:connection).and_return(double("Connection", :mint =>"sample:newpid"))
|
33
33
|
# Should use ActiveFedora.config.credentials as a single hash rather than an array of shards
|
34
34
|
ActiveFedora::RubydoraConnection.should_receive(:new).with(ActiveFedora.config.credentials).and_return(stubfedora)
|
35
35
|
ActiveFedora::Base.assign_pid(ActiveFedora::Base.new.inner_object)
|
@@ -49,9 +49,9 @@ describe ActiveFedora::Base do
|
|
49
49
|
end
|
50
50
|
describe "assign_pid" do
|
51
51
|
it "should always use the first shard to generate pids" do
|
52
|
-
stubhard1 =
|
53
|
-
stubhard2 =
|
54
|
-
stubhard1.should_receive(:connection).and_return(
|
52
|
+
stubhard1 = double("Shard")
|
53
|
+
stubhard2 = double("Shard")
|
54
|
+
stubhard1.should_receive(:connection).and_return(double("Connection", :mint =>"sample:newpid"))
|
55
55
|
stubhard2.should_receive(:connection).never
|
56
56
|
ActiveFedora::Base.fedora_connection = {0 => stubhard1, 1 => stubhard2}
|
57
57
|
ActiveFedora::Base.assign_pid(ActiveFedora::Base.new.inner_object)
|
@@ -84,8 +84,8 @@ describe ActiveFedora::Base do
|
|
84
84
|
describe "reindex_everything" do
|
85
85
|
it "should call update_index on every object" do
|
86
86
|
Rubydora::Repository.any_instance.should_receive(:search).
|
87
|
-
and_yield(
|
88
|
-
mock_update =
|
87
|
+
and_yield(double(pid:'XXX')).and_yield(double(pid:'YYY')).and_yield(double(pid:'ZZZ'))
|
88
|
+
mock_update = double(:mock_obj)
|
89
89
|
mock_update.should_receive(:update_index).exactly(3).times
|
90
90
|
ActiveFedora::Base.should_receive(:find).with('XXX', :cast=>true).and_return(mock_update)
|
91
91
|
ActiveFedora::Base.should_receive(:find).with('YYY', :cast=>true).and_return(mock_update)
|
@@ -212,12 +212,12 @@ describe ActiveFedora::Base do
|
|
212
212
|
@test_history.withText.should == @test_history.datastreams['withText']
|
213
213
|
end
|
214
214
|
it "dynamic accessors should convert dashes to underscores" do
|
215
|
-
ds =
|
215
|
+
ds = double('datastream', :dsid=>'eac-cpf')
|
216
216
|
@test_history.add_datastream(ds)
|
217
217
|
@test_history.eac_cpf.should == ds
|
218
218
|
end
|
219
219
|
it "dynamic accessors should not convert datastreams named with underscore" do
|
220
|
-
ds =
|
220
|
+
ds = double('datastream', :dsid=>'foo_bar')
|
221
221
|
@test_history.add_datastream(ds)
|
222
222
|
@test_history.foo_bar.should == ds
|
223
223
|
end
|
@@ -259,7 +259,7 @@ describe ActiveFedora::Base do
|
|
259
259
|
end
|
260
260
|
|
261
261
|
it "should update the RELS-EXT datastream and set the datastream as dirty when relationships are added" do
|
262
|
-
mock_ds =
|
262
|
+
mock_ds = double("Rels-Ext")
|
263
263
|
mock_ds.stub(:content_will_change!)
|
264
264
|
@test_object.datastreams["RELS-EXT"] = mock_ds
|
265
265
|
@test_object.add_relationship(:is_member_of, "info:fedora/demo:5")
|
@@ -347,7 +347,7 @@ describe ActiveFedora::Base do
|
|
347
347
|
|
348
348
|
describe "#create" do
|
349
349
|
it "should build a new record and save it" do
|
350
|
-
obj =
|
350
|
+
obj = double()
|
351
351
|
obj.should_receive(:save)
|
352
352
|
FooHistory.should_receive(:new).and_return(obj)
|
353
353
|
@hist = FooHistory.create(:fubar=>'ta', :swank=>'da')
|
@@ -436,9 +436,9 @@ describe ActiveFedora::Base do
|
|
436
436
|
end
|
437
437
|
|
438
438
|
it "should call .to_solr on all SimpleDatastreams and OmDatastreams, passing the resulting document to solr" do
|
439
|
-
mock1 =
|
440
|
-
mock2 =
|
441
|
-
ngds =
|
439
|
+
mock1 = double("ds1", :to_solr => {})
|
440
|
+
mock2 = double("ds2", :to_solr => {})
|
441
|
+
ngds = double("ngds", :to_solr => {})
|
442
442
|
ngds.should_receive(:solrize_profile)
|
443
443
|
mock1.should_receive(:solrize_profile)
|
444
444
|
mock2.should_receive(:solrize_profile)
|
@@ -448,7 +448,7 @@ describe ActiveFedora::Base do
|
|
448
448
|
@test_object.to_solr
|
449
449
|
end
|
450
450
|
it "should call .to_solr on all RDFDatastreams, passing the resulting document to solr" do
|
451
|
-
mock =
|
451
|
+
mock = double("ds1", :to_solr => {})
|
452
452
|
mock.should_receive(:solrize_profile)
|
453
453
|
|
454
454
|
@test_object.should_receive(:datastreams).twice.and_return({:ds1 => mock})
|
@@ -484,7 +484,7 @@ describe ActiveFedora::Base do
|
|
484
484
|
|
485
485
|
describe "get_values_from_datastream" do
|
486
486
|
it "should look up the named datastream and call get_values with the given pointer/field_name" do
|
487
|
-
mock_ds =
|
487
|
+
mock_ds = double("Datastream", :get_values=>["value1", "value2"])
|
488
488
|
@test_object.stub(:datastreams).and_return({"ds1"=>mock_ds})
|
489
489
|
@test_object.get_values_from_datastream("ds1", "--my xpath--").should == ["value1", "value2"]
|
490
490
|
end
|
@@ -492,8 +492,8 @@ describe ActiveFedora::Base do
|
|
492
492
|
|
493
493
|
describe "update_datastream_attributes" do
|
494
494
|
it "should look up any datastreams specified as keys in the given hash and call update_attributes on the datastream" do
|
495
|
-
mock_desc_metadata =
|
496
|
-
mock_properties =
|
495
|
+
mock_desc_metadata = double("descMetadata")
|
496
|
+
mock_properties = double("properties")
|
497
497
|
mock_ds_hash = {'descMetadata'=>mock_desc_metadata, 'properties'=>mock_properties}
|
498
498
|
|
499
499
|
ds_values_hash = {
|
@@ -53,12 +53,12 @@ describe ActiveFedora::ContentModel do
|
|
53
53
|
|
54
54
|
describe "models_asserted_by" do
|
55
55
|
it "should return an array of all of the content models asserted by the given object" do
|
56
|
-
mock_object =
|
56
|
+
mock_object = double("ActiveFedora Object")
|
57
57
|
mock_object.should_receive(:relationships).with(:has_model).and_return(["info:fedora/fedora-system:ServiceDefinition-3.0", "info:fedora/afmodel:SampleModel", "info:fedora/afmodel:NonDefinedModel"])
|
58
58
|
ActiveFedora::ContentModel.models_asserted_by(mock_object).should == ["info:fedora/fedora-system:ServiceDefinition-3.0", "info:fedora/afmodel:SampleModel", "info:fedora/afmodel:NonDefinedModel"]
|
59
59
|
end
|
60
60
|
it "should return an empty array if the object doesn't have a RELS-EXT datastream" do
|
61
|
-
mock_object =
|
61
|
+
mock_object = double("ActiveFedora Object")
|
62
62
|
mock_object.should_receive(:relationships).with(:has_model).and_return([])
|
63
63
|
ActiveFedora::ContentModel.models_asserted_by(mock_object).should == []
|
64
64
|
end
|
@@ -66,23 +66,23 @@ describe ActiveFedora::ContentModel do
|
|
66
66
|
|
67
67
|
describe "known_models_asserted_by" do
|
68
68
|
it "should figure out the applicable models to load" do
|
69
|
-
mock_object =
|
69
|
+
mock_object = double("ActiveFedora Object")
|
70
70
|
mock_object.should_receive(:relationships).with(:has_model).and_return(["info:fedora/fedora-system:ServiceDefinition-3.0", "info:fedora/afmodel:SampleModel", "info:fedora/afmodel:NonDefinedModel"])
|
71
71
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [SampleModel]
|
72
72
|
end
|
73
73
|
it "should support namespaced models" do
|
74
74
|
pending "This is harder than it looks."
|
75
|
-
mock_object =
|
75
|
+
mock_object = double("ActiveFedora Object")
|
76
76
|
mock_object.should_receive(:relationships).with(:has_model).and_return(["info:fedora/afmodel:Sample_NamespacedModel"])
|
77
77
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [Sample::NamespacedModel]
|
78
78
|
end
|
79
79
|
it "should default to using ActiveFedora::Base as the model" do
|
80
|
-
mock_object =
|
80
|
+
mock_object = double("ActiveFedora Object")
|
81
81
|
mock_object.should_receive(:relationships).with(:has_model).and_return(["info:fedora/afmodel:NonDefinedModel"])
|
82
82
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [ActiveFedora::Base]
|
83
83
|
end
|
84
84
|
it "should still work even if the object doesn't have a RELS-EXT datastream" do
|
85
|
-
mock_object =
|
85
|
+
mock_object = double("ActiveFedora Object")
|
86
86
|
mock_object.should_receive(:relationships).with(:has_model).and_return([])
|
87
87
|
ActiveFedora::ContentModel.known_models_for(mock_object).should == [ActiveFedora::Base]
|
88
88
|
end
|
@@ -99,7 +99,7 @@ describe ActiveFedora::Datastream do
|
|
99
99
|
</datastreamProfile>"
|
100
100
|
EOS
|
101
101
|
|
102
|
-
mock_repo =
|
102
|
+
mock_repo = double('repository', :config=>{})
|
103
103
|
@test_object.inner_object.stub(:repository).and_return(mock_repo)
|
104
104
|
mock_repo.should_receive(:datastream).with(:dsid => 'abcd', :pid => @test_object.pid).and_return(ds_profile)
|
105
105
|
@test_datastream.size.should == 9999
|
@@ -40,8 +40,8 @@ describe ActiveFedora::Datastreams do
|
|
40
40
|
|
41
41
|
describe "#serialize_datastreams" do
|
42
42
|
it "should touch each datastream" do
|
43
|
-
m1 =
|
44
|
-
m2 =
|
43
|
+
m1 = double()
|
44
|
+
m2 = double()
|
45
45
|
|
46
46
|
m1.should_receive(:serialize!)
|
47
47
|
m2.should_receive(:serialize!)
|
@@ -54,7 +54,7 @@ describe ActiveFedora::Datastreams do
|
|
54
54
|
it "should infer dsLocations for E datastreams without hitting Fedora" do
|
55
55
|
|
56
56
|
mock_specs = {:e => { :disseminator => 'xyz' }}
|
57
|
-
mock_ds =
|
57
|
+
mock_ds = double(:controlGroup => 'E')
|
58
58
|
ActiveFedora::Base.stub(:ds_specs => mock_specs)
|
59
59
|
ActiveFedora.stub(:config_for_environment => { :url => 'http://localhost'})
|
60
60
|
subject.stub(:pid => 'test:1', :datastreams => {:e => mock_ds})
|
@@ -65,7 +65,7 @@ describe ActiveFedora::Datastreams do
|
|
65
65
|
|
66
66
|
describe "#corresponding_datastream_name" do
|
67
67
|
before(:each) do
|
68
|
-
subject.stub(:datastreams => { 'abc' =>
|
68
|
+
subject.stub(:datastreams => { 'abc' => double(), 'a_b_c' => double(), 'a-b' => double()})
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should use the name, if it exists" do
|
@@ -92,27 +92,27 @@ describe ActiveFedora::Datastreams do
|
|
92
92
|
it "should look up the ds_spec" do
|
93
93
|
mock_dsspec = { :type => nil }
|
94
94
|
subject.stub(:ds_specs => {'abc' => mock_dsspec})
|
95
|
-
subject.configure_datastream(
|
95
|
+
subject.configure_datastream(double(:dsid => 'abc'))
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should be ok if there is no ds spec" do
|
99
|
-
mock_dsspec =
|
99
|
+
mock_dsspec = double()
|
100
100
|
subject.stub(:ds_specs => {})
|
101
|
-
subject.configure_datastream(
|
101
|
+
subject.configure_datastream(double(:dsid => 'abc'))
|
102
102
|
end
|
103
103
|
|
104
104
|
it "should configure RelsExtDatastream" do
|
105
105
|
mock_dsspec = { :type => ActiveFedora::RelsExtDatastream }
|
106
106
|
subject.stub(:ds_specs => {'abc' => mock_dsspec})
|
107
107
|
|
108
|
-
ds =
|
108
|
+
ds = double(:dsid => 'abc')
|
109
109
|
ds.should_receive(:model=).with(subject)
|
110
110
|
|
111
111
|
subject.configure_datastream(ds)
|
112
112
|
end
|
113
113
|
|
114
114
|
it "should run a Proc" do
|
115
|
-
ds =
|
115
|
+
ds = double(:dsid => 'abc')
|
116
116
|
@count = 0
|
117
117
|
mock_dsspec = { :block => lambda { |x| @count += 1 } }
|
118
118
|
subject.stub(:ds_specs => {'abc' => mock_dsspec})
|
@@ -139,7 +139,7 @@ describe ActiveFedora::Datastreams do
|
|
139
139
|
|
140
140
|
describe "#add_datastream" do
|
141
141
|
it "should add the datastream to the object" do
|
142
|
-
ds =
|
142
|
+
ds = double(:dsid => 'Abc')
|
143
143
|
subject.add_datastream(ds)
|
144
144
|
subject.datastreams['Abc'].should == ds
|
145
145
|
end
|
@@ -152,11 +152,11 @@ describe ActiveFedora::Datastreams do
|
|
152
152
|
|
153
153
|
describe "#metadata_streams" do
|
154
154
|
it "should only be metadata datastreams" do
|
155
|
-
ds1 =
|
156
|
-
ds2 =
|
157
|
-
ds3 =
|
155
|
+
ds1 = double(:metadata? => true)
|
156
|
+
ds2 = double(:metadata? => true)
|
157
|
+
ds3 = double(:metadata? => true)
|
158
158
|
relsextds = ActiveFedora::RelsExtDatastream.new
|
159
|
-
file_ds =
|
159
|
+
file_ds = double(:metadata? => false)
|
160
160
|
subject.stub(:datastreams => {:a => ds1, :b => ds2, :c => ds3, :d => relsextds, :e => file_ds})
|
161
161
|
subject.metadata_streams.should include(ds1, ds2, ds3)
|
162
162
|
subject.metadata_streams.should_not include(relsextds)
|
@@ -170,14 +170,14 @@ describe ActiveFedora::Datastreams do
|
|
170
170
|
end
|
171
171
|
|
172
172
|
it "should start from the highest existin dsid" do
|
173
|
-
subject.stub(:datastreams => {'FOO56' =>
|
173
|
+
subject.stub(:datastreams => {'FOO56' => double()})
|
174
174
|
subject.generate_dsid('FOO').should == 'FOO57'
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
178
178
|
describe "#relsext" do
|
179
179
|
it "should be the RELS-EXT datastream" do
|
180
|
-
m =
|
180
|
+
m = double
|
181
181
|
subject.stub(:datastreams => { 'RELS-EXT' => m})
|
182
182
|
subject.rels_ext.should == m
|
183
183
|
end
|
@@ -204,19 +204,19 @@ describe ActiveFedora::Datastreams do
|
|
204
204
|
end
|
205
205
|
|
206
206
|
it "should try to get a mime type from the blob" do
|
207
|
-
mock_file =
|
207
|
+
mock_file = double(:content_type => 'x-application/asdf')
|
208
208
|
ds = subject.create_datastream(ActiveFedora::Datastream, nil, {:blob => mock_file})
|
209
209
|
ds.mimeType.should == 'x-application/asdf'
|
210
210
|
end
|
211
211
|
|
212
212
|
it "should provide a default mime type" do
|
213
|
-
mock_file =
|
213
|
+
mock_file = double()
|
214
214
|
ds = subject.create_datastream(ActiveFedora::Datastream, nil, {:blob => mock_file})
|
215
215
|
ds.mimeType.should == 'application/octet-stream'
|
216
216
|
end
|
217
217
|
|
218
218
|
it "should use the filename as a default label" do
|
219
|
-
mock_file =
|
219
|
+
mock_file = double(:path => '/asdf/fdsa')
|
220
220
|
ds = subject.create_datastream(ActiveFedora::Datastream, nil, {:blob => mock_file})
|
221
221
|
ds.dsLabel.should == 'fdsa'
|
222
222
|
end
|