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
@@ -15,15 +15,15 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
|
|
15
15
|
|
16
16
|
it "should call add_relationship" do
|
17
17
|
subject = Book.new(pid: 'subject:a')
|
18
|
-
subject.
|
18
|
+
allow(subject).to receive_messages(:new_record? => false, save: true)
|
19
19
|
predicate = Book.create_reflection(:has_and_belongs_to_many, 'pages', {:property=>'predicate'}, nil)
|
20
|
-
ActiveFedora::SolrService.
|
20
|
+
allow(ActiveFedora::SolrService).to receive(:query).and_return([])
|
21
21
|
ac = ActiveFedora::Associations::HasAndBelongsToManyAssociation.new(subject, predicate)
|
22
|
-
ac.
|
22
|
+
expect(ac).to receive(:callback).twice
|
23
23
|
object = Page.new(:pid => 'object:b')
|
24
|
-
object.
|
24
|
+
allow(object).to receive_messages(:new_record? => false, save: true)
|
25
25
|
|
26
|
-
subject.
|
26
|
+
expect(subject).to receive(:add_relationship).with('predicate', object)
|
27
27
|
|
28
28
|
ac << object
|
29
29
|
|
@@ -31,17 +31,17 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
|
|
31
31
|
|
32
32
|
it "should call add_relationship on subject and object when inverse_of given" do
|
33
33
|
subject = Book.new(pid: 'subject:a')
|
34
|
-
subject.
|
34
|
+
allow(subject).to receive_messages(:new_record? => false, save: true)
|
35
35
|
predicate = Book.create_reflection(:has_and_belongs_to_many, 'pages', {:property=>'predicate', :inverse_of => 'inverse_predicate'}, nil)
|
36
|
-
ActiveFedora::SolrService.
|
36
|
+
allow(ActiveFedora::SolrService).to receive(:query).and_return([])
|
37
37
|
ac = ActiveFedora::Associations::HasAndBelongsToManyAssociation.new(subject, predicate)
|
38
|
-
ac.
|
38
|
+
expect(ac).to receive(:callback).twice
|
39
39
|
object = Page.new(:pid => 'object:b')
|
40
|
-
object.
|
40
|
+
allow(object).to receive_messages(:new_record? => false, save: true)
|
41
41
|
|
42
|
-
subject.
|
42
|
+
expect(subject).to receive(:add_relationship).with('predicate', object)
|
43
43
|
|
44
|
-
object.
|
44
|
+
expect(object).to receive(:add_relationship).with('inverse_predicate', subject)
|
45
45
|
|
46
46
|
ac << object
|
47
47
|
|
@@ -50,15 +50,15 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
|
|
50
50
|
it "should call solr query multiple times" do
|
51
51
|
|
52
52
|
subject = Book.new(pid: 'subject:a')
|
53
|
-
subject.
|
53
|
+
allow(subject).to receive_messages(:new_record? => false, save: true)
|
54
54
|
predicate = Book.create_reflection(:has_and_belongs_to_many, 'pages', {:property=>'predicate', :solr_page_size => 10}, nil)
|
55
55
|
ids = []
|
56
56
|
0.upto(15) {|i| ids << i.to_s}
|
57
57
|
query1 = ids.slice(0,10).map {|i| "_query_:\"{!raw f=id}#{i}\""}.join(" OR ")
|
58
58
|
query2 = ids.slice(10,10).map {|i| "_query_:\"{!raw f=id}#{i}\""}.join(" OR ")
|
59
|
-
subject.
|
60
|
-
ActiveFedora::SolrService.
|
61
|
-
ActiveFedora::SolrService.
|
59
|
+
expect(subject).to receive(:ids_for_outbound).and_return(ids)
|
60
|
+
expect(ActiveFedora::SolrService).to receive(:query).with(query1, {:rows=>10}).and_return([])
|
61
|
+
expect(ActiveFedora::SolrService).to receive(:query).with(query2, {:rows=>10}).and_return([])
|
62
62
|
|
63
63
|
ac = ActiveFedora::Associations::HasAndBelongsToManyAssociation.new(subject, predicate)
|
64
64
|
ac.find_target
|
@@ -88,7 +88,7 @@ describe ActiveFedora::Associations::HasAndBelongsToManyAssociation do
|
|
88
88
|
let(:collection) {Collection.create().tap {|c| c.members << thing}}
|
89
89
|
|
90
90
|
it "should call destroy" do
|
91
|
-
expect
|
91
|
+
expect { collection.destroy }.to_not raise_error
|
92
92
|
end
|
93
93
|
|
94
94
|
end
|
@@ -15,18 +15,18 @@ describe ActiveFedora::Associations::HasManyAssociation do
|
|
15
15
|
|
16
16
|
subject { Book.new(pid: 'subject:a') }
|
17
17
|
before {
|
18
|
-
subject.
|
18
|
+
allow(subject).to receive_messages(:new_record? => false, save: true)
|
19
19
|
}
|
20
20
|
|
21
21
|
it "should call add_relationship" do
|
22
22
|
reflection = Book.create_reflection(:has_many, 'pages', {:property=>'predicate'}, Book)
|
23
|
-
ActiveFedora::SolrService.
|
23
|
+
allow(ActiveFedora::SolrService).to receive(:query).and_return([])
|
24
24
|
ac = ActiveFedora::Associations::HasManyAssociation.new(subject, reflection)
|
25
|
-
ac.
|
25
|
+
expect(ac).to receive(:callback).twice
|
26
26
|
object = Page.new(:pid => 'object:b')
|
27
|
-
object.
|
27
|
+
allow(object).to receive_messages(:new_record? => false, save: true)
|
28
28
|
|
29
|
-
object.
|
29
|
+
expect(object).to receive(:add_relationship).with('predicate', subject)
|
30
30
|
|
31
31
|
ac << object
|
32
32
|
|
@@ -17,17 +17,17 @@ describe ActiveFedora::Base do
|
|
17
17
|
|
18
18
|
it "doesn't overwrite stream specs" do
|
19
19
|
f = Foo.new
|
20
|
-
f.datastreams.size.
|
20
|
+
expect(f.datastreams.size).to eq(3)
|
21
21
|
streams = f.datastreams.values.map{|x| x.class.to_s}.sort
|
22
|
-
streams.pop.
|
23
|
-
streams.pop.
|
24
|
-
streams.pop.
|
22
|
+
expect(streams.pop).to eq("ActiveFedora::SimpleDatastream")
|
23
|
+
expect(streams.pop).to eq("ActiveFedora::RelsExtDatastream")
|
24
|
+
expect(streams.pop).to eq("ActiveFedora::QualifiedDublinCoreDatastream")
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should work for multiple types" do
|
28
28
|
b = Foo.new
|
29
29
|
f = Bar.new
|
30
|
-
b.class.ds_specs.
|
30
|
+
expect(b.class.ds_specs).not_to eq(f.class.ds_specs)
|
31
31
|
end
|
32
32
|
after do
|
33
33
|
Object.send(:remove_const, :Bar)
|
data/spec/unit/model_spec.rb
CHANGED
@@ -20,11 +20,11 @@ describe ActiveFedora::Model do
|
|
20
20
|
SpecModel::Basic.solr_query_handler = 'standard'
|
21
21
|
end
|
22
22
|
it "should have a default" do
|
23
|
-
SpecModel::Basic.solr_query_handler.
|
23
|
+
expect(SpecModel::Basic.solr_query_handler).to eq('standard')
|
24
24
|
end
|
25
25
|
it "should be settable" do
|
26
26
|
SpecModel::Basic.solr_query_handler = 'search'
|
27
|
-
SpecModel::Basic.solr_query_handler.
|
27
|
+
expect(SpecModel::Basic.solr_query_handler).to eq('search')
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -44,13 +44,13 @@ describe ActiveFedora::Model do
|
|
44
44
|
|
45
45
|
describe ".classname_from_uri" do
|
46
46
|
it "should turn an afmodel URI into a Model class name" do
|
47
|
-
ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:SpecModel_CamelCased').
|
47
|
+
expect(ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:SpecModel_CamelCased')).to eq(['SpecModel::CamelCased', 'afmodel'])
|
48
48
|
end
|
49
49
|
it "should not change plurality" do
|
50
|
-
ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:MyMetadata').
|
50
|
+
expect(ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:MyMetadata')).to eq(['MyMetadata', 'afmodel'])
|
51
51
|
end
|
52
52
|
it "should capitalize the first letter" do
|
53
|
-
ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:image').
|
53
|
+
expect(ActiveFedora::Model.classname_from_uri('info:fedora/afmodel:image')).to eq(['Image', 'afmodel'])
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
@@ -15,16 +15,16 @@ describe ActiveFedora::NomDatastream do
|
|
15
15
|
}
|
16
16
|
|
17
17
|
it "should work" do
|
18
|
-
subject.a.
|
18
|
+
expect(subject.a).to include("123")
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should to_solr" do
|
22
|
-
subject.to_solr['a_s'].
|
23
|
-
subject.to_solr['b_s'].
|
22
|
+
expect(subject.to_solr['a_s']).to include('123')
|
23
|
+
expect(subject.to_solr['b_s']).to include('asdf')
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should be a managed datastream" do
|
27
|
-
subject.controlGroup.
|
27
|
+
expect(subject.controlGroup).to eq('M')
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -54,7 +54,7 @@ describe ActiveFedora::NomDatastream do
|
|
54
54
|
}
|
55
55
|
|
56
56
|
it "should scope #a attribute to only the dc namespace" do
|
57
|
-
subject.a.
|
57
|
+
expect(subject.a).to eq(["123"])
|
58
58
|
end
|
59
59
|
|
60
60
|
end
|
@@ -19,59 +19,59 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
19
19
|
Object.send(:remove_const, :MyDatastream)
|
20
20
|
end
|
21
21
|
it "should have a subject" do
|
22
|
-
@subject.rdf_subject.
|
22
|
+
expect(@subject.rdf_subject).to eq("info:fedora/test:1")
|
23
23
|
end
|
24
24
|
it "should have controlGroup" do
|
25
|
-
@subject.controlGroup.
|
25
|
+
expect(@subject.controlGroup).to eq('M')
|
26
26
|
end
|
27
27
|
it "should have mimeType" do
|
28
|
-
@subject.mimeType.
|
28
|
+
expect(@subject.mimeType).to eq('application/n-triples')
|
29
29
|
end
|
30
30
|
it "should have dsid" do
|
31
|
-
@subject.dsid.
|
31
|
+
expect(@subject.dsid).to eq('descMetadata')
|
32
32
|
end
|
33
33
|
it "should have fields" do
|
34
|
-
@subject.created.
|
35
|
-
@subject.title.
|
36
|
-
@subject.publisher.
|
37
|
-
@subject.based_near.
|
38
|
-
@subject.related_url.length.
|
39
|
-
@subject.related_url.first.rdf_subject.
|
34
|
+
expect(@subject.created).to eq([Date.parse('2010-12-31')])
|
35
|
+
expect(@subject.title).to eq(["Title of work"])
|
36
|
+
expect(@subject.publisher).to eq(["Penn State"])
|
37
|
+
expect(@subject.based_near).to eq(["New York, NY, US"])
|
38
|
+
expect(@subject.related_url.length).to eq(1)
|
39
|
+
expect(@subject.related_url.first.rdf_subject).to eq("http://google.com/")
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should be able to call enumerable methods on the fields" do
|
43
|
-
@subject.title.join(', ').
|
44
|
-
@subject.title.count.
|
45
|
-
@subject.title.size.
|
46
|
-
@subject.title[0].
|
47
|
-
@subject.title.to_a.
|
43
|
+
expect(@subject.title.join(', ')).to eq("Title of work")
|
44
|
+
expect(@subject.title.count).to eq(1)
|
45
|
+
expect(@subject.title.size).to eq(1)
|
46
|
+
expect(@subject.title[0]).to eq("Title of work")
|
47
|
+
expect(@subject.title.to_a).to eq(["Title of work"])
|
48
48
|
val = []
|
49
49
|
@subject.title.each_with_index {|v, i| val << "#{i}. #{v}"}
|
50
|
-
val.
|
50
|
+
expect(val).to eq(["0. Title of work"])
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should return fields that are not TermProxies" do
|
54
|
-
@subject.created.
|
54
|
+
expect(@subject.created).to be_kind_of Array
|
55
55
|
end
|
56
56
|
it "should have method missing" do
|
57
|
-
|
57
|
+
expect{@subject.frank}.to raise_exception NoMethodError
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should set fields" do
|
61
61
|
@subject.publisher = "St. Martin's Press"
|
62
|
-
@subject.publisher.
|
62
|
+
expect(@subject.publisher).to eq(["St. Martin's Press"])
|
63
63
|
end
|
64
64
|
it "should set rdf literal fields" do
|
65
65
|
@subject.creator = RDF.Literal("Geoff Ryman")
|
66
|
-
@subject.creator.
|
66
|
+
expect(@subject.creator).to eq(["Geoff Ryman"])
|
67
67
|
end
|
68
68
|
it "should append fields" do
|
69
69
|
@subject.publisher << "St. Martin's Press"
|
70
|
-
@subject.publisher.
|
70
|
+
expect(@subject.publisher).to eq(["Penn State", "St. Martin's Press"])
|
71
71
|
end
|
72
72
|
it "should delete fields" do
|
73
73
|
@subject.related_url.delete(RDF::URI("http://google.com/"))
|
74
|
-
@subject.related_url.
|
74
|
+
expect(@subject.related_url).to eq([])
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -81,8 +81,8 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
81
81
|
@two = ActiveFedora::RDFDatastream.new('fakepid', 'myQuix')
|
82
82
|
end
|
83
83
|
it "should generate predictable prexies" do
|
84
|
-
@one.apply_prefix("baz").
|
85
|
-
@two.apply_prefix("baz").
|
84
|
+
expect(@one.apply_prefix("baz")).to eq('my_foobar__baz')
|
85
|
+
expect(@two.apply_prefix("baz")).to eq('my_quix__baz')
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -98,8 +98,8 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
98
98
|
end
|
99
99
|
@inner_object = double('inner object', pid: 'test:1', :new_record? => true)
|
100
100
|
@subject = MyDatastream.new(@inner_object, 'mixed_rdf')
|
101
|
-
@subject.
|
102
|
-
@subject.
|
101
|
+
allow(@subject).to receive_messages(pid: 'test:1')
|
102
|
+
allow(@subject).to receive_messages(:new_record? => false)
|
103
103
|
@subject.content = File.new('spec/fixtures/mixed_rdf_descMetadata.nt').read
|
104
104
|
end
|
105
105
|
|
@@ -108,11 +108,11 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
it "should have fields" do
|
111
|
-
@subject.title.
|
111
|
+
expect(@subject.title).to eq(["Title of datastream"])
|
112
112
|
end
|
113
113
|
|
114
114
|
it "should have a custom subject" do
|
115
|
-
@subject.rdf_subject.
|
115
|
+
expect(@subject.rdf_subject).to eq('info:fedora/test:1/content')
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
@@ -122,17 +122,17 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
122
122
|
property :publisher, predicate: RDF::DC.publisher
|
123
123
|
end
|
124
124
|
@subject = MyDatastream.new(@inner_object, 'mixed_rdf')
|
125
|
-
@subject.
|
125
|
+
allow(@subject).to receive_messages(pid: 'test:1', repository: ActiveFedora::Base.connection_for_pid(0))
|
126
126
|
end
|
127
127
|
after(:each) do
|
128
128
|
Object.send(:remove_const, :MyDatastream)
|
129
129
|
end
|
130
130
|
it "should support to_s method" do
|
131
|
-
@subject.publisher.to_s.
|
131
|
+
expect(@subject.publisher.to_s).to eq([].to_s)
|
132
132
|
@subject.publisher = "Bob"
|
133
|
-
@subject.publisher.to_s.
|
133
|
+
expect(@subject.publisher.to_s).to eq(["Bob"].to_s)
|
134
134
|
@subject.publisher << "Jim"
|
135
|
-
@subject.publisher.to_s.
|
135
|
+
expect(@subject.publisher.to_s).to eq(["Bob", "Jim"].to_s)
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
@@ -166,12 +166,12 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
166
166
|
Object.send(:remove_const, :MyDatastream)
|
167
167
|
end
|
168
168
|
before(:each) do
|
169
|
-
@subject.
|
169
|
+
allow(@subject).to receive_messages(pid: 'test:1')
|
170
170
|
@subject.serialize
|
171
171
|
end
|
172
172
|
it "should provide .to_solr and return a SolrDocument" do
|
173
|
-
@subject.
|
174
|
-
@subject.to_solr.
|
173
|
+
expect(@subject).to respond_to(:to_solr)
|
174
|
+
expect(@subject.to_solr).to be_kind_of(Hash)
|
175
175
|
end
|
176
176
|
|
177
177
|
it "should have a solr_name method" do
|
@@ -181,20 +181,20 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
181
181
|
|
182
182
|
it "should optionally allow you to provide the Solr::Document to add fields to and return that document when done" do
|
183
183
|
doc = Hash.new
|
184
|
-
@subject.to_solr(doc).
|
184
|
+
expect(@subject.to_solr(doc)).to eq(doc)
|
185
185
|
end
|
186
186
|
it "should iterate through @fields hash" do
|
187
187
|
solr_doc = @subject.to_solr
|
188
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__publisher", type: :string)].
|
189
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__publisher", :sortable)].
|
190
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__publisher", :facetable)].
|
191
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__based_near", type: :string)].
|
192
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__based_near", :facetable)].
|
193
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__created", :sortable, type: :date)].
|
194
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__created", :displayable)].
|
195
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__title", type: :string)].
|
196
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__title", :sortable)].
|
197
|
-
solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__related_url", type: :string)].
|
188
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__publisher", type: :string)]).to eq(["publisher1"])
|
189
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__publisher", :sortable)]).to eq("publisher1")
|
190
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__publisher", :facetable)]).to eq(["publisher1"])
|
191
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__based_near", type: :string)]).to eq(["coverage1", "coverage2"])
|
192
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__based_near", :facetable)]).to eq(["coverage1", "coverage2"])
|
193
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__created", :sortable, type: :date)]).to eq("2009-10-10T00:00:00Z")
|
194
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__created", :displayable)]).to eq(["2009-10-10"])
|
195
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__title", type: :string)]).to eq(["fake-title"])
|
196
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__title", :sortable)]).to eq("fake-title")
|
197
|
+
expect(solr_doc[ActiveFedora::SolrService.solr_name("solr_rdf__related_url", type: :string)]).to eq(["http://example.org/"])
|
198
198
|
end
|
199
199
|
|
200
200
|
describe "with an actual object" do
|
@@ -205,9 +205,9 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
205
205
|
end
|
206
206
|
@obj = MyDatastream.new(@inner_object, 'solr_rdf')
|
207
207
|
repository = double()
|
208
|
-
@obj.
|
209
|
-
repository.
|
210
|
-
repository.
|
208
|
+
allow(@obj).to receive_messages(repository: repository, pid: 'test:1')
|
209
|
+
allow(repository).to receive(:modify_datastream)
|
210
|
+
allow(repository).to receive(:add_datastream)
|
211
211
|
@obj.created = Date.parse("2012-03-04")
|
212
212
|
@obj.title = "Of Mice and Men, The Sequel"
|
213
213
|
@obj.publisher = "Bob's Blogtastic Publishing"
|
@@ -223,21 +223,21 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
223
223
|
|
224
224
|
describe ".fields()" do
|
225
225
|
it "should return the right fields" do
|
226
|
-
@obj.send(:fields).keys.
|
226
|
+
expect(@obj.send(:fields).keys).to eq(["created", "title", "publisher", "based_near", "related_url"])
|
227
227
|
end
|
228
228
|
it "should return the right values" do
|
229
229
|
fields = @obj.send(:fields)
|
230
|
-
fields[:related_url][:values].
|
231
|
-
fields[:based_near][:values].
|
230
|
+
expect(fields[:related_url][:values]).to eq(["http://example.org/blogtastic/"])
|
231
|
+
expect(fields[:based_near][:values]).to eq(["Tacoma, WA", "Renton, WA"])
|
232
232
|
end
|
233
233
|
it "should return the right type information" do
|
234
234
|
fields = @obj.send(:fields)
|
235
|
-
fields[:created][:type].
|
235
|
+
expect(fields[:created][:type]).to eq(:date)
|
236
236
|
end
|
237
237
|
end
|
238
238
|
describe ".to_solr()" do
|
239
239
|
it "should return the right fields" do
|
240
|
-
@obj.to_solr.keys.
|
240
|
+
expect(@obj.to_solr.keys).to include(ActiveFedora::SolrService.solr_name("solr_rdf__related_url", type: :string),
|
241
241
|
ActiveFedora::SolrService.solr_name("solr_rdf__publisher", type: :string),
|
242
242
|
ActiveFedora::SolrService.solr_name("solr_rdf__publisher", :sortable),
|
243
243
|
ActiveFedora::SolrService.solr_name("solr_rdf__publisher", :facetable),
|
@@ -251,8 +251,8 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
251
251
|
end
|
252
252
|
|
253
253
|
it "should return the right values" do
|
254
|
-
@obj.to_solr[ActiveFedora::SolrService.solr_name("solr_rdf__related_url", type: :string)].
|
255
|
-
@obj.to_solr[ActiveFedora::SolrService.solr_name("solr_rdf__based_near", type: :string)].
|
254
|
+
expect(@obj.to_solr[ActiveFedora::SolrService.solr_name("solr_rdf__related_url", type: :string)]).to eq(["http://example.org/blogtastic/"])
|
255
|
+
expect(@obj.to_solr[ActiveFedora::SolrService.solr_name("solr_rdf__based_near", type: :string)]).to eq(["Tacoma, WA","Renton, WA"])
|
256
256
|
end
|
257
257
|
end
|
258
258
|
end
|
@@ -21,14 +21,14 @@ describe ActiveFedora::OmDatastream do
|
|
21
21
|
before(:each) do
|
22
22
|
@mock_inner = double('inner object')
|
23
23
|
@mock_repo = double('repository')
|
24
|
-
@mock_repo.
|
25
|
-
@mock_inner.
|
26
|
-
@mock_inner.
|
27
|
-
@mock_inner.
|
24
|
+
allow(@mock_repo).to receive_messages(:datastream_dissemination=>'My Content', :config=>{}, :datastream_profile=>{})
|
25
|
+
allow(@mock_inner).to receive(:repository).and_return(@mock_repo)
|
26
|
+
allow(@mock_inner).to receive(:pid)
|
27
|
+
allow(@mock_inner).to receive_messages(:new_record? => false)
|
28
28
|
@test_ds = ActiveFedora::OmDatastream.new(@mock_inner, "descMetadata")
|
29
|
-
@test_ds.
|
29
|
+
allow(@test_ds).to receive_messages(:new? => false, :profile => {}, :datastream_content => '<test_xml/>')
|
30
30
|
@test_ds.content="<test_xml/>"
|
31
|
-
@test_ds.
|
31
|
+
allow(@test_ds).to receive_messages(:new? => false)
|
32
32
|
end
|
33
33
|
|
34
34
|
its(:metadata?) { should be true}
|
@@ -36,36 +36,36 @@ describe ActiveFedora::OmDatastream do
|
|
36
36
|
its(:controlGroup) { should == "M"}
|
37
37
|
|
38
38
|
it "should include the Solrizer::XML::TerminologyBasedSolrizer for .to_solr support" do
|
39
|
-
ActiveFedora::OmDatastream.included_modules.
|
39
|
+
expect(ActiveFedora::OmDatastream.included_modules).to include(OM::XML::TerminologyBasedSolrizer)
|
40
40
|
end
|
41
41
|
|
42
42
|
describe '#new' do
|
43
43
|
it 'should provide #new' do
|
44
|
-
ActiveFedora::OmDatastream.
|
45
|
-
@test_ds.ng_xml.
|
44
|
+
expect(ActiveFedora::OmDatastream).to respond_to(:new)
|
45
|
+
expect(@test_ds.ng_xml).to be_instance_of(Nokogiri::XML::Document)
|
46
46
|
end
|
47
47
|
it 'should load xml from blob if provided' do
|
48
48
|
test_ds1 = ActiveFedora::OmDatastream.new(nil, 'ds1')
|
49
49
|
test_ds1.content="<xml><foo/></xml>"
|
50
|
-
test_ds1.ng_xml.to_xml.
|
50
|
+
expect(test_ds1.ng_xml.to_xml).to be_equivalent_to("<?xml version=\"1.0\"?>\n<xml>\n <foo/>\n</xml>\n")
|
51
51
|
end
|
52
52
|
it "should initialize from #xml_template if no xml is provided" do
|
53
|
-
ActiveFedora::OmDatastream.
|
53
|
+
expect(ActiveFedora::OmDatastream).to receive(:xml_template).and_return("<fake template/>")
|
54
54
|
n = ActiveFedora::OmDatastream.new
|
55
|
-
n.ng_xml.
|
55
|
+
expect(n.ng_xml).to be_equivalent_to("<fake template/>")
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
describe "#prefix" do
|
60
60
|
subject { ActiveFedora::OmDatastream.new(nil, 'descMetadata') }
|
61
61
|
it "should be \"\#{dsid.underscore}__\"" do
|
62
|
-
subject.send(:prefix).
|
62
|
+
expect(subject.send(:prefix)).to eq("desc_metadata__")
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
describe '#xml_template' do
|
67
67
|
it "should return an empty xml document" do
|
68
|
-
ActiveFedora::OmDatastream.xml_template.to_xml.
|
68
|
+
expect(ActiveFedora::OmDatastream.xml_template.to_xml).to be_equivalent_to("<?xml version=\"1.0\"?>\n<xml/>\n")
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -116,25 +116,25 @@ describe ActiveFedora::OmDatastream do
|
|
116
116
|
|
117
117
|
it "should apply submitted hash to corresponding datastream field values" do
|
118
118
|
result = @mods_ds.update_indexed_attributes( {[{":person"=>"0"}, "role"]=>{"0"=>"role1", "1"=>"role2", "2"=>"role3"} })
|
119
|
-
result.
|
120
|
-
@mods_ds.property_values('//oxns:name[@type="personal"][1]/oxns:role').
|
119
|
+
expect(result).to eq({"person_0_role"=>["role1", "role2", "role3"]})
|
120
|
+
expect(@mods_ds.property_values('//oxns:name[@type="personal"][1]/oxns:role')).to eq(["role1","role2","role3"])
|
121
121
|
end
|
122
122
|
it "should support single-value arguments (as opposed to a hash of values with array indexes as keys)" do
|
123
123
|
# In other words, { "fubar"=>"dork" } should have the same effect as { "fubar"=>{"0"=>"dork"} }
|
124
124
|
result = @mods_ds.update_indexed_attributes( { [{":person"=>"0"}, "role"]=>"the role" } )
|
125
|
-
result.
|
126
|
-
@mods_ds.term_values('//oxns:name[@type="personal"][1]/oxns:role').first.
|
125
|
+
expect(result).to eq({"person_0_role"=>["the role"]})
|
126
|
+
expect(@mods_ds.term_values('//oxns:name[@type="personal"][1]/oxns:role').first).to eq("the role")
|
127
127
|
end
|
128
128
|
it "should do nothing if field key is a string (must be an array or symbol). Will not accept xpath queries!" do
|
129
129
|
xml_before = @mods_ds.to_xml
|
130
130
|
expect(ActiveFedora::Base.logger).to receive(:warn).with "WARNING: descMetadata ignoring {\"fubar\" => \"the role\"} because \"fubar\" is a String (only valid OM Term Pointers will be used). Make sure your html has the correct field_selector tags in it."
|
131
|
-
@mods_ds.update_indexed_attributes( { "fubar"=>"the role" } ).
|
132
|
-
@mods_ds.to_xml.
|
131
|
+
expect(@mods_ds.update_indexed_attributes( { "fubar"=>"the role" } )).to eq({})
|
132
|
+
expect(@mods_ds.to_xml).to eq(xml_before)
|
133
133
|
end
|
134
134
|
it "should do nothing if there is no accessor corresponding to the given field key" do
|
135
135
|
xml_before = @mods_ds.to_xml
|
136
|
-
@mods_ds.update_indexed_attributes( { [{"fubar"=>"0"}]=>"the role" } ).
|
137
|
-
@mods_ds.to_xml.
|
136
|
+
expect(@mods_ds.update_indexed_attributes( { [{"fubar"=>"0"}]=>"the role" } )).to eq({})
|
137
|
+
expect(@mods_ds.to_xml).to eq(xml_before)
|
138
138
|
end
|
139
139
|
|
140
140
|
### Examples copied over form metadata_datastream_spec
|
@@ -142,30 +142,30 @@ describe ActiveFedora::OmDatastream do
|
|
142
142
|
it "should work for text fields" do
|
143
143
|
att= {[{"person"=>"0"},"description"]=>{"-1"=>"mork", "1"=>"york"}}
|
144
144
|
result = @mods_ds.update_indexed_attributes(att)
|
145
|
-
result.
|
146
|
-
@mods_ds.get_values([{:person=>0},:description]).
|
145
|
+
expect(result).to eq({"person_0_description"=>["mork","york"]})
|
146
|
+
expect(@mods_ds.get_values([{:person=>0},:description])).to eq(['mork', 'york'])
|
147
147
|
att= {[{"person"=>"0"},"description"]=>{"-1"=>"dork"}}
|
148
148
|
result2 = @mods_ds.update_indexed_attributes(att)
|
149
|
-
result2.
|
150
|
-
@mods_ds.get_values([{:person=>0},:description]).
|
149
|
+
expect(result2).to eq({"person_0_description"=>["dork"]})
|
150
|
+
expect(@mods_ds.get_values([{:person=>0},:description])).to eq(['dork'])
|
151
151
|
end
|
152
152
|
|
153
153
|
it "should allow deleting of values and should delete values so that to_xml does not return emtpy nodes" do
|
154
154
|
att= {[{"person"=>"0"},"description"]=>{"0"=>"york", "1"=>"mangle","2"=>"mork"}}
|
155
155
|
@mods_ds.update_indexed_attributes(att)
|
156
|
-
@mods_ds.get_values([{"person"=>"0"},"description"]).
|
156
|
+
expect(@mods_ds.get_values([{"person"=>"0"},"description"])).to eq(['york', 'mangle', 'mork'])
|
157
157
|
|
158
158
|
@mods_ds.update_indexed_attributes({[{"person"=>"0"},{"description" => '1'} ]=> nil})
|
159
|
-
@mods_ds.get_values([{"person"=>"0"},"description"]).
|
159
|
+
expect(@mods_ds.get_values([{"person"=>"0"},"description"])).to eq(['york', 'mork'])
|
160
160
|
|
161
161
|
@mods_ds.update_indexed_attributes({[{"person"=>"0"},{"description" => '0'}]=>:delete})
|
162
|
-
@mods_ds.get_values([{"person"=>"0"},"description"]).
|
162
|
+
expect(@mods_ds.get_values([{"person"=>"0"},"description"])).to eq(['mork'])
|
163
163
|
end
|
164
164
|
|
165
165
|
it "should set changed to true" do
|
166
|
-
@mods_ds.get_values([{:title_info=>0},:main_title]).
|
166
|
+
expect(@mods_ds.get_values([{:title_info=>0},:main_title])).to eq(["ARTICLE TITLE", "TITLE OF HOST JOURNAL"])
|
167
167
|
@mods_ds.update_indexed_attributes [{"title_info"=>"0"},"main_title"]=>{"-1"=>"mork"}
|
168
|
-
@mods_ds.
|
168
|
+
expect(@mods_ds).to be_changed
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
@@ -177,92 +177,92 @@ describe ActiveFedora::OmDatastream do
|
|
177
177
|
end
|
178
178
|
|
179
179
|
it "should call lookup with field_name and return the text values from each resulting node" do
|
180
|
-
@mods_ds.
|
181
|
-
@mods_ds.get_values("--my xpath--").
|
180
|
+
expect(@mods_ds).to receive(:term_values).with("--my xpath--").and_return(["value1", "value2"])
|
181
|
+
expect(@mods_ds.get_values("--my xpath--")).to eq(["value1", "value2"])
|
182
182
|
end
|
183
183
|
it "should assume that field_names that are strings are xpath queries" do
|
184
|
-
ActiveFedora::OmDatastream.
|
185
|
-
@mods_ds.
|
186
|
-
@mods_ds.get_values("--my xpath--").
|
184
|
+
expect(ActiveFedora::OmDatastream).to receive(:accessor_xpath).never
|
185
|
+
expect(@mods_ds).to receive(:term_values).with("--my xpath--").and_return(["abstract1", "abstract2"])
|
186
|
+
expect(@mods_ds.get_values("--my xpath--")).to eq(["abstract1", "abstract2"])
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
190
|
describe '.save' do
|
191
191
|
it "should provide .save" do
|
192
|
-
@test_ds.
|
192
|
+
expect(@test_ds).to respond_to(:save)
|
193
193
|
end
|
194
194
|
it "should persist the product of .to_xml in fedora" do
|
195
|
-
@mock_repo.
|
196
|
-
@test_ds.
|
197
|
-
@test_ds.
|
198
|
-
@test_ds.
|
199
|
-
@mock_repo.
|
195
|
+
allow(@mock_repo).to receive(:datastream).and_return('')
|
196
|
+
allow(@test_ds).to receive_messages(:new? => true)
|
197
|
+
allow(@test_ds).to receive_messages(:ng_xml_changed? => true)
|
198
|
+
allow(@test_ds).to receive_messages(:to_xml => "fake xml")
|
199
|
+
expect(@mock_repo).to receive(:add_datastream).with(:pid => nil, :dsid => 'descMetadata', :versionable => true, :content => 'fake xml', :controlGroup => 'M', :dsState => 'A', :mimeType=>'text/xml')
|
200
200
|
|
201
201
|
@test_ds.serialize!
|
202
202
|
@test_ds.save
|
203
|
-
@test_ds.mimeType.
|
203
|
+
expect(@test_ds.mimeType).to eq('text/xml')
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
describe 'setting content' do
|
208
208
|
subject { ActiveFedora::OmDatastream.new(@mock_inner, "descMetadata") }
|
209
209
|
it "should update the content" do
|
210
|
-
subject.
|
210
|
+
allow(subject).to receive_messages(:new? => false )
|
211
211
|
subject.content = "<a />"
|
212
|
-
subject.content.
|
212
|
+
expect(subject.content).to eq('<a/>')
|
213
213
|
end
|
214
214
|
|
215
215
|
it "should mark the object as changed" do
|
216
|
-
subject.
|
216
|
+
allow(subject).to receive_messages(:new? => false, :controlGroup => 'M')
|
217
217
|
subject.content = "<a />"
|
218
|
-
subject.
|
218
|
+
expect(subject).to be_changed
|
219
219
|
end
|
220
220
|
|
221
221
|
it "update ngxml and mark the xml as loaded" do
|
222
|
-
subject.
|
222
|
+
allow(subject).to receive_messages(:new? => false )
|
223
223
|
subject.content = "<a />"
|
224
|
-
subject.ng_xml.to_xml.
|
225
|
-
subject.xml_loaded.
|
224
|
+
expect(subject.ng_xml.to_xml).to match(/<a\/>/)
|
225
|
+
expect(subject.xml_loaded).to be true
|
226
226
|
end
|
227
227
|
end
|
228
228
|
|
229
229
|
describe 'ng_xml=' do
|
230
230
|
before do
|
231
|
-
@mock_inner.
|
231
|
+
allow(@mock_inner).to receive_messages(:new_record? => true)
|
232
232
|
@test_ds2 = ActiveFedora::OmDatastream.new(@mock_inner, "descMetadata")
|
233
233
|
end
|
234
234
|
it "should parse raw xml for you" do
|
235
235
|
@test_ds2.ng_xml = @sample_raw_xml
|
236
|
-
@test_ds2.ng_xml.class.
|
237
|
-
@test_ds2.ng_xml.to_xml.
|
236
|
+
expect(@test_ds2.ng_xml.class).to eq(Nokogiri::XML::Document)
|
237
|
+
expect(@test_ds2.ng_xml.to_xml).to be_equivalent_to(@sample_raw_xml)
|
238
238
|
end
|
239
239
|
|
240
240
|
it "Should always set a document when an Element is passed" do
|
241
241
|
@test_ds2.ng_xml = Nokogiri::XML(@sample_raw_xml).xpath('//xmlelement').first
|
242
|
-
@test_ds2.ng_xml.
|
243
|
-
@test_ds2.ng_xml.to_xml.
|
242
|
+
expect(@test_ds2.ng_xml).to be_kind_of Nokogiri::XML::Document
|
243
|
+
expect(@test_ds2.ng_xml.to_xml).to be_equivalent_to("<xmlelement/>")
|
244
244
|
end
|
245
245
|
it "should mark the datastream as changed" do
|
246
|
-
@test_ds2.
|
247
|
-
@test_ds2.
|
246
|
+
allow(@test_ds2).to receive_messages(:new? => false, :controlGroup => 'M')
|
247
|
+
expect(@test_ds2).not_to be_changed
|
248
248
|
@test_ds2.ng_xml = @sample_raw_xml
|
249
|
-
@test_ds2.
|
249
|
+
expect(@test_ds2).to be_changed
|
250
250
|
end
|
251
251
|
end
|
252
252
|
|
253
253
|
describe '.to_xml' do
|
254
254
|
it "should provide .to_xml" do
|
255
|
-
@test_ds.
|
255
|
+
expect(@test_ds).to respond_to(:to_xml)
|
256
256
|
end
|
257
257
|
|
258
258
|
it "should ng_xml.to_xml" do
|
259
|
-
@test_ds.
|
260
|
-
@test_ds.to_xml.
|
259
|
+
allow(@test_ds).to receive_messages(:ng_xml => Nokogiri::XML::Document.parse("<text_document/>"))
|
260
|
+
expect(@test_ds.to_xml).to eq("<text_document/>")
|
261
261
|
end
|
262
262
|
|
263
263
|
it 'should accept an optional Nokogiri::XML Document as an argument and insert its fields into that (mocked test)' do
|
264
264
|
doc = Nokogiri::XML::Document.parse("<test_document/>")
|
265
|
-
doc.root.
|
265
|
+
expect(doc.root).to receive(:add_child)#.with(@test_ds.ng_xml.root)
|
266
266
|
@test_ds.to_xml(doc)
|
267
267
|
end
|
268
268
|
|
@@ -270,15 +270,15 @@ describe ActiveFedora::OmDatastream do
|
|
270
270
|
expected_result = "<test_document><foo/><test_xml/></test_document>"
|
271
271
|
doc = Nokogiri::XML::Document.parse("<test_document><foo/></test_document>")
|
272
272
|
result = @test_ds.to_xml(doc)
|
273
|
-
doc.
|
274
|
-
result.
|
273
|
+
expect(doc).to be_equivalent_to expected_result
|
274
|
+
expect(result).to be_equivalent_to expected_result
|
275
275
|
end
|
276
276
|
|
277
277
|
it 'should add to root of Nokogiri::XML::Documents, but add directly to the elements if a Nokogiri::XML::Node is passed in' do
|
278
278
|
doc = Nokogiri::XML::Document.parse("<test_document/>")
|
279
279
|
el = Nokogiri::XML::Node.new("test_element", Nokogiri::XML::Document.new)
|
280
|
-
@test_ds.to_xml(doc).
|
281
|
-
@test_ds.to_xml(el).
|
280
|
+
expect(@test_ds.to_xml(doc)).to be_equivalent_to "<test_document><test_xml/></test_document>"
|
281
|
+
expect(@test_ds.to_xml(el)).to be_equivalent_to "<test_element/>"
|
282
282
|
end
|
283
283
|
|
284
284
|
end
|
@@ -286,7 +286,7 @@ describe ActiveFedora::OmDatastream do
|
|
286
286
|
describe '.from_solr' do
|
287
287
|
it "should set the internal_solr_doc attribute to the solr document passed in" do
|
288
288
|
@test_ds.from_solr(@solr_doc)
|
289
|
-
@test_ds.internal_solr_doc.
|
289
|
+
expect(@test_ds.internal_solr_doc).to eq(@solr_doc)
|
290
290
|
end
|
291
291
|
end
|
292
292
|
|
@@ -302,47 +302,47 @@ describe ActiveFedora::OmDatastream do
|
|
302
302
|
|
303
303
|
it "should return correct values from solr_doc given different term pointers" do
|
304
304
|
mock_term = double("OM::XML::Term")
|
305
|
-
mock_term.
|
305
|
+
allow(mock_term).to receive(:type).and_return(:text)
|
306
306
|
mock_terminology = double("OM::XML::Terminology")
|
307
|
-
mock_terminology.
|
308
|
-
ActiveFedora::OmDatastream.
|
307
|
+
allow(mock_terminology).to receive(:retrieve_term).and_return(mock_term)
|
308
|
+
allow(ActiveFedora::OmDatastream).to receive(:terminology).and_return(mock_terminology)
|
309
309
|
@mods_ds.from_solr(@solr_doc)
|
310
310
|
term_pointer = [:name,:role,:roleTerm]
|
311
|
-
@mods_ds.get_values_from_solr(:name,:role,:roleTerm).
|
311
|
+
expect(@mods_ds.get_values_from_solr(:name,:role,:roleTerm)).to eq(["creator","submitter","teacher"])
|
312
312
|
ar = @mods_ds.get_values_from_solr({:name=>0},:role,:roleTerm)
|
313
|
-
ar.length.
|
314
|
-
ar.include?("creator").
|
315
|
-
ar.include?("submitter").
|
316
|
-
@mods_ds.get_values_from_solr({:name=>1},:role,:roleTerm).
|
317
|
-
@mods_ds.get_values_from_solr({:name=>0},{:role=>0},:roleTerm).
|
318
|
-
@mods_ds.get_values_from_solr({:name=>0},{:role=>1},:roleTerm).
|
319
|
-
@mods_ds.get_values_from_solr({:name=>0},{:role=>2},:roleTerm).
|
320
|
-
@mods_ds.get_values_from_solr({:name=>1},{:role=>0},:roleTerm).
|
321
|
-
@mods_ds.get_values_from_solr({:name=>1},{:role=>1},:roleTerm).
|
313
|
+
expect(ar.length).to eq(2)
|
314
|
+
expect(ar.include?("creator")).to eq(true)
|
315
|
+
expect(ar.include?("submitter")).to eq(true)
|
316
|
+
expect(@mods_ds.get_values_from_solr({:name=>1},:role,:roleTerm)).to eq(["teacher"])
|
317
|
+
expect(@mods_ds.get_values_from_solr({:name=>0},{:role=>0},:roleTerm)).to eq(["creator"])
|
318
|
+
expect(@mods_ds.get_values_from_solr({:name=>0},{:role=>1},:roleTerm)).to eq(["submitter"])
|
319
|
+
expect(@mods_ds.get_values_from_solr({:name=>0},{:role=>2},:roleTerm)).to eq([])
|
320
|
+
expect(@mods_ds.get_values_from_solr({:name=>1},{:role=>0},:roleTerm)).to eq(["teacher"])
|
321
|
+
expect(@mods_ds.get_values_from_solr({:name=>1},{:role=>1},:roleTerm)).to eq([])
|
322
322
|
ar = @mods_ds.get_values_from_solr(:name,{:role=>0},:roleTerm)
|
323
|
-
ar.length.
|
324
|
-
ar.include?("creator").
|
325
|
-
ar.include?("teacher").
|
326
|
-
@mods_ds.get_values_from_solr(:name,{:role=>1},:roleTerm).
|
323
|
+
expect(ar.length).to eq(2)
|
324
|
+
expect(ar.include?("creator")).to eq(true)
|
325
|
+
expect(ar.include?("teacher")).to eq(true)
|
326
|
+
expect(@mods_ds.get_values_from_solr(:name,{:role=>1},:roleTerm)).to eq(["submitter"])
|
327
327
|
end
|
328
328
|
end
|
329
329
|
|
330
330
|
describe '.has_solr_name?' do
|
331
331
|
it "should return true if the given key exists in the solr document passed in" do
|
332
|
-
@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_0_role_0_roleTerm", type: :string),@solr_doc).
|
333
|
-
@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_0_role_0_roleTerm", type: :string).to_sym,@solr_doc).
|
334
|
-
@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_1_role_1_roleTerm", type: :string),@solr_doc).
|
332
|
+
expect(@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_0_role_0_roleTerm", type: :string),@solr_doc)).to eq(true)
|
333
|
+
expect(@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_0_role_0_roleTerm", type: :string).to_sym,@solr_doc)).to eq(true)
|
334
|
+
expect(@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_1_role_1_roleTerm", type: :string),@solr_doc)).to eq(false)
|
335
335
|
#if not doc passed in should be new empty solr doc and always return false
|
336
|
-
@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_0_role_0_roleTerm", type: :string)).
|
336
|
+
expect(@test_ds.has_solr_name?(ActiveFedora::SolrService.solr_name("test_ds__name_0_role_0_roleTerm", type: :string))).to eq(false)
|
337
337
|
end
|
338
338
|
end
|
339
339
|
|
340
340
|
describe '.is_hierarchical_term_pointer?' do
|
341
341
|
it "should return true only if the pointer passed in is an array that contains a hash" do
|
342
|
-
@test_ds.is_hierarchical_term_pointer?(*[:image,{:tag1=>1},:tag2]).
|
343
|
-
@test_ds.is_hierarchical_term_pointer?(*[:image,:tag1,{:tag2=>1}]).
|
344
|
-
@test_ds.is_hierarchical_term_pointer?(*[:image,:tag1,:tag2]).
|
345
|
-
@test_ds.is_hierarchical_term_pointer?(nil).
|
342
|
+
expect(@test_ds.is_hierarchical_term_pointer?(*[:image,{:tag1=>1},:tag2])).to eq(true)
|
343
|
+
expect(@test_ds.is_hierarchical_term_pointer?(*[:image,:tag1,{:tag2=>1}])).to eq(true)
|
344
|
+
expect(@test_ds.is_hierarchical_term_pointer?(*[:image,:tag1,:tag2])).to eq(false)
|
345
|
+
expect(@test_ds.is_hierarchical_term_pointer?(nil)).to eq(false)
|
346
346
|
end
|
347
347
|
end
|
348
348
|
|
@@ -360,11 +360,11 @@ describe ActiveFedora::OmDatastream do
|
|
360
360
|
rescue
|
361
361
|
found_exception = true
|
362
362
|
end
|
363
|
-
found_exception.
|
363
|
+
expect(found_exception).to eq(true)
|
364
364
|
end
|
365
365
|
|
366
366
|
it "should update a value internally call OM::XML::TermValueOperators::update_values if internal_solr_doc is not set" do
|
367
|
-
@mods_ds.
|
367
|
+
allow(@mods_ds).to receive(:om_update_values).once()
|
368
368
|
term_pointer = [:name,:role,:roleTerm]
|
369
369
|
@mods_ds.update_values([{":person"=>"0"}, "role", "text"]=>{"0"=>"role1", "1"=>"role2", "2"=>"role3"})
|
370
370
|
end
|
@@ -373,7 +373,7 @@ describe ActiveFedora::OmDatastream do
|
|
373
373
|
mods_ds = Hydra::ModsArticleDatastream.new
|
374
374
|
mods_ds.content=fixture(File.join("mods_articles","mods_article1.xml")).read
|
375
375
|
mods_ds.update_values([{":person"=>"0"}, "role", "text"]=>{"0"=>"role1", "1"=>"role2", "2"=>"role3"})
|
376
|
-
mods_ds.
|
376
|
+
expect(mods_ds).to be_changed
|
377
377
|
end
|
378
378
|
end
|
379
379
|
|
@@ -385,7 +385,7 @@ describe ActiveFedora::OmDatastream do
|
|
385
385
|
end
|
386
386
|
|
387
387
|
it "should call OM::XML::term_values if internal_solr_doc is not set and return values from xml" do
|
388
|
-
@mods_ds.
|
388
|
+
allow(@mods_ds).to receive(:om_term_values).once()
|
389
389
|
term_pointer = [:name,:role,:roleTerm]
|
390
390
|
@mods_ds.term_values(*term_pointer)
|
391
391
|
end
|
@@ -394,7 +394,7 @@ describe ActiveFedora::OmDatastream do
|
|
394
394
|
it "should call get_values_from_solr if internal_solr_doc is set" do
|
395
395
|
@mods_ds.from_solr(@solr_doc)
|
396
396
|
term_pointer = [:name,:role,:roleTerm]
|
397
|
-
@mods_ds.
|
397
|
+
allow(@mods_ds).to receive(:get_values_from_solr).once()
|
398
398
|
@mods_ds.term_values(*term_pointer)
|
399
399
|
end
|
400
400
|
end
|
@@ -414,8 +414,8 @@ describe ActiveFedora::OmDatastream do
|
|
414
414
|
Object.send(:remove_const, :MyObj)
|
415
415
|
end
|
416
416
|
it "should not load the descMetadata datastream when calling content_changed?" do
|
417
|
-
@obj.inner_object.repository.
|
418
|
-
@obj.descMetadata.
|
417
|
+
expect(@obj.inner_object.repository).not_to receive(:datastream_dissemination).with(hash_including(:dsid=>'descMetadata'))
|
418
|
+
expect(@obj.descMetadata).not_to be_content_changed
|
419
419
|
end
|
420
420
|
end
|
421
421
|
end
|