active-fedora 8.2.1 → 8.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/active-fedora.gemspec +1 -2
- data/lib/active_fedora/datastream_collections.rb +4 -8
- data/lib/active_fedora/datastreams.rb +7 -9
- data/lib/active_fedora/version.rb +1 -1
- data/spec/config_helper.rb +3 -3
- data/spec/integration/associations_spec.rb +76 -76
- data/spec/integration/auditable_spec.rb +7 -7
- data/spec/integration/autosave_association_spec.rb +3 -3
- data/spec/integration/base_spec.rb +51 -51
- data/spec/integration/belongs_to_association_spec.rb +27 -27
- data/spec/integration/bug_spec.rb +1 -1
- data/spec/integration/collection_association_spec.rb +2 -2
- data/spec/integration/complex_rdf_datastream_spec.rb +32 -32
- data/spec/integration/datastream_collections_spec.rb +42 -42
- data/spec/integration/datastream_spec.rb +19 -19
- data/spec/integration/datastreams_spec.rb +25 -25
- data/spec/integration/delete_all_spec.rb +5 -5
- data/spec/integration/fedora_solr_sync_spec.rb +1 -1
- data/spec/integration/full_featured_model_spec.rb +9 -9
- data/spec/integration/has_and_belongs_to_many_associations_spec.rb +46 -47
- data/spec/integration/has_many_associations_spec.rb +17 -17
- data/spec/integration/json_serialization_spec.rb +2 -2
- data/spec/integration/load_from_solr_spec.rb +1 -1
- data/spec/integration/model_spec.rb +9 -9
- data/spec/integration/nested_attribute_spec.rb +17 -17
- data/spec/integration/ntriples_datastream_spec.rb +43 -43
- data/spec/integration/om_datastream_spec.rb +37 -37
- data/spec/integration/persistence_spec.rb +1 -1
- data/spec/integration/rdf_nested_attributes_spec.rb +9 -9
- data/spec/integration/relation_delegation_spec.rb +7 -7
- data/spec/integration/relation_spec.rb +2 -2
- data/spec/integration/rels_ext_datastream_spec.rb +3 -3
- data/spec/integration/scoped_query_spec.rb +14 -14
- data/spec/integration/solr_service_spec.rb +24 -24
- data/spec/support/mock_fedora.rb +9 -10
- data/spec/unit/active_fedora_spec.rb +20 -20
- data/spec/unit/attributes_spec.rb +24 -24
- data/spec/unit/base_active_model_spec.rb +6 -6
- data/spec/unit/base_cma_spec.rb +2 -2
- data/spec/unit/base_datastream_management_spec.rb +7 -7
- data/spec/unit/base_extra_spec.rb +20 -20
- data/spec/unit/base_spec.rb +141 -141
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +1 -1
- data/spec/unit/callback_spec.rb +12 -12
- data/spec/unit/code_configurator_spec.rb +7 -7
- data/spec/unit/config_spec.rb +2 -2
- data/spec/unit/content_model_spec.rb +19 -20
- data/spec/unit/core_spec.rb +1 -1
- data/spec/unit/datastream_collections_spec.rb +101 -101
- data/spec/unit/datastream_spec.rb +12 -12
- data/spec/unit/datastreams_spec.rb +39 -39
- data/spec/unit/file_configurator_spec.rb +117 -117
- data/spec/unit/has_and_belongs_to_many_collection_spec.rb +16 -16
- data/spec/unit/has_many_collection_spec.rb +5 -5
- data/spec/unit/inheritance_spec.rb +5 -5
- data/spec/unit/model_spec.rb +5 -5
- data/spec/unit/nom_datastream_spec.rb +5 -5
- data/spec/unit/ntriples_datastream_spec.rb +56 -56
- data/spec/unit/om_datastream_spec.rb +99 -99
- data/spec/unit/persistence_spec.rb +2 -2
- data/spec/unit/predicates_spec.rb +28 -28
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +10 -10
- data/spec/unit/query_spec.rb +66 -66
- data/spec/unit/rdf_datastream_spec.rb +10 -10
- data/spec/unit/rdf_resource_datastream_spec.rb +2 -2
- data/spec/unit/rdf_xml_writer_spec.rb +3 -3
- data/spec/unit/rdfxml_rdf_datastream_spec.rb +9 -9
- data/spec/unit/relationship_graph_spec.rb +31 -31
- data/spec/unit/reload_on_save_spec.rb +3 -3
- data/spec/unit/rels_ext_datastream_spec.rb +28 -28
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +11 -11
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +11 -11
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +11 -11
- data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +7 -7
- data/spec/unit/rubydora_connection_spec.rb +3 -3
- data/spec/unit/semantic_node_spec.rb +17 -17
- data/spec/unit/serializers_spec.rb +1 -1
- data/spec/unit/service_definitions_spec.rb +11 -11
- data/spec/unit/simple_datastream_spec.rb +6 -6
- data/spec/unit/solr_config_options_spec.rb +10 -10
- data/spec/unit/solr_digital_object_spec.rb +4 -4
- data/spec/unit/solr_service_spec.rb +41 -41
- data/spec/unit/unsaved_digital_object_spec.rb +8 -8
- data/spec/unit/validations_spec.rb +6 -6
- metadata +4 -4
@@ -69,7 +69,7 @@ describe ActiveFedora::Base do
|
|
69
69
|
expect(subject.inspect).to eq "#<BarHistory2 pid: nil, cow: \"\", fubar: [], pig: nil, horse: [], duck: [\"\"], animal_id: nil>"
|
70
70
|
end
|
71
71
|
describe "with a pid" do
|
72
|
-
before { subject.
|
72
|
+
before { allow(subject).to receive_messages(pid: 'test:123') }
|
73
73
|
it "should show a pid" do
|
74
74
|
expect(subject.inspect).to eq "#<BarHistory2 pid: \"test:123\", cow: \"\", fubar: [], pig: nil, horse: [], duck: [\"\"], animal_id: nil>"
|
75
75
|
end
|
@@ -108,58 +108,58 @@ describe ActiveFedora::Base do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
it "should reveal the unique properties" do
|
111
|
-
BarHistory2.unique?(:horse).
|
112
|
-
BarHistory2.unique?(:pig).
|
113
|
-
BarHistory2.unique?(:cow).
|
111
|
+
expect(BarHistory2.unique?(:horse)).to be false
|
112
|
+
expect(BarHistory2.unique?(:pig)).to be true
|
113
|
+
expect(BarHistory2.unique?(:cow)).to be true
|
114
114
|
end
|
115
115
|
|
116
116
|
it "should save a delegated property uniquely" do
|
117
117
|
subject.fubar = ["Quack"]
|
118
|
-
subject.fubar.
|
119
|
-
subject.withText.get_values(:fubar).first.
|
118
|
+
expect(subject.fubar).to eq(["Quack"])
|
119
|
+
expect(subject.withText.get_values(:fubar).first).to eq('Quack')
|
120
120
|
subject.cow = "Low"
|
121
|
-
subject.cow.
|
122
|
-
subject.xmlish.term_values(:cow).first.
|
121
|
+
expect(subject.cow).to eq("Low")
|
122
|
+
expect(subject.xmlish.term_values(:cow).first).to eq('Low')
|
123
123
|
|
124
124
|
subject.pig = "Oink"
|
125
|
-
subject.pig.
|
125
|
+
expect(subject.pig).to eq("Oink")
|
126
126
|
end
|
127
127
|
|
128
128
|
it "should allow passing parameters to the delegate accessor" do
|
129
129
|
subject.fubar = ["one", "two"]
|
130
|
-
subject.fubar(1).
|
130
|
+
expect(subject.fubar(1)).to eq(['two'])
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should return an array if marked as multiple" do
|
134
134
|
subject.horse=["neigh", "whinny"]
|
135
|
-
subject.horse.
|
135
|
+
expect(subject.horse).to eq(["neigh", "whinny"])
|
136
136
|
end
|
137
137
|
|
138
138
|
it "should be able to delegate deeply into the terminology" do
|
139
139
|
subject.duck = ["Quack", "Peep"]
|
140
|
-
subject.duck.
|
140
|
+
expect(subject.duck).to eq(["Quack", "Peep"])
|
141
141
|
end
|
142
142
|
|
143
143
|
it "should be able to track change status" do
|
144
|
-
subject.fubar_changed
|
144
|
+
expect(subject.fubar_changed?).to be false
|
145
145
|
subject.fubar = ["Meow"]
|
146
|
-
subject.fubar_changed
|
146
|
+
expect(subject.fubar_changed?).to be true
|
147
147
|
end
|
148
148
|
|
149
149
|
describe "array getters and setters" do
|
150
150
|
it "should accept symbol keys" do
|
151
151
|
subject[:duck] = ["Cluck", "Gobble"]
|
152
|
-
subject[:duck].
|
152
|
+
expect(subject[:duck]).to eq(["Cluck", "Gobble"])
|
153
153
|
end
|
154
154
|
|
155
155
|
it "should accept string keys" do
|
156
156
|
subject['duck'] = ["Cluck", "Gobble"]
|
157
|
-
subject['duck'].
|
157
|
+
expect(subject['duck']).to eq(["Cluck", "Gobble"])
|
158
158
|
end
|
159
159
|
|
160
160
|
it "should accept field names with _id that are not associations" do
|
161
161
|
subject['animal_id'] = "lemur"
|
162
|
-
subject['animal_id'].
|
162
|
+
expect(subject['animal_id']).to eq("lemur")
|
163
163
|
end
|
164
164
|
|
165
165
|
it "should raise an error on the reader when the field isn't delegated" do
|
@@ -206,13 +206,13 @@ describe ActiveFedora::Base do
|
|
206
206
|
|
207
207
|
it "should be able to delegate deeply into the terminology" do
|
208
208
|
subject.donkey = ["Bray", "Hee-haw"]
|
209
|
-
subject.donkey.
|
209
|
+
expect(subject.donkey).to eq(["Bray", "Hee-haw"])
|
210
210
|
end
|
211
211
|
|
212
212
|
it "should be able to track change status" do
|
213
|
-
subject.cow_changed
|
213
|
+
expect(subject.cow_changed?).to be false
|
214
214
|
subject.cow = ["Moo"]
|
215
|
-
subject.cow_changed
|
215
|
+
expect(subject.cow_changed?).to be true
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
@@ -247,9 +247,9 @@ describe ActiveFedora::Base do
|
|
247
247
|
|
248
248
|
describe "with a multivalued field" do
|
249
249
|
it "should be able to track change status" do
|
250
|
-
subject.title_changed
|
250
|
+
expect(subject.title_changed?).to be false
|
251
251
|
subject.title = ["Title1", "Title2"]
|
252
|
-
subject.title_changed
|
252
|
+
expect(subject.title_changed?).to be true
|
253
253
|
end
|
254
254
|
it "should not accept a single literal value" do
|
255
255
|
expect { subject.title = "Title1" }.to raise_error
|
@@ -261,9 +261,9 @@ describe ActiveFedora::Base do
|
|
261
261
|
end
|
262
262
|
describe "with a single-valued field" do
|
263
263
|
it "should be able to track change status" do
|
264
|
-
subject.description_changed
|
264
|
+
expect(subject.description_changed?).to be false
|
265
265
|
subject.description = "A brief description"
|
266
|
-
subject.description_changed
|
266
|
+
expect(subject.description_changed?).to be true
|
267
267
|
end
|
268
268
|
it "should not accept an array of literal values" do
|
269
269
|
expect { subject.description = ["A brief description", "A longer description"] }.to raise_error
|
@@ -37,18 +37,18 @@ describe ActiveFedora::Base do
|
|
37
37
|
describe "attributes=" do
|
38
38
|
it "should set attributes" do
|
39
39
|
@n.attributes = {:fubar=>"baz", :duck=>"Quack"}
|
40
|
-
@n.fubar.
|
41
|
-
@n.withText.get_values(:fubar).first.
|
42
|
-
@n.duck.
|
43
|
-
@n.xmlish.term_values(:duck).first.
|
40
|
+
expect(@n.fubar).to eq("baz")
|
41
|
+
expect(@n.withText.get_values(:fubar).first).to eq('baz')
|
42
|
+
expect(@n.duck).to eq("Quack")
|
43
|
+
expect(@n.xmlish.term_values(:duck).first).to eq('Quack')
|
44
44
|
end
|
45
45
|
end
|
46
46
|
describe "update_attributes" do
|
47
47
|
it "should set attributes and save " do
|
48
48
|
@n.update_attributes(:fubar=>"baz", :duck=>"Quack")
|
49
49
|
@q = BarHistory.find(@n.pid)
|
50
|
-
@q.fubar.
|
51
|
-
@q.duck.
|
50
|
+
expect(@q.fubar).to eq("baz")
|
51
|
+
expect(@q.duck).to eq("Quack")
|
52
52
|
end
|
53
53
|
after do
|
54
54
|
@n.delete
|
data/spec/unit/base_cma_spec.rb
CHANGED
@@ -9,8 +9,8 @@ describe ActiveFedora::Base do
|
|
9
9
|
describe '.save' do
|
10
10
|
|
11
11
|
it "should add hasModel relationship that points to the CModel if @new_object" do
|
12
|
-
@test_object.
|
13
|
-
@test_object.
|
12
|
+
allow(@test_object).to receive(:update_index)
|
13
|
+
expect(@test_object).to receive(:refresh)
|
14
14
|
@test_object.save
|
15
15
|
end
|
16
16
|
end
|
@@ -9,25 +9,25 @@ describe ActiveFedora::Base do
|
|
9
9
|
describe '.add_datastream' do
|
10
10
|
it "should not call Datastream.save" do
|
11
11
|
ds = ActiveFedora::Datastream.new(@test_object.inner_object, 'ds_to_add')
|
12
|
-
ds.
|
12
|
+
expect(ds).to receive(:save).never
|
13
13
|
@test_object.add_datastream(ds)
|
14
14
|
end
|
15
15
|
it "should add the datastream to the datastreams_in_memory array" do
|
16
16
|
ds = ActiveFedora::Datastream.new(@test_object.inner_object, 'ds_to_add')
|
17
|
-
@test_object.datastreams.
|
17
|
+
expect(@test_object.datastreams).not_to have_key(ds.dsid)
|
18
18
|
@test_object.add_datastream(ds)
|
19
|
-
@test_object.datastreams.
|
19
|
+
expect(@test_object.datastreams).to have_key(ds.dsid)
|
20
20
|
end
|
21
21
|
it "should auto-assign dsids using auto-incremented integers if dsid is nil or an empty string" do
|
22
22
|
ds = ActiveFedora::Datastream.new(@test_object.inner_object, nil)
|
23
|
-
ds.dsid.
|
24
|
-
@test_object.add_datastream(ds).
|
23
|
+
expect(ds.dsid).to eq('DS1')
|
24
|
+
expect(@test_object.add_datastream(ds)).to eq('DS1')
|
25
25
|
ds_emptystringid = ActiveFedora::Datastream.new(@test_object.inner_object, '')
|
26
|
-
@test_object.add_datastream(ds_emptystringid).
|
26
|
+
expect(@test_object.add_datastream(ds_emptystringid)).to eq('DS2')
|
27
27
|
end
|
28
28
|
it "should accept a prefix option and apply it to automatically assigned dsids" do
|
29
29
|
ds = ActiveFedora::Datastream.new(@test_object.inner_object, nil, :prefix=> "FOO")
|
30
|
-
ds.dsid.
|
30
|
+
expect(ds.dsid).to eq('FOO1')
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -9,12 +9,12 @@ describe ActiveFedora::Base do
|
|
9
9
|
describe ".update_index" do
|
10
10
|
before do
|
11
11
|
mock_conn = double("SolrConnection")
|
12
|
-
mock_conn.
|
13
|
-
opts.
|
12
|
+
expect(mock_conn).to receive(:add) do |_, opts|
|
13
|
+
expect(opts).to eq({:params=>{:softCommit=>true}})
|
14
14
|
end
|
15
15
|
mock_ss = double("SolrService")
|
16
|
-
mock_ss.
|
17
|
-
ActiveFedora::SolrService.
|
16
|
+
allow(mock_ss).to receive(:conn).and_return(mock_conn)
|
17
|
+
allow(ActiveFedora::SolrService).to receive(:instance).and_return(mock_ss)
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should call .to_solr on all SimpleDatastreams AND RelsExtDatastreams and pass the resulting document to solr" do
|
@@ -24,11 +24,11 @@ describe ActiveFedora::Base do
|
|
24
24
|
mock3 = double("RELS-EXT", :to_solr => {})
|
25
25
|
|
26
26
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
27
|
-
mock1.
|
28
|
-
mock2.
|
29
|
-
mock3.
|
30
|
-
@test_object.
|
31
|
-
@test_object.
|
27
|
+
expect(mock1).to receive(:solrize_profile).and_return({})
|
28
|
+
expect(mock2).to receive(:solrize_profile).and_return({})
|
29
|
+
expect(mock3).to receive(:solrize_profile).and_return({})
|
30
|
+
expect(@test_object).to receive(:datastreams).twice.and_return(mock_datastreams)
|
31
|
+
expect(@test_object).to receive(:solrize_relationships)
|
32
32
|
@test_object.update_index
|
33
33
|
end
|
34
34
|
|
@@ -39,11 +39,11 @@ describe ActiveFedora::Base do
|
|
39
39
|
mock3 = double("RELS-EXT", :to_solr => {})
|
40
40
|
|
41
41
|
mock_datastreams = {:ds1 => mock1, :ds2 => mock2, :rels_ext => mock3}
|
42
|
-
mock1.
|
43
|
-
mock2.
|
44
|
-
mock3.
|
45
|
-
@test_object.
|
46
|
-
@test_object.
|
42
|
+
expect(mock1).to receive(:solrize_profile).and_return({})
|
43
|
+
expect(mock2).to receive(:solrize_profile).and_return({})
|
44
|
+
expect(mock3).to receive(:solrize_profile).and_return({})
|
45
|
+
expect(@test_object).to receive(:datastreams).twice.and_return(mock_datastreams)
|
46
|
+
expect(@test_object).to receive(:solrize_relationships)
|
47
47
|
@test_object.update_index
|
48
48
|
end
|
49
49
|
|
@@ -59,12 +59,12 @@ describe ActiveFedora::Base do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should delete object from repository and index" do
|
62
|
-
@test_object.inner_object.
|
62
|
+
allow(@test_object.inner_object).to receive(:delete)
|
63
63
|
mock_conn = double("SolrConnection")
|
64
|
-
mock_conn.
|
64
|
+
expect(mock_conn).to receive(:delete_by_id).with(nil, {:params=>{"softCommit"=>true}})
|
65
65
|
mock_ss = double("SolrService")
|
66
|
-
mock_ss.
|
67
|
-
ActiveFedora::SolrService.
|
66
|
+
allow(mock_ss).to receive(:conn).and_return(mock_conn)
|
67
|
+
allow(ActiveFedora::SolrService).to receive(:instance).and_return(mock_ss)
|
68
68
|
@test_object.delete
|
69
69
|
end
|
70
70
|
|
@@ -87,13 +87,13 @@ describe ActiveFedora::Base do
|
|
87
87
|
|
88
88
|
context "with the namespace declared in the model" do
|
89
89
|
before do
|
90
|
-
subject.
|
90
|
+
allow(subject).to receive(:pid_namespace).and_return("test-cModel")
|
91
91
|
end
|
92
92
|
its(:to_class_uri) {should == 'info:fedora/test-cModel:SpecModel_CamelCased' }
|
93
93
|
end
|
94
94
|
context "with the suffix declared in the model" do
|
95
95
|
before do
|
96
|
-
subject.
|
96
|
+
allow(subject).to receive(:pid_suffix).and_return("-TEST-SUFFIX")
|
97
97
|
end
|
98
98
|
its(:to_class_uri) {should == 'info:fedora/afmodel:SpecModel_CamelCased-TEST-SUFFIX' }
|
99
99
|
end
|
data/spec/unit/base_spec.rb
CHANGED
@@ -6,80 +6,80 @@ describe ActiveFedora::Base do
|
|
6
6
|
|
7
7
|
describe 'descendants' do
|
8
8
|
it "should record the decendants" do
|
9
|
-
ActiveFedora::Base.descendants.
|
9
|
+
expect(ActiveFedora::Base.descendants).to include(ModsArticle, SpecialThing)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "sharding" do
|
14
14
|
it "should have a shard_index" do
|
15
|
-
ActiveFedora::Base.shard_index(@this_pid).
|
15
|
+
expect(ActiveFedora::Base.shard_index(@this_pid)).to eq(0)
|
16
16
|
end
|
17
17
|
|
18
18
|
context "When the repository is NOT sharded" do
|
19
19
|
subject {ActiveFedora::Base.connection_for_pid('test:bar')}
|
20
20
|
before(:each) do
|
21
|
-
ActiveFedora.config.
|
21
|
+
allow(ActiveFedora.config).to receive(:sharded?).and_return(false)
|
22
22
|
ActiveFedora::Base.fedora_connection = {}
|
23
|
-
ActiveFedora.config.
|
24
|
-
Rubydora::Fc3Service.
|
23
|
+
allow(ActiveFedora.config).to receive(:credentials).and_return(:url=>'myfedora')
|
24
|
+
allow_any_instance_of(Rubydora::Fc3Service).to receive(:repository_profile)
|
25
25
|
end
|
26
|
-
it {
|
26
|
+
it { is_expected.to be_kind_of Rubydora::Repository}
|
27
27
|
it "should be the standard connection" do
|
28
|
-
subject.client.url.
|
28
|
+
expect(subject.client.url).to eq('myfedora')
|
29
29
|
end
|
30
30
|
describe "assign_pid" do
|
31
31
|
it "should use fedora to generate pids" do
|
32
32
|
# TODO: This juggling of Fedora credentials & establishing connections should be handled by an establish_fedora_connection method,
|
33
33
|
# possibly wrap it all into a fedora_connection method - MZ 06-05-2012
|
34
34
|
stubfedora = double("Fedora")
|
35
|
-
stubfedora.
|
35
|
+
expect(stubfedora).to receive(:connection).and_return(double("Connection", :mint =>"sample:newpid"))
|
36
36
|
# Should use ActiveFedora.config.credentials as a single hash rather than an array of shards
|
37
|
-
ActiveFedora::RubydoraConnection.
|
37
|
+
expect(ActiveFedora::RubydoraConnection).to receive(:new).with(ActiveFedora.config.credentials).and_return(stubfedora)
|
38
38
|
ActiveFedora::Base.assign_pid(ActiveFedora::Base.new.inner_object)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
describe "shard_index" do
|
42
42
|
it "should always return zero (the first and only connection)" do
|
43
|
-
ActiveFedora::Base.shard_index('test:bar').
|
43
|
+
expect(ActiveFedora::Base.shard_index('test:bar')).to eq(0)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
47
|
context "When the repository is sharded" do
|
48
48
|
before :each do
|
49
|
-
ActiveFedora.config.
|
49
|
+
allow(ActiveFedora.config).to receive(:sharded?).and_return(true)
|
50
50
|
ActiveFedora::Base.fedora_connection = {}
|
51
|
-
ActiveFedora.config.
|
51
|
+
allow(ActiveFedora.config).to receive(:credentials).and_return([{:url=>'shard1'}, {:url=>'shard2'} ])
|
52
52
|
end
|
53
53
|
describe "assign_pid" do
|
54
54
|
it "should always use the first shard to generate pids" do
|
55
55
|
stubhard1 = double("Shard")
|
56
56
|
stubhard2 = double("Shard")
|
57
|
-
stubhard1.
|
58
|
-
stubhard2.
|
57
|
+
expect(stubhard1).to receive(:connection).and_return(double("Connection", :mint =>"sample:newpid"))
|
58
|
+
expect(stubhard2).to receive(:connection).never
|
59
59
|
ActiveFedora::Base.fedora_connection = {0 => stubhard1, 1 => stubhard2}
|
60
60
|
ActiveFedora::Base.assign_pid(ActiveFedora::Base.new.inner_object)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
describe "shard_index" do
|
64
64
|
it "should use modulo of md5 of the pid to distribute objects across shards" do
|
65
|
-
ActiveFedora::Base.shard_index('test:bar').
|
66
|
-
ActiveFedora::Base.shard_index('test:nanana').
|
65
|
+
expect(ActiveFedora::Base.shard_index('test:bar')).to eq(0)
|
66
|
+
expect(ActiveFedora::Base.shard_index('test:nanana')).to eq(1)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
describe "the repository" do
|
70
70
|
before do
|
71
|
-
Rubydora::Fc3Service.
|
71
|
+
allow_any_instance_of(Rubydora::Fc3Service).to receive(:repository_profile)
|
72
72
|
end
|
73
73
|
describe "for test:bar" do
|
74
74
|
subject {ActiveFedora::Base.connection_for_pid('test:bar')}
|
75
75
|
it "should be shard1" do
|
76
|
-
subject.client.url.
|
76
|
+
expect(subject.client.url).to eq('shard1')
|
77
77
|
end
|
78
78
|
end
|
79
79
|
describe "for test:baz" do
|
80
80
|
subject {ActiveFedora::Base.connection_for_pid('test:nanana')}
|
81
81
|
it "should be shard1" do
|
82
|
-
subject.client.url.
|
82
|
+
expect(subject.client.url).to eq('shard2')
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -89,29 +89,29 @@ describe ActiveFedora::Base do
|
|
89
89
|
|
90
90
|
describe "reindex_everything" do
|
91
91
|
it "should call update_index on every object except for the fedora-system objects" do
|
92
|
-
Rubydora::Repository.
|
92
|
+
expect_any_instance_of(Rubydora::Repository).to receive(:search).
|
93
93
|
and_yield(double(pid:'XXX')).and_yield(double(pid:'YYY')).and_yield(double(pid:'ZZZ')).
|
94
94
|
and_yield(double(pid:'fedora-system:ServiceDeployment-3.0')).
|
95
95
|
and_yield(double(pid:'fedora-system:ServiceDefinition-3.0')).
|
96
96
|
and_yield(double(pid:'fedora-system:FedoraObject-3.0'))
|
97
97
|
|
98
98
|
mock_update = double(:mock_obj)
|
99
|
-
mock_update.
|
100
|
-
ActiveFedora::Base.
|
101
|
-
ActiveFedora::Base.
|
102
|
-
ActiveFedora::Base.
|
99
|
+
expect(mock_update).to receive(:update_index).exactly(3).times
|
100
|
+
expect(ActiveFedora::Base).to receive(:find).with('XXX').and_return(mock_update)
|
101
|
+
expect(ActiveFedora::Base).to receive(:find).with('YYY').and_return(mock_update)
|
102
|
+
expect(ActiveFedora::Base).to receive(:find).with('ZZZ').and_return(mock_update)
|
103
103
|
ActiveFedora::Base.reindex_everything
|
104
104
|
end
|
105
105
|
|
106
106
|
it "should accept a query param for the search" do
|
107
107
|
query_string = "pid~*"
|
108
|
-
Rubydora::Repository.
|
108
|
+
expect_any_instance_of(Rubydora::Repository).to receive(:search).with(query_string).
|
109
109
|
and_yield(double(pid:'XXX')).and_yield(double(pid:'YYY')).and_yield(double(pid:'ZZZ'))
|
110
110
|
mock_update = double(:mock_obj)
|
111
|
-
mock_update.
|
112
|
-
ActiveFedora::Base.
|
113
|
-
ActiveFedora::Base.
|
114
|
-
ActiveFedora::Base.
|
111
|
+
expect(mock_update).to receive(:update_index).exactly(3).times
|
112
|
+
expect(ActiveFedora::Base).to receive(:find).with('XXX').and_return(mock_update)
|
113
|
+
expect(ActiveFedora::Base).to receive(:find).with('YYY').and_return(mock_update)
|
114
|
+
expect(ActiveFedora::Base).to receive(:find).with('ZZZ').and_return(mock_update)
|
115
115
|
ActiveFedora::Base.reindex_everything(query_string)
|
116
116
|
end
|
117
117
|
end
|
@@ -154,15 +154,15 @@ describe ActiveFedora::Base do
|
|
154
154
|
before(:each) do
|
155
155
|
@this_pid = increment_pid.to_s
|
156
156
|
stub_get(@this_pid)
|
157
|
-
Rubydora::Repository.
|
158
|
-
ActiveFedora::Base.
|
157
|
+
allow_any_instance_of(Rubydora::Repository).to receive(:client).and_return(@mock_client)
|
158
|
+
allow(ActiveFedora::Base).to receive(:assign_pid).and_return(@this_pid)
|
159
159
|
|
160
160
|
@test_object = ActiveFedora::Base.new
|
161
161
|
end
|
162
162
|
|
163
163
|
after(:each) do
|
164
164
|
begin
|
165
|
-
ActiveFedora::SolrService.
|
165
|
+
allow(ActiveFedora::SolrService).to receive(:instance)
|
166
166
|
#@test_object.delete
|
167
167
|
rescue
|
168
168
|
end
|
@@ -172,60 +172,60 @@ describe ActiveFedora::Base do
|
|
172
172
|
describe '#new' do
|
173
173
|
it "should create an inner object" do
|
174
174
|
# for doing AFObject.new(params[:foo]) when nothing is in params[:foo]
|
175
|
-
Rubydora::DigitalObject.
|
175
|
+
expect_any_instance_of(Rubydora::DigitalObject).to receive(:save).never
|
176
176
|
result = ActiveFedora::Base.new(nil)
|
177
|
-
result.inner_object.
|
177
|
+
expect(result.inner_object).to be_kind_of(ActiveFedora::UnsavedDigitalObject)
|
178
178
|
end
|
179
179
|
|
180
180
|
it "should not save or get an pid on init" do
|
181
|
-
Rubydora::DigitalObject.
|
182
|
-
ActiveFedora::Base.
|
181
|
+
expect_any_instance_of(Rubydora::DigitalObject).to receive(:save).never
|
182
|
+
expect(ActiveFedora::Base).to receive(:assign_pid).never
|
183
183
|
f = FooHistory.new
|
184
184
|
end
|
185
185
|
|
186
186
|
it "should be able to create with a custom pid" do
|
187
187
|
f = FooHistory.new(:pid=>'numbnuts:1')
|
188
|
-
f.pid.
|
188
|
+
expect(f.pid).to eq('numbnuts:1')
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
192
|
describe ".datastream_class_for_name" do
|
193
193
|
it "should return the specifed class" do
|
194
|
-
FooAdaptation.datastream_class_for_name('someData').
|
194
|
+
expect(FooAdaptation.datastream_class_for_name('someData')).to eq(ActiveFedora::OmDatastream)
|
195
195
|
end
|
196
196
|
it "should return the specifed class" do
|
197
|
-
FooAdaptation.datastream_class_for_name('content').
|
197
|
+
expect(FooAdaptation.datastream_class_for_name('content')).to eq(ActiveFedora::Datastream)
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
201
|
describe ".internal_uri" do
|
202
202
|
it "should return pid as fedors uri" do
|
203
|
-
@test_object.internal_uri.
|
203
|
+
expect(@test_object.internal_uri).to eql("info:fedora/#{@test_object.pid}")
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
### Methods for ActiveModel::Conversions
|
208
208
|
it "should have to_param once it's saved" do
|
209
|
-
@test_object.to_param.
|
210
|
-
@test_object.inner_object.
|
211
|
-
@test_object.to_param.
|
209
|
+
expect(@test_object.to_param).to be_nil
|
210
|
+
allow(@test_object.inner_object).to receive_messages(new_record?: false, pid: 'foo:123')
|
211
|
+
expect(@test_object.to_param).to eq('foo:123')
|
212
212
|
end
|
213
213
|
|
214
214
|
it "should have to_key once it's saved" do
|
215
|
-
@test_object.to_key.
|
216
|
-
@test_object.inner_object.
|
217
|
-
@test_object.to_key.
|
215
|
+
expect(@test_object.to_key).to be_nil
|
216
|
+
allow(@test_object.inner_object).to receive_messages(new_record?: false, pid: 'foo:123')
|
217
|
+
expect(@test_object.to_key).to eq(['foo:123'])
|
218
218
|
end
|
219
219
|
|
220
220
|
it "should have to_model when it's saved" do
|
221
|
-
@test_object.to_model.
|
221
|
+
expect(@test_object.to_model).to be @test_object
|
222
222
|
end
|
223
223
|
### end ActiveModel::Conversions
|
224
224
|
|
225
225
|
### Methods for ActiveModel::Naming
|
226
226
|
it "Should know the model_name" do
|
227
|
-
FooHistory.model_name.
|
228
|
-
FooHistory.model_name.human.
|
227
|
+
expect(FooHistory.model_name).to eq('FooHistory')
|
228
|
+
expect(FooHistory.model_name.human).to eq('Foo history')
|
229
229
|
end
|
230
230
|
### End ActiveModel::Naming
|
231
231
|
|
@@ -233,7 +233,7 @@ describe ActiveFedora::Base do
|
|
233
233
|
describe ".datastreams" do
|
234
234
|
let(:test_history) { FooHistory.new }
|
235
235
|
it "should create accessors for datastreams declared with has_metadata" do
|
236
|
-
test_history.withText.
|
236
|
+
expect(test_history.withText).to eq(test_history.datastreams['withText'])
|
237
237
|
end
|
238
238
|
describe "dynamic accessors" do
|
239
239
|
before do
|
@@ -243,56 +243,56 @@ describe ActiveFedora::Base do
|
|
243
243
|
describe "when the datastream is named with dash" do
|
244
244
|
let(:ds) {double('datastream', :dsid=>'eac-cpf')}
|
245
245
|
it "should convert dashes to underscores" do
|
246
|
-
test_history.eac_cpf.
|
246
|
+
expect(test_history.eac_cpf).to eq(ds)
|
247
247
|
end
|
248
248
|
end
|
249
249
|
describe "when the datastream is named with underscore" do
|
250
250
|
let (:ds) { double('datastream', :dsid=>'foo_bar') }
|
251
251
|
it "should preserve the underscore" do
|
252
|
-
test_history.foo_bar.
|
252
|
+
expect(test_history.foo_bar).to eq(ds)
|
253
253
|
end
|
254
254
|
end
|
255
255
|
end
|
256
256
|
end
|
257
257
|
|
258
258
|
it 'should provide #find' do
|
259
|
-
ActiveFedora::Base.
|
259
|
+
expect(ActiveFedora::Base).to respond_to(:find)
|
260
260
|
end
|
261
261
|
|
262
262
|
it "should provide .create_date" do
|
263
|
-
@test_object.
|
263
|
+
expect(@test_object).to respond_to(:create_date)
|
264
264
|
end
|
265
265
|
|
266
266
|
it "should provide .modified_date" do
|
267
|
-
@test_object.
|
267
|
+
expect(@test_object).to respond_to(:modified_date)
|
268
268
|
end
|
269
269
|
|
270
270
|
it 'should respond to .rels_ext' do
|
271
|
-
@test_object.
|
271
|
+
expect(@test_object).to respond_to(:rels_ext)
|
272
272
|
end
|
273
273
|
|
274
274
|
describe '.rels_ext' do
|
275
275
|
|
276
276
|
it 'should return the RelsExtDatastream object from the datastreams array' do
|
277
|
-
@test_object.
|
278
|
-
@test_object.rels_ext.
|
277
|
+
allow(@test_object).to receive_messages(:datastreams => {"RELS-EXT" => "foo"})
|
278
|
+
expect(@test_object.rels_ext).to eq("foo")
|
279
279
|
end
|
280
280
|
end
|
281
281
|
|
282
282
|
it 'should provide #add_relationship' do
|
283
|
-
@test_object.
|
283
|
+
expect(@test_object).to respond_to(:add_relationship)
|
284
284
|
end
|
285
285
|
|
286
286
|
describe '#add_relationship' do
|
287
287
|
it 'should call #add_relationship on the rels_ext datastream' do
|
288
288
|
@test_object.add_relationship("predicate", "info:fedora/object")
|
289
289
|
pred = ActiveFedora::Predicates.vocabularies["info:fedora/fedora-system:def/relations-external#"]["predicate"]
|
290
|
-
@test_object.relationships.
|
290
|
+
expect(@test_object.relationships).to have_statement(RDF::Statement.new(RDF::URI.new(@test_object.internal_uri), pred, RDF::URI.new("info:fedora/object")))
|
291
291
|
end
|
292
292
|
|
293
293
|
it "should update the RELS-EXT datastream and set the datastream as dirty when relationships are added" do
|
294
294
|
mock_ds = double("Rels-Ext")
|
295
|
-
mock_ds.
|
295
|
+
allow(mock_ds).to receive(:content_will_change!)
|
296
296
|
@test_object.datastreams["RELS-EXT"] = mock_ds
|
297
297
|
@test_object.add_relationship(:is_member_of, "info:fedora/demo:5")
|
298
298
|
@test_object.add_relationship(:is_member_of, "info:fedora/demo:10")
|
@@ -300,54 +300,54 @@ describe ActiveFedora::Base do
|
|
300
300
|
|
301
301
|
it 'should add a relationship to an object only if it does not exist already' do
|
302
302
|
next_pid = increment_pid.to_s
|
303
|
-
ActiveFedora::Base.
|
303
|
+
allow(ActiveFedora::Base).to receive(:assign_pid).and_return(next_pid)
|
304
304
|
stub_get(next_pid)
|
305
305
|
|
306
306
|
@test_object3 = ActiveFedora::Base.new
|
307
307
|
@test_object.add_relationship(:has_part,@test_object3)
|
308
|
-
@test_object.ids_for_outbound(:has_part).
|
308
|
+
expect(@test_object.ids_for_outbound(:has_part)).to eq([@test_object3.pid])
|
309
309
|
#try adding again and make sure not there twice
|
310
310
|
@test_object.add_relationship(:has_part,@test_object3)
|
311
|
-
@test_object.ids_for_outbound(:has_part).
|
311
|
+
expect(@test_object.ids_for_outbound(:has_part)).to eq([@test_object3.pid])
|
312
312
|
end
|
313
313
|
|
314
314
|
it 'should add literal relationships if requested' do
|
315
315
|
@test_object.add_relationship(:conforms_to,"AnInterface",true)
|
316
|
-
@test_object.ids_for_outbound(:conforms_to).
|
316
|
+
expect(@test_object.ids_for_outbound(:conforms_to)).to eq(["AnInterface"])
|
317
317
|
end
|
318
318
|
end
|
319
319
|
|
320
320
|
it 'should provide #remove_relationship' do
|
321
|
-
@test_object.
|
321
|
+
expect(@test_object).to respond_to(:remove_relationship)
|
322
322
|
end
|
323
323
|
|
324
324
|
describe '#remove_relationship' do
|
325
325
|
it 'should remove a relationship from the relationships hash' do
|
326
326
|
@test_object3 = ActiveFedora::Base.new()
|
327
|
-
@test_object3.
|
327
|
+
allow(@test_object3).to receive_messages(:pid=>'7')
|
328
328
|
@test_object4 = ActiveFedora::Base.new()
|
329
|
-
@test_object4.
|
329
|
+
allow(@test_object4).to receive_messages(:pid=>'8')
|
330
330
|
@test_object.add_relationship(:has_part,@test_object3)
|
331
331
|
@test_object.add_relationship(:has_part,@test_object4)
|
332
332
|
#check both are there
|
333
|
-
@test_object.ids_for_outbound(:has_part).
|
333
|
+
expect(@test_object.ids_for_outbound(:has_part)).to eq([@test_object3.pid,@test_object4.pid])
|
334
334
|
@test_object.remove_relationship(:has_part,@test_object3)
|
335
335
|
#check only one item removed
|
336
|
-
@test_object.ids_for_outbound(:has_part).
|
336
|
+
expect(@test_object.ids_for_outbound(:has_part)).to eq([@test_object4.pid])
|
337
337
|
@test_object.remove_relationship(:has_part,@test_object4)
|
338
338
|
#check last item removed and predicate removed since now emtpy
|
339
|
-
@test_object.relationships.size.
|
339
|
+
expect(@test_object.relationships.size).to eq(0)
|
340
340
|
end
|
341
341
|
end
|
342
342
|
|
343
343
|
it 'should provide #relationships' do
|
344
|
-
@test_object.
|
344
|
+
expect(@test_object).to respond_to(:relationships)
|
345
345
|
end
|
346
346
|
|
347
347
|
describe '#relationships' do
|
348
348
|
it 'should return a graph' do
|
349
|
-
@test_object.relationships.kind_of?(RDF::Graph).
|
350
|
-
@test_object.relationships.size.
|
349
|
+
expect(@test_object.relationships.kind_of?(RDF::Graph)).to be_truthy
|
350
|
+
expect(@test_object.relationships.size).to eq(0)
|
351
351
|
end
|
352
352
|
end
|
353
353
|
|
@@ -356,26 +356,26 @@ describe ActiveFedora::Base do
|
|
356
356
|
stub_get(@this_pid)
|
357
357
|
stub_add_ds(@this_pid, ['RELS-EXT'])
|
358
358
|
@test_object.assert_content_model
|
359
|
-
@test_object.relationships(:has_model).
|
359
|
+
expect(@test_object.relationships(:has_model)).to eq(["info:fedora/afmodel:ActiveFedora_Base"])
|
360
360
|
|
361
361
|
end
|
362
362
|
end
|
363
363
|
|
364
364
|
describe '.save' do
|
365
365
|
it "should create a new record" do
|
366
|
-
@test_object.
|
367
|
-
@test_object.
|
368
|
-
@test_object.
|
369
|
-
@test_object.inner_object.
|
370
|
-
@test_object.
|
366
|
+
allow(@test_object).to receive_messages(:new_record? => true)
|
367
|
+
expect(@test_object).to receive(:assign_pid)
|
368
|
+
expect(@test_object).to receive(:serialize_datastreams)
|
369
|
+
expect(@test_object.inner_object).to receive(:save)
|
370
|
+
expect(@test_object).to receive(:update_index)
|
371
371
|
@test_object.save
|
372
372
|
end
|
373
373
|
|
374
374
|
it "should update an existing record" do
|
375
|
-
@test_object.
|
376
|
-
@test_object.
|
377
|
-
@test_object.inner_object.
|
378
|
-
@test_object.
|
375
|
+
allow(@test_object).to receive_messages(:new_record? => false)
|
376
|
+
expect(@test_object).to receive(:serialize_datastreams)
|
377
|
+
expect(@test_object.inner_object).to receive(:save)
|
378
|
+
expect(@test_object).to receive(:update_index)
|
379
379
|
@test_object.save
|
380
380
|
end
|
381
381
|
end
|
@@ -383,8 +383,8 @@ describe ActiveFedora::Base do
|
|
383
383
|
describe "#create" do
|
384
384
|
it "should build a new record and save it" do
|
385
385
|
obj = double()
|
386
|
-
obj.
|
387
|
-
FooHistory.
|
386
|
+
expect(obj).to receive(:save)
|
387
|
+
expect(FooHistory).to receive(:new).and_return(obj)
|
388
388
|
@hist = FooHistory.create(:fubar=>'ta', :swank=>'da')
|
389
389
|
end
|
390
390
|
|
@@ -393,7 +393,7 @@ describe ActiveFedora::Base do
|
|
393
393
|
describe ".adapt_to" do
|
394
394
|
it "should return an adapted object of the requested type" do
|
395
395
|
@test_object = FooHistory.new()
|
396
|
-
@test_object.adapt_to(FooAdaptation).class.
|
396
|
+
expect(@test_object.adapt_to(FooAdaptation).class).to eq(FooAdaptation)
|
397
397
|
end
|
398
398
|
it "should not make an additional call to fedora to create the adapted object" do
|
399
399
|
@test_object = FooHistory.new()
|
@@ -403,25 +403,25 @@ describe ActiveFedora::Base do
|
|
403
403
|
@test_object = FooHistory.new()
|
404
404
|
@test_object.add_file_datastream("XXX", :dsid=>'MY_DSID')
|
405
405
|
adapted = @test_object.adapt_to(FooAdaptation)
|
406
|
-
adapted.datastreams.keys.
|
407
|
-
adapted.datastreams['MY_DSID'].content.
|
408
|
-
adapted.datastreams['MY_DSID'].changed
|
406
|
+
expect(adapted.datastreams.keys).to include 'MY_DSID'
|
407
|
+
expect(adapted.datastreams['MY_DSID'].content).to eq("XXX")
|
408
|
+
expect(adapted.datastreams['MY_DSID'].changed?).to be_truthy
|
409
409
|
end
|
410
410
|
it "should propagate modified datastreams to the adapted object" do
|
411
411
|
@test_object = FooHistory.new()
|
412
412
|
orig_ds = @test_object.datastreams['someData']
|
413
413
|
orig_ds.content="<YYY/>"
|
414
414
|
adapted = @test_object.adapt_to(FooAdaptation)
|
415
|
-
adapted.datastreams.keys.
|
416
|
-
adapted.datastreams['someData'].
|
417
|
-
adapted.datastreams['someData'].content.strip.
|
418
|
-
adapted.datastreams['someData'].changed
|
415
|
+
expect(adapted.datastreams.keys).to include 'someData'
|
416
|
+
expect(adapted.datastreams['someData']).to eq(orig_ds)
|
417
|
+
expect(adapted.datastreams['someData'].content.strip).to eq("<YYY/>")
|
418
|
+
expect(adapted.datastreams['someData'].changed?).to be_truthy
|
419
419
|
end
|
420
420
|
it "should use the datastream definitions from the adapted object" do
|
421
421
|
@test_object = FooHistory.new()
|
422
422
|
adapted = @test_object.adapt_to(FooAdaptation)
|
423
|
-
adapted.datastreams.keys.
|
424
|
-
adapted.datastreams['someData'].class.
|
423
|
+
expect(adapted.datastreams.keys).to include 'someData'
|
424
|
+
expect(adapted.datastreams['someData'].class).to eq(ActiveFedora::OmDatastream)
|
425
425
|
end
|
426
426
|
end
|
427
427
|
|
@@ -429,16 +429,16 @@ describe ActiveFedora::Base do
|
|
429
429
|
subject { FooHistory.new }
|
430
430
|
|
431
431
|
it "should raise an exception if the object class is not equal to or a subclass of any known model" do
|
432
|
-
ActiveFedora::ContentModel.
|
432
|
+
expect(ActiveFedora::ContentModel).to receive(:known_models_for).with(subject).and_return([FooAdaptation])
|
433
433
|
expect { subject.adapt_to_cmodel }.to raise_error(ActiveFedora::ModelNotAsserted)
|
434
434
|
end
|
435
435
|
it "should cast to an inherited model over a random one" do
|
436
|
-
ActiveFedora::ContentModel.
|
437
|
-
subject.adapt_to_cmodel.
|
436
|
+
expect(ActiveFedora::ContentModel).to receive(:known_models_for).with(subject).and_return([FooAdaptation, FooInherited])
|
437
|
+
expect(subject.adapt_to_cmodel).to be_kind_of FooInherited
|
438
438
|
end
|
439
439
|
it "should not cast when a cmodel is same as the class" do
|
440
|
-
ActiveFedora::ContentModel.
|
441
|
-
subject.adapt_to_cmodel.
|
440
|
+
expect(ActiveFedora::ContentModel).to receive(:known_models_for).with(subject).and_return([FooHistory])
|
441
|
+
expect(subject.adapt_to_cmodel).to be === subject
|
442
442
|
end
|
443
443
|
end
|
444
444
|
|
@@ -446,36 +446,36 @@ describe ActiveFedora::Base do
|
|
446
446
|
subject { ActiveFedora::Base.new }
|
447
447
|
|
448
448
|
it "should cast to the first cmodel if ActiveFedora::Base (or no specified cmodel)" do
|
449
|
-
ActiveFedora::ContentModel.
|
450
|
-
subject.adapt_to_cmodel.
|
449
|
+
expect(ActiveFedora::ContentModel).to receive(:known_models_for).with(subject).and_return([FooAdaptation, FooHistory])
|
450
|
+
expect(subject.adapt_to_cmodel).to be_kind_of FooAdaptation
|
451
451
|
end
|
452
452
|
end
|
453
453
|
|
454
454
|
|
455
455
|
describe ".to_solr" do
|
456
456
|
it "should provide .to_solr" do
|
457
|
-
@test_object.
|
457
|
+
expect(@test_object).to respond_to(:to_solr)
|
458
458
|
end
|
459
459
|
|
460
460
|
it "should add pid, system_create_date, system_modified_date and object_state from object attributes" do
|
461
|
-
@test_object.
|
462
|
-
@test_object.
|
463
|
-
@test_object.
|
461
|
+
expect(@test_object).to receive(:create_date).and_return("2012-03-04T03:12:02Z")
|
462
|
+
expect(@test_object).to receive(:modified_date).and_return("2012-03-07T03:12:02Z")
|
463
|
+
allow(@test_object).to receive_messages(pid: 'changeme:123')
|
464
464
|
@test_object.state = "D"
|
465
465
|
solr_doc = @test_object.to_solr
|
466
|
-
solr_doc[ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)].
|
467
|
-
solr_doc[ActiveFedora::SolrService.solr_name("system_modified", :stored_sortable, type: :date)].
|
468
|
-
solr_doc[ActiveFedora::SolrService.solr_name("object_state", :stored_sortable)].
|
469
|
-
solr_doc[:id].
|
466
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)]).to eql("2012-03-04T03:12:02Z")
|
467
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("system_modified", :stored_sortable, type: :date)]).to eql("2012-03-07T03:12:02Z")
|
468
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("object_state", :stored_sortable)]).to eql("D")
|
469
|
+
expect(solr_doc[:id]).to eql("changeme:123")
|
470
470
|
end
|
471
471
|
|
472
472
|
it "should omit base metadata and RELS-EXT if :model_only==true" do
|
473
473
|
@test_object.add_relationship(:has_part, "foo", true)
|
474
474
|
solr_doc = @test_object.to_solr(Hash.new, :model_only => true)
|
475
|
-
solr_doc[ActiveFedora::SolrService.solr_name("system_create", type: :date)].
|
476
|
-
solr_doc[ActiveFedora::SolrService.solr_name("system_modified", type: :date)].
|
477
|
-
solr_doc["id"].
|
478
|
-
solr_doc[ActiveFedora::SolrService.solr_name("has_part", :symbol)].
|
475
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("system_create", type: :date)]).to be_nil
|
476
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("system_modified", type: :date)]).to be_nil
|
477
|
+
expect(solr_doc["id"]).to be_nil
|
478
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("has_part", :symbol)]).to be_nil
|
479
479
|
end
|
480
480
|
|
481
481
|
it "should add self.class as the :active_fedora_model" do
|
@@ -483,35 +483,35 @@ describe ActiveFedora::Base do
|
|
483
483
|
stub_get_content(@this_pid, ['RELS-EXT', 'someData', 'withText2', 'withText'])
|
484
484
|
@test_history = FooHistory.new()
|
485
485
|
solr_doc = @test_history.to_solr
|
486
|
-
solr_doc[ActiveFedora::SolrService.solr_name("active_fedora_model", :stored_sortable)].
|
486
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("active_fedora_model", :stored_sortable)]).to eql("FooHistory")
|
487
487
|
end
|
488
488
|
|
489
489
|
it "should call .to_solr on all SimpleDatastreams and OmDatastreams, passing the resulting document to solr" do
|
490
490
|
mock1 = double("ds1", :to_solr => {})
|
491
491
|
mock2 = double("ds2", :to_solr => {})
|
492
492
|
ngds = double("ngds", :to_solr => {})
|
493
|
-
ngds.
|
494
|
-
mock1.
|
495
|
-
mock2.
|
493
|
+
expect(ngds).to receive(:solrize_profile)
|
494
|
+
expect(mock1).to receive(:solrize_profile)
|
495
|
+
expect(mock2).to receive(:solrize_profile)
|
496
496
|
|
497
|
-
@test_object.
|
498
|
-
@test_object.
|
497
|
+
expect(@test_object).to receive(:datastreams).twice.and_return({:ds1 => mock1, :ds2 => mock2, :ngds => ngds})
|
498
|
+
expect(@test_object).to receive(:solrize_relationships)
|
499
499
|
@test_object.to_solr
|
500
500
|
end
|
501
501
|
it "should call .to_solr on all RDFDatastreams, passing the resulting document to solr" do
|
502
502
|
mock = double("ds1", :to_solr => {})
|
503
|
-
mock.
|
503
|
+
expect(mock).to receive(:solrize_profile)
|
504
504
|
|
505
|
-
@test_object.
|
506
|
-
@test_object.
|
505
|
+
expect(@test_object).to receive(:datastreams).twice.and_return({:ds1 => mock})
|
506
|
+
expect(@test_object).to receive(:solrize_relationships)
|
507
507
|
@test_object.to_solr
|
508
508
|
end
|
509
509
|
|
510
510
|
it "should call .to_solr on the relationships rels-ext is dirty" do
|
511
511
|
@test_object.add_relationship(:has_collection_member, "info:fedora/test:member")
|
512
512
|
rels_ext = @test_object.rels_ext
|
513
|
-
rels_ext.
|
514
|
-
@test_object.
|
513
|
+
expect(rels_ext).to be_changed
|
514
|
+
expect(@test_object).to receive(:solrize_relationships)
|
515
515
|
@test_object.to_solr
|
516
516
|
end
|
517
517
|
|
@@ -519,16 +519,16 @@ describe ActiveFedora::Base do
|
|
519
519
|
|
520
520
|
describe ".label" do
|
521
521
|
it "should return the label of the inner object" do
|
522
|
-
@test_object.inner_object.
|
523
|
-
@test_object.label.
|
522
|
+
expect(@test_object.inner_object).to receive(:label).and_return("foo label")
|
523
|
+
expect(@test_object.label).to eq("foo label")
|
524
524
|
end
|
525
525
|
end
|
526
526
|
|
527
527
|
describe ".label=" do
|
528
528
|
it "should set the label of the inner object" do
|
529
|
-
@test_object.label.
|
529
|
+
expect(@test_object.label).not_to eq("foo label")
|
530
530
|
@test_object.label = "foo label"
|
531
|
-
@test_object.label.
|
531
|
+
expect(@test_object.label).to eq("foo label")
|
532
532
|
end
|
533
533
|
end
|
534
534
|
describe "update_attributes" do
|
@@ -536,9 +536,9 @@ describe ActiveFedora::Base do
|
|
536
536
|
m = FooHistory.new
|
537
537
|
att= {"fubar"=> '1234', "baz" =>'stuff'}
|
538
538
|
|
539
|
-
m.
|
540
|
-
m.
|
541
|
-
m.
|
539
|
+
expect(m).to receive(:fubar=).with('1234')
|
540
|
+
expect(m).to receive(:baz=).with('stuff')
|
541
|
+
expect(m).to receive(:save)
|
542
542
|
m.update_attributes(att)
|
543
543
|
end
|
544
544
|
end
|
@@ -548,9 +548,9 @@ describe ActiveFedora::Base do
|
|
548
548
|
m = FooHistory.new
|
549
549
|
att= {"fubar"=> '1234', "baz" =>'stuff'}
|
550
550
|
|
551
|
-
m.
|
552
|
-
m.
|
553
|
-
m.
|
551
|
+
expect(m).to receive(:fubar=).with('1234')
|
552
|
+
expect(m).to receive(:baz=).with('stuff')
|
553
|
+
expect(m).to receive(:save)
|
554
554
|
m.update(att)
|
555
555
|
end
|
556
556
|
end
|
@@ -564,12 +564,12 @@ describe ActiveFedora::Base do
|
|
564
564
|
graph.insert RDF::Statement.new(subject, ActiveFedora::Predicates.find_graph_predicate(:has_part), RDF::URI.new('info:fedora/demo:12'))
|
565
565
|
graph.insert RDF::Statement.new(subject, ActiveFedora::Predicates.find_graph_predicate(:conforms_to), "AnInterface")
|
566
566
|
|
567
|
-
@test_object.
|
567
|
+
expect(@test_object).to receive(:relationships).and_return(graph)
|
568
568
|
solr_doc = @test_object.solrize_relationships
|
569
|
-
solr_doc[ActiveFedora::SolrService.solr_name("is_member_of", :symbol)].
|
570
|
-
solr_doc[ActiveFedora::SolrService.solr_name("is_part_of", :symbol)].
|
571
|
-
solr_doc[ActiveFedora::SolrService.solr_name("has_part", :symbol)].
|
572
|
-
solr_doc[ActiveFedora::SolrService.solr_name("conforms_to", :symbol)].
|
569
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("is_member_of", :symbol)]).to eq("info:fedora/demo:10")
|
570
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("is_part_of", :symbol)]).to eq("info:fedora/demo:11")
|
571
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("has_part", :symbol)]).to eq("info:fedora/demo:12")
|
572
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("conforms_to", :symbol)]).to eq("AnInterface")
|
573
573
|
end
|
574
574
|
end
|
575
575
|
end
|