active-fedora 6.7.8 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +938 -0
- data/.travis.yml +5 -6
- data/Gemfile +3 -1
- data/Rakefile +7 -5
- data/active-fedora.gemspec +7 -8
- data/lib/active_fedora/om_datastream.rb +1 -0
- data/lib/active_fedora/rdf_xml_writer.rb +31 -62
- data/lib/active_fedora/version.rb +1 -1
- data/spec/config_helper.rb +14 -14
- data/spec/integration/associations_spec.rb +232 -232
- data/spec/integration/attributes_spec.rb +11 -12
- data/spec/integration/auditable_spec.rb +10 -10
- data/spec/integration/base_spec.rb +163 -163
- data/spec/integration/bug_spec.rb +7 -7
- data/spec/integration/complex_rdf_datastream_spec.rb +88 -88
- data/spec/integration/datastream_collections_spec.rb +69 -69
- data/spec/integration/datastream_spec.rb +43 -43
- data/spec/integration/datastreams_spec.rb +63 -63
- data/spec/integration/delegating_spec.rb +14 -14
- data/spec/integration/delete_all_spec.rb +38 -42
- data/spec/integration/fedora_solr_sync_spec.rb +5 -5
- data/spec/integration/full_featured_model_spec.rb +101 -101
- data/spec/integration/has_many_associations_spec.rb +24 -24
- data/spec/integration/model_spec.rb +30 -30
- data/spec/integration/nested_attribute_spec.rb +41 -41
- data/spec/integration/ntriples_datastream_spec.rb +107 -107
- data/spec/integration/om_datastream_spec.rb +67 -67
- data/spec/integration/persistence_spec.rb +6 -6
- data/spec/integration/rdf_nested_attributes_spec.rb +56 -56
- data/spec/integration/relation_delegation_spec.rb +24 -26
- data/spec/integration/rels_ext_datastream_spec.rb +20 -20
- data/spec/integration/scoped_query_spec.rb +40 -41
- data/spec/integration/solr_instance_loader_spec.rb +4 -4
- data/spec/integration/solr_service_spec.rb +46 -46
- data/spec/rails3_test_app/config/application.rb +1 -1
- data/spec/rails3_test_app/config/environments/development.rb +0 -1
- data/spec/rails3_test_app/config/environments/production.rb +1 -1
- data/spec/rails3_test_app/spec/spec_helper.rb +3 -3
- data/spec/rails3_test_app/spec/unit/rails_3_init.rb +4 -4
- data/spec/samples/hydra-mods_article_datastream.rb +334 -334
- data/spec/samples/hydra-rights_metadata_datastream.rb +57 -57
- data/spec/samples/marpa-dc_datastream.rb +17 -17
- data/spec/samples/models/audio_record.rb +16 -16
- data/spec/samples/models/image.rb +2 -2
- data/spec/samples/models/mods_article.rb +5 -5
- data/spec/samples/models/oral_history.rb +18 -18
- data/spec/samples/models/seminar.rb +24 -24
- data/spec/samples/models/seminar_audio_file.rb +17 -17
- data/spec/samples/oral_history_sample_model.rb +21 -21
- data/spec/samples/special_thing.rb +14 -14
- data/spec/spec_helper.rb +7 -11
- data/spec/support/an_active_model.rb +2 -2
- data/spec/support/mock_fedora.rb +16 -17
- data/spec/unit/active_fedora_spec.rb +58 -58
- data/spec/unit/association_proxy_spec.rb +5 -7
- data/spec/unit/base_active_model_spec.rb +25 -26
- data/spec/unit/base_cma_spec.rb +5 -5
- data/spec/unit/base_datastream_management_spec.rb +27 -27
- data/spec/unit/base_delegate_spec.rb +80 -82
- data/spec/unit/base_delegate_to_spec.rb +37 -39
- data/spec/unit/base_extra_spec.rb +48 -48
- data/spec/unit/base_spec.rb +300 -300
- data/spec/unit/callback_spec.rb +19 -19
- data/spec/unit/code_configurator_spec.rb +17 -17
- data/spec/unit/config_spec.rb +16 -8
- data/spec/unit/content_model_spec.rb +60 -60
- data/spec/unit/datastream_collections_spec.rb +229 -229
- data/spec/unit/datastream_spec.rb +57 -54
- data/spec/unit/datastreams_spec.rb +77 -77
- data/spec/unit/file_configurator_spec.rb +217 -217
- data/spec/unit/has_and_belongs_to_many_collection_spec.rb +26 -26
- data/spec/unit/has_many_collection_spec.rb +9 -9
- data/spec/unit/inheritance_spec.rb +12 -13
- data/spec/unit/model_spec.rb +41 -51
- data/spec/unit/nom_datastream_spec.rb +15 -15
- data/spec/unit/ntriples_datastream_spec.rb +112 -112
- data/spec/unit/om_datastream_spec.rb +233 -227
- data/spec/unit/persistence_spec.rb +6 -6
- data/spec/unit/predicates_spec.rb +73 -73
- data/spec/unit/property_spec.rb +9 -17
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +33 -33
- data/spec/unit/query_spec.rb +188 -217
- data/spec/unit/rdf_datastream_spec.rb +28 -21
- data/spec/unit/rdf_list_nested_attributes_spec.rb +34 -34
- data/spec/unit/rdf_list_spec.rb +80 -104
- data/spec/unit/rdf_node_spec.rb +7 -7
- data/spec/unit/rdf_xml_writer_spec.rb +10 -10
- data/spec/unit/rdfxml_rdf_datastream_spec.rb +27 -27
- data/spec/unit/relationship_graph_spec.rb +51 -51
- data/spec/unit/rels_ext_datastream_spec.rb +75 -69
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +15 -15
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +15 -15
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +15 -15
- data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +12 -12
- data/spec/unit/rubydora_connection_spec.rb +5 -5
- data/spec/unit/semantic_node_spec.rb +59 -59
- data/spec/unit/serializers_spec.rb +4 -4
- data/spec/unit/service_definitions_spec.rb +26 -26
- data/spec/unit/simple_datastream_spec.rb +17 -17
- data/spec/unit/solr_config_options_spec.rb +27 -28
- data/spec/unit/solr_digital_object_spec.rb +21 -21
- data/spec/unit/solr_service_spec.rb +81 -81
- data/spec/unit/unsaved_digital_object_spec.rb +20 -20
- data/spec/unit/validations_spec.rb +21 -21
- metadata +70 -58
- data/gemfiles/gemfile.rails3 +0 -11
- data/gemfiles/gemfile.rails4 +0 -10
|
@@ -2,12 +2,19 @@
|
|
|
2
2
|
require 'spec_helper'
|
|
3
3
|
|
|
4
4
|
describe ActiveFedora::RDFDatastream do
|
|
5
|
-
describe
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
describe 'a new instance' do
|
|
6
|
+
describe '#metadata?' do
|
|
7
|
+
subject { super().metadata? }
|
|
8
|
+
it { is_expected.to be_truthy}
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe '#content_changed?' do
|
|
12
|
+
subject { super().content_changed? }
|
|
13
|
+
it { is_expected.to be_falsey}
|
|
14
|
+
end
|
|
8
15
|
end
|
|
9
16
|
describe "an instance that exists in the datastore, but hasn't been loaded" do
|
|
10
|
-
before do
|
|
17
|
+
before do
|
|
11
18
|
class MyDatastream < ActiveFedora::NtriplesRDFDatastream
|
|
12
19
|
map_predicates do |map|
|
|
13
20
|
map.title(in: RDF::DC)
|
|
@@ -26,43 +33,43 @@ describe ActiveFedora::RDFDatastream do
|
|
|
26
33
|
Object.send(:remove_const, :MyDatastream)
|
|
27
34
|
Object.send(:remove_const, :MyObj)
|
|
28
35
|
end
|
|
29
|
-
subject { @obj.reload.descMetadata }
|
|
30
|
-
it
|
|
31
|
-
@obj.inner_object.repository.
|
|
32
|
-
subject.
|
|
36
|
+
subject { @obj.reload.descMetadata }
|
|
37
|
+
it 'should not load the descMetadata datastream when calling content_changed?' do
|
|
38
|
+
expect(@obj.inner_object.repository).not_to receive(:datastream_dissemination).with(hash_including(:dsid => 'descMetadata'))
|
|
39
|
+
expect(subject).not_to be_content_changed
|
|
33
40
|
end
|
|
34
41
|
|
|
35
|
-
it
|
|
42
|
+
it 'should allow asserting an empty string' do
|
|
36
43
|
subject.title = ['']
|
|
37
|
-
subject.title.
|
|
44
|
+
expect(subject.title).to eq([''])
|
|
38
45
|
end
|
|
39
46
|
|
|
40
|
-
describe
|
|
41
|
-
it
|
|
47
|
+
describe 'when multivalue: false' do
|
|
48
|
+
it 'should return single values' do
|
|
42
49
|
subject.description = 'my description'
|
|
43
|
-
subject.description.
|
|
50
|
+
expect(subject.description).to eq('my description')
|
|
44
51
|
end
|
|
45
52
|
end
|
|
46
53
|
|
|
47
|
-
it
|
|
54
|
+
it 'should clear stuff' do
|
|
48
55
|
subject.title = ['one', 'two', 'three']
|
|
49
56
|
subject.title.clear
|
|
50
|
-
subject.graph.query([subject.rdf_subject, RDF::DC.title, nil]).first.
|
|
57
|
+
expect(subject.graph.query([subject.rdf_subject, RDF::DC.title, nil]).first).to be_nil
|
|
51
58
|
end
|
|
52
59
|
|
|
53
|
-
it
|
|
54
|
-
MyDatastream.fields.
|
|
60
|
+
it 'should have a list of fields' do
|
|
61
|
+
expect(MyDatastream.fields).to eq([:title, :description])
|
|
55
62
|
end
|
|
56
63
|
end
|
|
57
64
|
|
|
58
|
-
describe
|
|
59
|
-
it
|
|
65
|
+
describe 'deserialize' do
|
|
66
|
+
it 'should be able to handle non-utf-8 characters' do
|
|
60
67
|
# see https://github.com/ruby-rdf/rdf/issues/142
|
|
61
68
|
ds = ActiveFedora::NtriplesRDFDatastream.new
|
|
62
69
|
data = "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n\xE2\x80\x99 \" .\n".force_encoding('ASCII-8BIT')
|
|
63
|
-
|
|
70
|
+
|
|
64
71
|
result = ds.deserialize(data)
|
|
65
|
-
result.dump(:ntriples).
|
|
72
|
+
expect(result.dump(:ntriples)).to eq("<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n")
|
|
66
73
|
end
|
|
67
74
|
end
|
|
68
75
|
end
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe ActiveFedora::RdfList do
|
|
4
4
|
before :each do
|
|
5
|
-
class MADS < RDF::Vocabulary(
|
|
5
|
+
class MADS < RDF::Vocabulary('http://www.loc.gov/mads/rdf/v1#')
|
|
6
6
|
property :MADSScheme
|
|
7
7
|
property :isMemberOfMADSScheme
|
|
8
8
|
property :authoritativeLabel
|
|
@@ -18,22 +18,22 @@ describe ActiveFedora::RdfList do
|
|
|
18
18
|
include ActiveFedora::RdfObject
|
|
19
19
|
rdf_type MADS.TopicElement
|
|
20
20
|
map_predicates do |map|
|
|
21
|
-
map.elementValue(:in=> MADS)
|
|
21
|
+
map.elementValue(:in => MADS)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
class TemporalElement
|
|
25
25
|
include ActiveFedora::RdfObject
|
|
26
26
|
rdf_type MADS.TemporalElement
|
|
27
27
|
map_predicates do |map|
|
|
28
|
-
map.elementValue(:in=> MADS)
|
|
28
|
+
map.elementValue(:in => MADS)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
class ElementList
|
|
32
32
|
include ActiveFedora::RdfList
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
map_predicates do |map|
|
|
35
|
-
map.topicElement(:in=> MADS, :to =>
|
|
36
|
-
map.temporalElement(:in=> MADS, :to =>
|
|
35
|
+
map.topicElement(:in => MADS, :to => 'TopicElement', :class_name => 'TopicElement')
|
|
36
|
+
map.temporalElement(:in => MADS, :to => 'TemporalElement', :class_name => 'TemporalElement')
|
|
37
37
|
end
|
|
38
38
|
accepts_nested_attributes_for :topicElement, :temporalElement
|
|
39
39
|
end
|
|
@@ -44,7 +44,7 @@ describe ActiveFedora::RdfList do
|
|
|
44
44
|
rdf_subject { |ds| RDF::URI.new(Rails.configuration.id_namespace + ds.pid)}
|
|
45
45
|
map_predicates do |map|
|
|
46
46
|
map.name(:in => MADS, :to => 'authoritativeLabel')
|
|
47
|
-
map.elementList(:in => MADS, :class_name=>'ElementList')
|
|
47
|
+
map.elementList(:in => MADS, :class_name => 'ElementList')
|
|
48
48
|
map.externalAuthority(:in => MADS, :to => 'hasExactExternalAuthority')
|
|
49
49
|
end
|
|
50
50
|
accepts_nested_attributes_for :elementList
|
|
@@ -57,15 +57,15 @@ describe ActiveFedora::RdfList do
|
|
|
57
57
|
Object.send(:remove_const, :TemporalElement)
|
|
58
58
|
Object.send(:remove_const, :MADS)
|
|
59
59
|
end
|
|
60
|
-
|
|
61
|
-
describe
|
|
62
|
-
it
|
|
60
|
+
|
|
61
|
+
describe 'nested_attributes' do
|
|
62
|
+
it 'should insert new nodes into RdfLists (rather than calling .build)' do
|
|
63
63
|
params = {
|
|
64
64
|
topic: {
|
|
65
|
-
name:
|
|
66
|
-
externalAuthority:
|
|
65
|
+
name: 'Baseball',
|
|
66
|
+
externalAuthority: 'http://id.loc.gov/authorities/subjects/sh85012026',
|
|
67
67
|
elementList_attributes: [
|
|
68
|
-
topicElement_attributes: [{ elementValue:
|
|
68
|
+
topicElement_attributes: [{ elementValue: 'Baseball' }, elementValue: 'Football']
|
|
69
69
|
]
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -73,25 +73,25 @@ describe ActiveFedora::RdfList do
|
|
|
73
73
|
topic = Topic.new(RDF::Graph.new)
|
|
74
74
|
topic.attributes = params[:topic]
|
|
75
75
|
# puts topic.graph.dump(:ntriples)
|
|
76
|
-
topic.elementList.first.size.
|
|
77
|
-
topic.elementList.first[0].
|
|
78
|
-
topic.elementList.first[0].elementValue.
|
|
79
|
-
topic.elementList.first[1].
|
|
80
|
-
topic.elementList.first[1].elementValue.
|
|
76
|
+
expect(topic.elementList.first.size).to eq(2)
|
|
77
|
+
expect(topic.elementList.first[0]).to be_kind_of(TopicElement)
|
|
78
|
+
expect(topic.elementList.first[0].elementValue).to eq(['Baseball'])
|
|
79
|
+
expect(topic.elementList.first[1]).to be_kind_of(TopicElement)
|
|
80
|
+
expect(topic.elementList.first[1].elementValue).to eq(['Football'])
|
|
81
81
|
|
|
82
82
|
# only one rdf:rest rdf:nil
|
|
83
|
-
topic.graph.query([nil, RDF.rest, RDF.nil]).size.
|
|
83
|
+
expect(topic.graph.query([nil, RDF.rest, RDF.nil]).size).to eq(1)
|
|
84
84
|
end
|
|
85
|
-
it
|
|
86
|
-
# It's Not clear what the syntax should be when an RDF list contains multiple types of sub-nodes.
|
|
85
|
+
it 'should insert new nodes of varying types into RdfLists (rather than calling .build)' do
|
|
86
|
+
# It's Not clear what the syntax should be when an RDF list contains multiple types of sub-nodes.
|
|
87
87
|
# This is a guess, which currently works.
|
|
88
88
|
params = {
|
|
89
89
|
topic: {
|
|
90
|
-
name:
|
|
91
|
-
externalAuthority:
|
|
90
|
+
name: 'Baseball',
|
|
91
|
+
externalAuthority: 'http://id.loc.gov/authorities/subjects/sh85012026',
|
|
92
92
|
elementList_attributes: [
|
|
93
|
-
topicElement_attributes: [{ elementValue:
|
|
94
|
-
temporalElement_attributes: [{elementValue:
|
|
93
|
+
topicElement_attributes: [{ elementValue: 'Baseball' }, elementValue: 'Football'],
|
|
94
|
+
temporalElement_attributes: [{elementValue: '1960'}, {elementValue: 'Twentieth Century'}]
|
|
95
95
|
]
|
|
96
96
|
}
|
|
97
97
|
}
|
|
@@ -99,15 +99,15 @@ describe ActiveFedora::RdfList do
|
|
|
99
99
|
topic = Topic.new(RDF::Graph.new)
|
|
100
100
|
topic.attributes = params[:topic]
|
|
101
101
|
# puts topic.graph.dump(:ntriples)
|
|
102
|
-
topic.elementList.first.size.
|
|
103
|
-
topic.elementList.first[0].
|
|
104
|
-
topic.elementList.first[0].elementValue.
|
|
105
|
-
topic.elementList.first[1].
|
|
106
|
-
topic.elementList.first[1].elementValue.
|
|
107
|
-
topic.elementList.first[2].
|
|
108
|
-
topic.elementList.first[2].elementValue.
|
|
109
|
-
topic.elementList.first[3].
|
|
110
|
-
topic.elementList.first[3].elementValue.
|
|
102
|
+
expect(topic.elementList.first.size).to eq(4)
|
|
103
|
+
expect(topic.elementList.first[0]).to be_kind_of(TopicElement)
|
|
104
|
+
expect(topic.elementList.first[0].elementValue).to eq(['Baseball'])
|
|
105
|
+
expect(topic.elementList.first[1]).to be_kind_of(TopicElement)
|
|
106
|
+
expect(topic.elementList.first[1].elementValue).to eq(['Football'])
|
|
107
|
+
expect(topic.elementList.first[2]).to be_kind_of(TemporalElement)
|
|
108
|
+
expect(topic.elementList.first[2].elementValue).to eq(['1960'])
|
|
109
|
+
expect(topic.elementList.first[3]).to be_kind_of(TemporalElement)
|
|
110
|
+
expect(topic.elementList.first[3].elementValue).to eq(['Twentieth Century'])
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
end
|
data/spec/unit/rdf_list_spec.rb
CHANGED
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe ActiveFedora::RdfList do
|
|
4
4
|
before :each do
|
|
5
|
-
class MADS < RDF::Vocabulary(
|
|
5
|
+
class MADS < RDF::Vocabulary('http://www.loc.gov/mads/rdf/v1#')
|
|
6
6
|
property :complexSubject
|
|
7
7
|
property :authoritativeLabel
|
|
8
8
|
property :elementList
|
|
@@ -12,27 +12,27 @@ describe ActiveFedora::RdfList do
|
|
|
12
12
|
end
|
|
13
13
|
class DemoList < ActiveFedora::RdfxmlRDFDatastream
|
|
14
14
|
map_predicates do |map|
|
|
15
|
-
map.elementList(:in => MADS, :to => 'elementList', :class_name=>'List')
|
|
16
|
-
end
|
|
17
|
-
class List
|
|
15
|
+
map.elementList(:in => MADS, :to => 'elementList', :class_name => 'List')
|
|
16
|
+
end
|
|
17
|
+
class List
|
|
18
18
|
include ActiveFedora::RdfList
|
|
19
19
|
map_predicates do |map|
|
|
20
|
-
map.topicElement(:in=> MADS, :to =>
|
|
21
|
-
map.temporalElement(:in=> MADS, :to =>
|
|
20
|
+
map.topicElement(:in => MADS, :to => 'TopicElement', :class_name => 'TopicElement')
|
|
21
|
+
map.temporalElement(:in => MADS, :to => 'TemporalElement', :class_name => 'TemporalElement')
|
|
22
22
|
end
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
class TopicElement
|
|
25
25
|
include ActiveFedora::RdfObject
|
|
26
26
|
rdf_type MADS.TopicElement
|
|
27
|
-
map_predicates do |map|
|
|
28
|
-
map.elementValue(:in=> MADS)
|
|
27
|
+
map_predicates do |map|
|
|
28
|
+
map.elementValue(:in => MADS)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
class TemporalElement
|
|
32
32
|
include ActiveFedora::RdfObject
|
|
33
33
|
rdf_type MADS.TemporalElement
|
|
34
|
-
map_predicates do |map|
|
|
35
|
-
map.elementValue(:in=> MADS)
|
|
34
|
+
map_predicates do |map|
|
|
35
|
+
map.elementValue(:in => MADS)
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -43,102 +43,91 @@ describe ActiveFedora::RdfList do
|
|
|
43
43
|
Object.send(:remove_const, :MADS)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
describe
|
|
47
|
-
let (:ds) { DemoList.new(double('inner object', :pid=>'foo', :new_record? =>true), 'descMetadata')}
|
|
46
|
+
describe 'a new list' do
|
|
47
|
+
let (:ds) { DemoList.new(double('inner object', :pid => 'foo', :new_record? => true), 'descMetadata')}
|
|
48
48
|
subject { ds.elementList.build}
|
|
49
49
|
|
|
50
|
-
it
|
|
51
|
-
subject.
|
|
52
|
-
subject.size.
|
|
50
|
+
it 'should insert at the end' do
|
|
51
|
+
expect(subject).to be_kind_of DemoList::List
|
|
52
|
+
expect(subject.size).to eq(0)
|
|
53
53
|
subject[1] = DemoList::List::TopicElement.new(subject.graph)
|
|
54
|
-
subject.size.
|
|
54
|
+
expect(subject.size).to eq(2)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
it
|
|
58
|
-
subject.
|
|
59
|
-
subject.size.
|
|
57
|
+
it 'should insert at the head' do
|
|
58
|
+
expect(subject).to be_kind_of DemoList::List
|
|
59
|
+
expect(subject.size).to eq(0)
|
|
60
60
|
subject[0] = DemoList::List::TopicElement.new(subject.graph)
|
|
61
|
-
subject.size.
|
|
61
|
+
expect(subject.size).to eq(1)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
describe
|
|
64
|
+
describe 'that has 4 elements' do
|
|
65
65
|
before do
|
|
66
66
|
subject[3] = DemoList::List::TopicElement.new(subject.graph)
|
|
67
|
-
subject.size.
|
|
67
|
+
expect(subject.size).to eq(4)
|
|
68
68
|
end
|
|
69
|
-
it
|
|
69
|
+
it 'should insert in the middle' do
|
|
70
70
|
subject[1] = DemoList::List::TopicElement.new(subject.graph)
|
|
71
|
-
subject.size.
|
|
71
|
+
expect(subject.size).to eq(4)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
describe
|
|
76
|
-
it
|
|
77
|
-
subject[0] = RDF::URI.new
|
|
75
|
+
describe 'return updated xml' do
|
|
76
|
+
it 'should be built' do
|
|
77
|
+
subject[0] = RDF::URI.new 'http://library.ucsd.edu/ark:/20775/bbXXXXXXX6'
|
|
78
78
|
subject[1] = DemoList::List::TopicElement.new(ds.graph)
|
|
79
|
-
subject[1].elementValue =
|
|
80
|
-
subject[2] = RDF::URI.new
|
|
79
|
+
subject[1].elementValue = 'Relations with Mexican Americans'
|
|
80
|
+
subject[2] = RDF::URI.new 'http://library.ucsd.edu/ark:/20775/bbXXXXXXX4'
|
|
81
81
|
subject[3] = DemoList::List::TemporalElement.new(ds.graph)
|
|
82
82
|
subject[3].elementValue = "20th century"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
<mads:elementValue>Relations with Mexican Americans</mads:elementValue>
|
|
92
|
-
</mads:TopicElement>
|
|
93
|
-
<rdf:Description rdf:about="http://library.ucsd.edu/ark:/20775/bbXXXXXXX4"/>
|
|
94
|
-
<mads:TemporalElement>
|
|
95
|
-
<mads:elementValue>20th century</mads:elementValue>
|
|
96
|
-
</mads:TemporalElement>
|
|
97
|
-
</mads:elementList>
|
|
98
|
-
</rdf:Description>
|
|
99
|
-
</rdf:RDF>
|
|
100
|
-
END
|
|
101
|
-
ds.content.should be_equivalent_to expected_xml
|
|
83
|
+
doc = Nokogiri::XML(ds.content)
|
|
84
|
+
ns = {rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", mads: "http://www.loc.gov/mads/rdf/v1#"}
|
|
85
|
+
expect(doc.xpath('/rdf:RDF/rdf:Description/@rdf:about', ns).map(&:value)).to eq ["info:fedora/foo"]
|
|
86
|
+
expect(doc.xpath('//rdf:Description/mads:elementList/@rdf:parseType', ns).map(&:value)).to eq ["Collection"]
|
|
87
|
+
expect(doc.xpath('//rdf:Description/mads:elementList/*[position() = 1]/@rdf:about', ns).map(&:value)).to eq ["http://library.ucsd.edu/ark:/20775/bbXXXXXXX6"]
|
|
88
|
+
expect(doc.xpath('//rdf:Description/mads:elementList/*[position() = 2]/mads:elementValue', ns).map(&:text)).to eq ["Relations with Mexican Americans"]
|
|
89
|
+
expect(doc.xpath('//rdf:Description/mads:elementList/*[position() = 3]/@rdf:about', ns).map(&:value)).to eq ["http://library.ucsd.edu/ark:/20775/bbXXXXXXX4"]
|
|
90
|
+
expect(doc.xpath('//rdf:Description/mads:elementList/*[position() = 4]/mads:elementValue', ns).map(&:text)).to eq ["20th century"]
|
|
102
91
|
end
|
|
103
92
|
end
|
|
104
93
|
|
|
105
94
|
|
|
106
95
|
end
|
|
107
96
|
|
|
108
|
-
describe
|
|
109
|
-
subject { DemoList.new(double('inner object', :pid=>'foo', :new_record? =>true)).elementList.build }
|
|
110
|
-
it
|
|
111
|
-
subject.to_ary.
|
|
97
|
+
describe 'an empty list' do
|
|
98
|
+
subject { DemoList.new(double('inner object', :pid => 'foo', :new_record? => true)).elementList.build }
|
|
99
|
+
it 'should have to_ary' do
|
|
100
|
+
expect(subject.to_ary).to eq([])
|
|
112
101
|
end
|
|
113
102
|
end
|
|
114
103
|
|
|
115
|
-
describe
|
|
116
|
-
let(:ds) { DemoList.new(double('inner object', :pid=>'foo', :new_record? =>true)) }
|
|
117
|
-
let(:list) { ds.elementList.build }
|
|
104
|
+
describe 'a list that has a constructed element' do
|
|
105
|
+
let(:ds) { DemoList.new(double('inner object', :pid => 'foo', :new_record? => true)) }
|
|
106
|
+
let(:list) { ds.elementList.build }
|
|
118
107
|
let!(:topic) { list.topicElement.build }
|
|
119
|
-
|
|
120
|
-
it
|
|
121
|
-
list.to_ary.size.
|
|
122
|
-
list.to_ary.first.class.
|
|
108
|
+
|
|
109
|
+
it 'should have to_ary' do
|
|
110
|
+
expect(list.to_ary.size).to eq(1)
|
|
111
|
+
expect(list.to_ary.first.class).to eq(DemoList::List::TopicElement)
|
|
123
112
|
end
|
|
124
113
|
|
|
125
|
-
it
|
|
114
|
+
it 'should be able to be cleared' do
|
|
126
115
|
list.topicElement.build
|
|
127
116
|
list.topicElement.build
|
|
128
117
|
list.topicElement.build
|
|
129
|
-
list.size.
|
|
118
|
+
expect(list.size).to eq(4)
|
|
130
119
|
list.clear
|
|
131
|
-
list.size.
|
|
120
|
+
expect(list.size).to eq(0)
|
|
132
121
|
end
|
|
133
122
|
end
|
|
134
123
|
|
|
135
|
-
describe
|
|
124
|
+
describe 'a list with content' do
|
|
136
125
|
subject do
|
|
137
|
-
subject = DemoList.new(double('inner object', :pid=>'foo', :new_record? =>true), 'descMetadata')
|
|
138
|
-
subject.content
|
|
126
|
+
subject = DemoList.new(double('inner object', :pid => 'foo', :new_record? => true), 'descMetadata')
|
|
127
|
+
subject.content = <<END
|
|
139
128
|
<rdf:RDF
|
|
140
129
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:mads="http://www.loc.gov/mads/rdf/v1#">
|
|
141
|
-
|
|
130
|
+
|
|
142
131
|
<mads:ComplexSubject rdf:about="info:fedora/foo">
|
|
143
132
|
<mads:elementList rdf:parseType="Collection">
|
|
144
133
|
<rdf:Description rdf:about="http://library.ucsd.edu/ark:/20775/bbXXXXXXX6"/>
|
|
@@ -156,60 +145,47 @@ END
|
|
|
156
145
|
|
|
157
146
|
subject
|
|
158
147
|
end
|
|
159
|
-
it
|
|
160
|
-
subject.rdf_subject.to_s.
|
|
148
|
+
it 'should have a subject' do
|
|
149
|
+
expect(subject.rdf_subject.to_s).to eq('info:fedora/foo')
|
|
161
150
|
end
|
|
162
151
|
|
|
163
152
|
let (:list) { subject.elementList.first }
|
|
164
153
|
|
|
165
|
-
it
|
|
166
|
-
list.first.
|
|
167
|
-
list[1].
|
|
168
|
-
list[1].elementValue.
|
|
169
|
-
list[2].
|
|
170
|
-
list[3].
|
|
171
|
-
list[3].elementValue.
|
|
154
|
+
it 'should have fields' do
|
|
155
|
+
expect(list.first).to eq('http://library.ucsd.edu/ark:/20775/bbXXXXXXX6')
|
|
156
|
+
expect(list[1]).to be_kind_of DemoList::List::TopicElement
|
|
157
|
+
expect(list[1].elementValue).to eq(['Relations with Mexican Americans'])
|
|
158
|
+
expect(list[2]).to eq('http://library.ucsd.edu/ark:/20775/bbXXXXXXX4')
|
|
159
|
+
expect(list[3]).to be_kind_of DemoList::List::TemporalElement
|
|
160
|
+
expect(list[3].elementValue).to eq(['20th century'])
|
|
172
161
|
end
|
|
173
162
|
|
|
174
|
-
it
|
|
163
|
+
it 'should have each' do
|
|
175
164
|
foo = []
|
|
176
165
|
list.each { |n| foo << n.class }
|
|
177
|
-
foo.
|
|
166
|
+
expect(foo).to eq([RDF::URI, DemoList::List::TopicElement, RDF::URI, DemoList::List::TemporalElement])
|
|
178
167
|
end
|
|
179
168
|
|
|
180
|
-
it
|
|
169
|
+
it 'should have to_ary' do
|
|
181
170
|
ary = list.to_ary
|
|
182
|
-
ary.size.
|
|
183
|
-
ary[1].elementValue.
|
|
171
|
+
expect(ary.size).to eq(4)
|
|
172
|
+
expect(ary[1].elementValue).to eq(['Relations with Mexican Americans'])
|
|
184
173
|
end
|
|
185
174
|
|
|
186
|
-
it
|
|
187
|
-
list.size.
|
|
175
|
+
it 'should have size' do
|
|
176
|
+
expect(list.size).to eq(4)
|
|
188
177
|
end
|
|
189
178
|
|
|
190
179
|
it "should update fields" do
|
|
191
180
|
list[3].elementValue = ["1900s"]
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
<mads:elementValue>Relations with Mexican Americans</mads:elementValue>
|
|
201
|
-
</mads:TopicElement>
|
|
202
|
-
<rdf:Description rdf:about="http://library.ucsd.edu/ark:/20775/bbXXXXXXX4"/>
|
|
203
|
-
<mads:TemporalElement>
|
|
204
|
-
<mads:elementValue>1900s</mads:elementValue>
|
|
205
|
-
</mads:TemporalElement>
|
|
206
|
-
</mads:elementList>
|
|
207
|
-
</mads:ComplexSubject>
|
|
208
|
-
</rdf:RDF>
|
|
209
|
-
|
|
210
|
-
END
|
|
211
|
-
subject.content.should be_equivalent_to expected_xml
|
|
181
|
+
doc = Nokogiri::XML(subject.content)
|
|
182
|
+
ns = {rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", mads: "http://www.loc.gov/mads/rdf/v1#"}
|
|
183
|
+
expect(doc.xpath('/rdf:RDF/mads:ComplexSubject/@rdf:about', ns).map(&:value)).to eq ["info:fedora/foo"]
|
|
184
|
+
expect(doc.xpath('//mads:ComplexSubject/mads:elementList/@rdf:parseType', ns).map(&:value)).to eq ["Collection"]
|
|
185
|
+
expect(doc.xpath('//mads:ComplexSubject/mads:elementList/*[position() = 1]/@rdf:about', ns).map(&:value)).to eq ["http://library.ucsd.edu/ark:/20775/bbXXXXXXX6"]
|
|
186
|
+
expect(doc.xpath('//mads:ComplexSubject/mads:elementList/*[position() = 2]/mads:elementValue', ns).map(&:text)).to eq ["Relations with Mexican Americans"]
|
|
187
|
+
expect(doc.xpath('//mads:ComplexSubject/mads:elementList/*[position() = 3]/@rdf:about', ns).map(&:value)).to eq ["http://library.ucsd.edu/ark:/20775/bbXXXXXXX4"]
|
|
188
|
+
expect(doc.xpath('//mads:ComplexSubject/mads:elementList/*[position() = 4]/mads:elementValue', ns).map(&:text)).to eq ["1900s"]
|
|
212
189
|
end
|
|
213
190
|
end
|
|
214
191
|
end
|
|
215
|
-
|