active-fedora 7.1.0 → 7.1.1
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/lib/active_fedora/datastreams.rb +11 -10
- data/lib/active_fedora/rdf/ntriples_rdf_datastream.rb +1 -1
- data/lib/active_fedora/rdf/rdf_datastream.rb +21 -5
- data/lib/active_fedora/version.rb +1 -1
- data/spec/unit/datastream_collections_spec.rb +0 -1
- data/spec/unit/datastreams_spec.rb +11 -1
- data/spec/unit/ntriples_datastream_spec.rb +1 -1
- data/spec/unit/rdf_datastream_spec.rb +26 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 203a347c89c96ff4ad8016269999d4ea0cfa1fca
|
4
|
+
data.tar.gz: afdb1db5a4ce51cb2957b2a2f6856c24f2c3fa4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41f183bdade943a90f304d30ddc80bd34bbbb22d798718f908a2b4b61b7d8e27fe7f003c83983695ab1acbc16cd5964ea31d6623cbeb8392e007d688ba18e3f7
|
7
|
+
data.tar.gz: 1c361808bc616a266f82394f10342b7969482971d691e50b885ac20057e3c33b6a407849cd992c6a5c44d4356027d50f33afbbccf5733d83cea18b34181fcd87
|
@@ -141,18 +141,19 @@ module ActiveFedora
|
|
141
141
|
[:mimeType, :controlGroup, :dsLabel, :dsLocation, :checksumType, :versionable].each do |key|
|
142
142
|
ds.send("#{key}=".to_sym, opts[key]) unless opts[key].nil?
|
143
143
|
end
|
144
|
-
|
145
|
-
|
146
|
-
if
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
ds.dsLabel
|
144
|
+
if ds.managed? || ds.inline?
|
145
|
+
blob = opts[:blob]
|
146
|
+
if blob
|
147
|
+
if !ds.mimeType.present?
|
148
|
+
##TODO, this is all done by rubydora -- remove
|
149
|
+
ds.mimeType = blob.respond_to?(:content_type) ? blob.content_type : "application/octet-stream"
|
150
|
+
end
|
151
|
+
if !ds.dsLabel.present? && blob.respond_to?(:path)
|
152
|
+
ds.dsLabel = File.basename(blob.path)
|
153
|
+
end
|
152
154
|
end
|
155
|
+
ds.content = blob || ""
|
153
156
|
end
|
154
|
-
|
155
|
-
ds.content = blob || ""
|
156
157
|
ds
|
157
158
|
end
|
158
159
|
|
@@ -3,7 +3,7 @@ require 'rdf/ntriples'
|
|
3
3
|
module ActiveFedora
|
4
4
|
class NtriplesRDFDatastream < RDFDatastream
|
5
5
|
def self.default_attributes
|
6
|
-
super.merge(:controlGroup => 'M', :mimeType => '
|
6
|
+
super.merge(:controlGroup => 'M', :mimeType => 'application/n-triples')
|
7
7
|
end
|
8
8
|
|
9
9
|
def serialization_format
|
@@ -38,10 +38,10 @@ module ActiveFedora
|
|
38
38
|
serialize
|
39
39
|
end
|
40
40
|
|
41
|
-
def content=(
|
41
|
+
def content=(new_content)
|
42
42
|
resource.clear!
|
43
|
-
resource << deserialize(
|
44
|
-
|
43
|
+
resource << deserialize(new_content)
|
44
|
+
new_content
|
45
45
|
end
|
46
46
|
|
47
47
|
def content_changed?
|
@@ -100,10 +100,15 @@ module ActiveFedora
|
|
100
100
|
|
101
101
|
def deserialize(data=nil)
|
102
102
|
return RDF::Graph.new if new? && data.nil?
|
103
|
-
|
103
|
+
|
104
|
+
if data.nil?
|
105
|
+
data = datastream_content
|
106
|
+
elsif behaves_like_io?(data)
|
107
|
+
data = io_content(data)
|
108
|
+
end
|
104
109
|
|
105
110
|
# Because datastream_content can return nil, we should check that here.
|
106
|
-
return
|
111
|
+
return RDF::Graph.new if data.nil?
|
107
112
|
|
108
113
|
data.force_encoding('utf-8')
|
109
114
|
RDF::Graph.new << RDF::Reader.for(serialization_format).new(data)
|
@@ -113,5 +118,16 @@ module ActiveFedora
|
|
113
118
|
raise "you must override the `serialization_format' method in a subclass"
|
114
119
|
end
|
115
120
|
|
121
|
+
private
|
122
|
+
|
123
|
+
def io_content(data)
|
124
|
+
begin
|
125
|
+
data.rewind
|
126
|
+
data.read
|
127
|
+
ensure
|
128
|
+
data.rewind
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
116
132
|
end
|
117
133
|
end
|
@@ -302,7 +302,6 @@ describe ActiveFedora::DatastreamCollections do
|
|
302
302
|
datastreams["external"].first.dsid.should == "EXTERNAL1"
|
303
303
|
datastreams["external"].first.dsLocation.should == "http://myresource.com"
|
304
304
|
datastreams["external"].first.controlGroup.should == "E"
|
305
|
-
datastreams["external"].first.content.should == ""
|
306
305
|
|
307
306
|
datastreams["high"].size.should == 1
|
308
307
|
datastreams["high"].first.dsLabel.should == 'dino.jpg'
|
@@ -213,10 +213,20 @@ describe ActiveFedora::Datastreams do
|
|
213
213
|
end
|
214
214
|
|
215
215
|
it "should use the filename as a default label" do
|
216
|
-
|
216
|
+
mock_file = double(:path => '/asdf/fdsa')
|
217
217
|
ds = subject.create_datastream(ActiveFedora::Datastream, nil, {:blob => mock_file})
|
218
218
|
ds.dsLabel.should == 'fdsa'
|
219
219
|
end
|
220
|
+
|
221
|
+
it "should not set content for controlGroup 'E'" do
|
222
|
+
ds = subject.create_datastream(ActiveFedora::Datastream, nil, {controlGroup: 'E'})
|
223
|
+
expect(ds.content).to be_nil
|
224
|
+
end
|
225
|
+
|
226
|
+
it "should not set content for controlGroup 'R'" do
|
227
|
+
ds = subject.create_datastream(ActiveFedora::Datastream, nil, {controlGroup: 'R'})
|
228
|
+
expect(ds.content).to be_nil
|
229
|
+
end
|
220
230
|
end
|
221
231
|
|
222
232
|
describe "#additional_attributes_for_external_and_redirect_control_groups" do
|
@@ -25,7 +25,7 @@ describe ActiveFedora::NtriplesRDFDatastream do
|
|
25
25
|
@subject.controlGroup.should == 'M'
|
26
26
|
end
|
27
27
|
it "should have mimeType" do
|
28
|
-
@subject.mimeType.should == '
|
28
|
+
@subject.mimeType.should == 'application/n-triples'
|
29
29
|
end
|
30
30
|
it "should have dsid" do
|
31
31
|
@subject.dsid.should == 'descMetadata'
|
@@ -54,13 +54,27 @@ describe ActiveFedora::RDFDatastream do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
describe "deserialize" do
|
57
|
-
|
57
|
+
let(:ds) { ActiveFedora::NtriplesRDFDatastream.new }
|
58
|
+
subject { ds.deserialize(data) }
|
59
|
+
|
60
|
+
context "with non-utf-8 characters" do
|
58
61
|
# see https://github.com/ruby-rdf/rdf/issues/142
|
59
|
-
|
60
|
-
|
62
|
+
let(:data) { "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n\xE2\x80\x99 \" .\n".force_encoding('ASCII-8BIT') }
|
63
|
+
|
64
|
+
it "should be able to handle non-utf-8 characters" do
|
65
|
+
expect(subject.dump(:ntriples)).to eq "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n"
|
66
|
+
end
|
67
|
+
end
|
61
68
|
|
62
|
-
|
63
|
-
|
69
|
+
context "when the object is saved and has no content in the datastream" do
|
70
|
+
let(:data) { nil }
|
71
|
+
before do
|
72
|
+
allow(ds).to receive(:new?).and_return(false);
|
73
|
+
allow(ds).to receive(:datastream_content).and_return(nil);
|
74
|
+
end
|
75
|
+
it "should return an empty graph" do
|
76
|
+
expect(subject).to be_kind_of RDF::Graph
|
77
|
+
end
|
64
78
|
end
|
65
79
|
end
|
66
80
|
|
@@ -71,6 +85,13 @@ describe ActiveFedora::RDFDatastream do
|
|
71
85
|
ds.content = data
|
72
86
|
expect(ds.resource.dump(:ntriples)).to eq "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n"
|
73
87
|
end
|
88
|
+
context "when passed an IO-like object" do
|
89
|
+
let(:file) { File.new(File.join(File.dirname(__FILE__), "..", "fixtures", "dublin_core_rdf_descMetadata.nt")) }
|
90
|
+
it "should read it" do
|
91
|
+
ds.content = file
|
92
|
+
expect(ds.resource.dump(:ntriples)).to eq File.read(file.path)
|
93
|
+
end
|
94
|
+
end
|
74
95
|
end
|
75
96
|
|
76
97
|
describe 'legacy non-utf-8 characters' do
|
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: 7.1.
|
4
|
+
version: 7.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-09-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|