active-fedora 7.3.1 → 8.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +17 -7
- data/Gemfile +0 -3
- data/active-fedora.gemspec +5 -5
- data/gemfiles/rails3.gemfile +5 -0
- data/gemfiles/rails4.1.gemfile +5 -0
- data/gemfiles/rails4.gemfile +5 -0
- data/lib/active_fedora.rb +1 -1
- data/lib/active_fedora/associations/belongs_to_association.rb +8 -21
- data/lib/active_fedora/attributes.rb +13 -12
- data/lib/active_fedora/base.rb +1 -1
- data/lib/active_fedora/datastream.rb +3 -6
- data/lib/active_fedora/indexing.rb +1 -1
- data/lib/active_fedora/om_datastream.rb +1 -5
- data/lib/active_fedora/predicates.rb +2 -2
- data/lib/active_fedora/rdf.rb +6 -2
- data/lib/active_fedora/rdf/fcrepo.rb +326 -0
- data/lib/active_fedora/rdf/identifiable.rb +6 -3
- data/lib/active_fedora/rdf/indexing.rb +3 -15
- data/lib/active_fedora/rdf/persistence.rb +33 -0
- data/lib/active_fedora/rdf/project_hydra.rb +12 -0
- data/lib/active_fedora/rdf/rdf_datastream.rb +33 -15
- data/lib/active_fedora/rdf_xml_writer.rb +2 -2
- data/lib/active_fedora/relationship_graph.rb +8 -8
- data/lib/active_fedora/semantic_node.rb +3 -15
- data/lib/active_fedora/solr_digital_object.rb +2 -2
- data/lib/active_fedora/solr_service.rb +1 -8
- data/lib/active_fedora/version.rb +1 -1
- data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +24 -0
- data/lib/tasks/active_fedora_dev.rake +1 -1
- data/spec/integration/belongs_to_association_spec.rb +0 -5
- data/spec/integration/json_serialization_spec.rb +1 -1
- data/spec/integration/load_from_solr_spec.rb +8 -1
- data/spec/integration/ntriples_datastream_spec.rb +18 -18
- data/spec/integration/om_datastream_spec.rb +2 -2
- data/spec/integration/rdf_nested_attributes_spec.rb +1 -1
- data/spec/integration/relation_delegation_spec.rb +3 -3
- data/spec/samples/hydra-mods_article_datastream.rb +0 -4
- data/spec/support/an_active_model.rb +0 -4
- data/spec/unit/active_fedora_spec.rb +3 -3
- data/spec/unit/attributes_spec.rb +37 -54
- data/spec/unit/base_extra_spec.rb +0 -9
- data/spec/unit/om_datastream_spec.rb +14 -14
- data/spec/unit/rdf_resource_datastream_spec.rb +59 -9
- data/spec/unit/rdf_vocab_spec.rb +30 -0
- data/spec/unit/solr_digital_object_spec.rb +2 -2
- data/spec/unit/solr_service_spec.rb +0 -6
- data/spec/unit/validations_spec.rb +4 -4
- metadata +27 -32
- data/lib/active_fedora/rdf/object_resource.rb +0 -20
@@ -66,7 +66,7 @@ describe ActiveFedora::RDFDatastream do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should set values" do
|
69
|
-
subject.title = "blah"
|
69
|
+
subject.title = ["blah"]
|
70
70
|
expect(subject.descMetadata.title).to eq ["blah"]
|
71
71
|
end
|
72
72
|
|
@@ -105,7 +105,7 @@ describe ActiveFedora::RDFDatastream do
|
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should be persisted" do
|
108
|
-
expect(subject.descMetadata.resource.persisted?).to
|
108
|
+
expect(subject.descMetadata.resource.persisted?).to be true
|
109
109
|
end
|
110
110
|
|
111
111
|
context "and it's reloaded" do
|
@@ -146,7 +146,7 @@ describe ActiveFedora::RDFDatastream do
|
|
146
146
|
context "persisted to parent" do
|
147
147
|
before do
|
148
148
|
dummy = DummySubnode.new
|
149
|
-
dummy.title = 'subbla'
|
149
|
+
dummy.title = ['subbla']
|
150
150
|
subject.descMetadata.license = dummy
|
151
151
|
end
|
152
152
|
|
@@ -163,7 +163,7 @@ describe ActiveFedora::RDFDatastream do
|
|
163
163
|
DummySubnode.configure :repository => :default
|
164
164
|
DummySubnode.any_instance.stub(:repository).and_return(RDF::Repository.new)
|
165
165
|
dummy = DummySubnode.new(RDF::URI('http://example.org/dummy/blah'))
|
166
|
-
dummy.title = 'subbla'
|
166
|
+
dummy.title = ['subbla']
|
167
167
|
# We want to have to manually persist to the repository.
|
168
168
|
# Parent objects shouldn't be persisting children they share with other parents
|
169
169
|
dummy.persist!
|
@@ -196,9 +196,9 @@ describe ActiveFedora::RDFDatastream do
|
|
196
196
|
describe "relationships" do
|
197
197
|
before do
|
198
198
|
@new_object = DummyAsset.new
|
199
|
-
@new_object.title = "subbla"
|
199
|
+
@new_object.title = ["subbla"]
|
200
200
|
@new_object.save
|
201
|
-
subject.title = "bla"
|
201
|
+
subject.title = ["bla"]
|
202
202
|
subject.descMetadata.creator = @new_object
|
203
203
|
end
|
204
204
|
|
@@ -224,7 +224,7 @@ describe ActiveFedora::RDFDatastream do
|
|
224
224
|
end
|
225
225
|
|
226
226
|
it "should allow for deep attributes to be set directly" do
|
227
|
-
subject.descMetadata.creator.first.title = "Bla"
|
227
|
+
subject.descMetadata.creator.first.title = ["Bla"]
|
228
228
|
expect(subject.descMetadata.creator.first.title).to eq ["Bla"]
|
229
229
|
end
|
230
230
|
|
@@ -270,12 +270,12 @@ describe ActiveFedora::RDFDatastream do
|
|
270
270
|
context 'when the object has no Rdf::Resource' do
|
271
271
|
before do
|
272
272
|
class DummyOmAsset < ActiveFedora::Base
|
273
|
-
has_metadata :name => 'descMetadata', :type => OmDatastream
|
273
|
+
has_metadata :name => 'descMetadata', :type => ActiveFedora::OmDatastream
|
274
274
|
end
|
275
275
|
|
276
276
|
@new_object = DummyOmAsset.new
|
277
277
|
@new_object.save
|
278
|
-
subject.title = "bla"
|
278
|
+
subject.title = ["bla"]
|
279
279
|
subject.descMetadata.creator = @new_object
|
280
280
|
subject.save
|
281
281
|
subject.reload
|
@@ -293,6 +293,56 @@ describe ActiveFedora::RDFDatastream do
|
|
293
293
|
expect{@new_object.resource << RDF::Statement.new(RDF::Node.new, RDF::DC.title, 'title')
|
294
294
|
}.to raise_error TypeError
|
295
295
|
end
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
context 'with custom resource' do
|
300
|
+
before do
|
301
|
+
|
302
|
+
class DummyATResource < ActiveTriples::Resource
|
303
|
+
configure :base_uri => 'http://example.org/at/obj#', :type => RDF::OWL.Thing
|
304
|
+
property :title, :predicate => RDF::DC.alternative
|
305
|
+
property :my_special_property, :predicate => RDF::DC.spatial
|
306
|
+
end
|
307
|
+
|
308
|
+
DummyResource.resource_class DummyATResource
|
309
|
+
end
|
310
|
+
|
311
|
+
after do
|
312
|
+
Object.send(:remove_const, "DummyATResource")
|
313
|
+
end
|
314
|
+
|
315
|
+
it 'lets me specify a resource class' do
|
316
|
+
expect(DummyResource.resource_class < DummyATResource).to be_true
|
317
|
+
end
|
318
|
+
|
319
|
+
it 'creates underlying resource of type resource_class' do
|
320
|
+
expect(subject.resource).to be_a DummyATResource
|
321
|
+
end
|
322
|
+
|
323
|
+
it 'has properties from resource_class' do
|
324
|
+
expect(subject.resource.class.properties).to include :my_special_property.to_s
|
325
|
+
end
|
326
|
+
|
327
|
+
it 'favors property configuration from datastream' do
|
328
|
+
expect(subject.resource.class.properties['title'].predicate).to eq RDF::DC.title
|
329
|
+
end
|
330
|
+
|
331
|
+
it 'exposes resource propreties to parent object via datastream' do
|
332
|
+
subject.resource.title = 'Wizard of Oz'
|
333
|
+
expect(subject.title).to eq subject.resource.title
|
334
|
+
end
|
335
|
+
|
336
|
+
it 'applies base_uri from resource class' do
|
337
|
+
expect(subject.resource.class.base_uri).to eq DummyATResource.base_uri
|
338
|
+
end
|
339
|
+
|
340
|
+
it 'applies rdf type from resource class' do
|
341
|
+
expect(subject.resource.class.type).to eq DummyATResource.type
|
342
|
+
end
|
343
|
+
|
344
|
+
it 'refuses to change resource_class once set' do
|
345
|
+
expect { DummyResource.resource_class(ActiveTriples::Resource) }.to raise_error ArgumentError
|
296
346
|
end
|
297
347
|
end
|
298
348
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe ActiveFedora::RDF do
|
5
|
+
describe ActiveFedora::RDF::Fcrepo do
|
6
|
+
it "should register the vocabularies" do
|
7
|
+
namespaces = [
|
8
|
+
"info:fedora/fedora-system:def/model#",
|
9
|
+
"info:fedora/fedora-system:def/view#",
|
10
|
+
"info:fedora/fedora-system:def/relations-external#",
|
11
|
+
"info:fedora/fedora-system:"
|
12
|
+
]
|
13
|
+
namespaces.each do |namespace|
|
14
|
+
vocab = RDF::Vocabulary.find(namespace)
|
15
|
+
expect(vocab.superclass).to be(RDF::StrictVocabulary)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
describe ActiveFedora::RDF::ProjectHydra do
|
20
|
+
it "should register the vocabularies" do
|
21
|
+
namespaces = [
|
22
|
+
"http://projecthydra.org/ns/relations#"
|
23
|
+
]
|
24
|
+
namespaces.each do |namespace|
|
25
|
+
vocab = RDF::Vocabulary.find(namespace)
|
26
|
+
expect(vocab.superclass).to be(RDF::StrictVocabulary)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -47,10 +47,10 @@ describe ActiveFedora::SolrDigitalObject do
|
|
47
47
|
expect(subject.fetch('author')).to be_empty
|
48
48
|
end
|
49
49
|
it "should grab values" do
|
50
|
-
expect(subject.fetch('title')).to eq 'foo'
|
50
|
+
expect(subject.fetch('title')).to eq ['foo']
|
51
51
|
end
|
52
52
|
it "should grab values" do
|
53
|
-
expect(subject.fetch('title')).to eq 'foo'
|
53
|
+
expect(subject.fetch('title')).to eq ['foo']
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should raise an error if the field isn't indexed" do
|
@@ -109,12 +109,6 @@ describe ActiveFedora::SolrService do
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
-
describe '#escape_uri_for_query' do
|
113
|
-
it "should escape : with a backslash" do
|
114
|
-
ActiveFedora::SolrService.escape_uri_for_query("my:pid").should == 'my\:pid'
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
112
|
describe ".query" do
|
119
113
|
it "should call solr" do
|
120
114
|
mock_conn = double("Connection")
|
@@ -24,14 +24,14 @@ describe ActiveFedora::Base do
|
|
24
24
|
|
25
25
|
describe "a valid object" do
|
26
26
|
before do
|
27
|
-
subject.attributes={ fubar:'here', swank:'long enough'}
|
27
|
+
subject.attributes = { fubar: ['here'], swank: 'long enough' }
|
28
28
|
end
|
29
29
|
|
30
30
|
it { should be_valid}
|
31
31
|
end
|
32
32
|
describe "an invalid object" do
|
33
33
|
before do
|
34
|
-
subject.attributes={ swank:'smal'}
|
34
|
+
subject.attributes = { swank: 'smal' }
|
35
35
|
end
|
36
36
|
it "should have errors" do
|
37
37
|
subject.should_not be_valid
|
@@ -42,8 +42,8 @@ describe ActiveFedora::Base do
|
|
42
42
|
|
43
43
|
describe "required terms" do
|
44
44
|
it "should be required" do
|
45
|
-
subject.required?(:fubar).should
|
46
|
-
subject.required?(:swank).should
|
45
|
+
subject.required?(:fubar).should be true
|
46
|
+
subject.required?(:swank).should be false
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 8.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,28 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 1.0.10
|
22
|
-
- - "<"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '3'
|
25
22
|
type: :runtime
|
26
23
|
prerelease: false
|
27
24
|
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
requirements:
|
29
|
-
- - "
|
26
|
+
- - "~>"
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: 1.0.10
|
32
|
-
- - "<"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '3'
|
35
29
|
- !ruby/object:Gem::Dependency
|
36
30
|
name: om
|
37
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,50 +72,44 @@ dependencies:
|
|
78
72
|
name: rubydora
|
79
73
|
requirement: !ruby/object:Gem::Requirement
|
80
74
|
requirements:
|
81
|
-
- - "
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 1.8.0
|
84
|
-
- - "<"
|
75
|
+
- - "~>"
|
85
76
|
- !ruby/object:Gem::Version
|
86
|
-
version: '
|
77
|
+
version: '1.8'
|
87
78
|
type: :runtime
|
88
79
|
prerelease: false
|
89
80
|
version_requirements: !ruby/object:Gem::Requirement
|
90
81
|
requirements:
|
91
|
-
- - "
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 1.8.0
|
94
|
-
- - "<"
|
82
|
+
- - "~>"
|
95
83
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
84
|
+
version: '1.8'
|
97
85
|
- !ruby/object:Gem::Dependency
|
98
86
|
name: active-triples
|
99
87
|
requirement: !ruby/object:Gem::Requirement
|
100
88
|
requirements:
|
101
89
|
- - "~>"
|
102
90
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
91
|
+
version: 0.4.0
|
104
92
|
type: :runtime
|
105
93
|
prerelease: false
|
106
94
|
version_requirements: !ruby/object:Gem::Requirement
|
107
95
|
requirements:
|
108
96
|
- - "~>"
|
109
97
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
98
|
+
version: 0.4.0
|
111
99
|
- !ruby/object:Gem::Dependency
|
112
100
|
name: rdf-rdfxml
|
113
101
|
requirement: !ruby/object:Gem::Requirement
|
114
102
|
requirements:
|
115
103
|
- - "~>"
|
116
104
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
105
|
+
version: 1.1.0
|
118
106
|
type: :runtime
|
119
107
|
prerelease: false
|
120
108
|
version_requirements: !ruby/object:Gem::Requirement
|
121
109
|
requirements:
|
122
110
|
- - "~>"
|
123
111
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
112
|
+
version: 1.1.0
|
125
113
|
- !ruby/object:Gem::Dependency
|
126
114
|
name: deprecation
|
127
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -210,16 +198,16 @@ dependencies:
|
|
210
198
|
name: rspec-its
|
211
199
|
requirement: !ruby/object:Gem::Requirement
|
212
200
|
requirements:
|
213
|
-
- - "
|
201
|
+
- - ">="
|
214
202
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
203
|
+
version: '0'
|
216
204
|
type: :development
|
217
205
|
prerelease: false
|
218
206
|
version_requirements: !ruby/object:Gem::Requirement
|
219
207
|
requirements:
|
220
|
-
- - "
|
208
|
+
- - ">="
|
221
209
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
210
|
+
version: '0'
|
223
211
|
- !ruby/object:Gem::Dependency
|
224
212
|
name: equivalent-xml
|
225
213
|
requirement: !ruby/object:Gem::Requirement
|
@@ -306,6 +294,9 @@ files:
|
|
306
294
|
- config/solr.yml
|
307
295
|
- config/solr_mappings_af_0.1.yml
|
308
296
|
- config/solr_mappings_bl_2.4.yml
|
297
|
+
- gemfiles/rails3.gemfile
|
298
|
+
- gemfiles/rails4.1.gemfile
|
299
|
+
- gemfiles/rails4.gemfile
|
309
300
|
- lib/active-fedora.rb
|
310
301
|
- lib/active_fedora.rb
|
311
302
|
- lib/active_fedora/association_relation.rb
|
@@ -358,10 +349,12 @@ files:
|
|
358
349
|
- lib/active_fedora/querying.rb
|
359
350
|
- lib/active_fedora/railtie.rb
|
360
351
|
- lib/active_fedora/rdf.rb
|
352
|
+
- lib/active_fedora/rdf/fcrepo.rb
|
361
353
|
- lib/active_fedora/rdf/identifiable.rb
|
362
354
|
- lib/active_fedora/rdf/indexing.rb
|
363
355
|
- lib/active_fedora/rdf/ntriples_rdf_datastream.rb
|
364
|
-
- lib/active_fedora/rdf/
|
356
|
+
- lib/active_fedora/rdf/persistence.rb
|
357
|
+
- lib/active_fedora/rdf/project_hydra.rb
|
365
358
|
- lib/active_fedora/rdf/rdf_datastream.rb
|
366
359
|
- lib/active_fedora/rdf/rdfxml_rdf_datastream.rb
|
367
360
|
- lib/active_fedora/rdf_xml_writer.rb
|
@@ -521,6 +514,7 @@ files:
|
|
521
514
|
- spec/unit/query_spec.rb
|
522
515
|
- spec/unit/rdf_datastream_spec.rb
|
523
516
|
- spec/unit/rdf_resource_datastream_spec.rb
|
517
|
+
- spec/unit/rdf_vocab_spec.rb
|
524
518
|
- spec/unit/rdf_xml_writer_spec.rb
|
525
519
|
- spec/unit/rdfxml_rdf_datastream_spec.rb
|
526
520
|
- spec/unit/relationship_graph_spec.rb
|
@@ -555,13 +549,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
555
549
|
version: 1.9.3
|
556
550
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
557
551
|
requirements:
|
558
|
-
- - "
|
552
|
+
- - ">"
|
559
553
|
- !ruby/object:Gem::Version
|
560
|
-
version:
|
554
|
+
version: 1.3.1
|
561
555
|
requirements: []
|
562
556
|
rubyforge_project:
|
563
|
-
rubygems_version: 2.
|
557
|
+
rubygems_version: 2.2.2
|
564
558
|
signing_key:
|
565
559
|
specification_version: 4
|
566
560
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|
567
561
|
test_files: []
|
562
|
+
has_rdoc:
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module ActiveFedora::Rdf
|
2
|
-
##
|
3
|
-
# A class of RdfResources to act as the primary/root resource associated
|
4
|
-
# with a Datastream and ActiveFedora::Base object.
|
5
|
-
#
|
6
|
-
# @see ActiveFedora::RDFDatastream
|
7
|
-
class ObjectResource < ActiveTriples::Resource
|
8
|
-
configure :base_uri => 'info:fedora/'
|
9
|
-
attr_accessor :datastream
|
10
|
-
|
11
|
-
def persist!
|
12
|
-
return false unless datastream and datastream.respond_to? :digital_object
|
13
|
-
@persisted ||= datastream.digital_object.save
|
14
|
-
end
|
15
|
-
|
16
|
-
def persisted?
|
17
|
-
@persisted ||= (not datastream.new?)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|