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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 481726bbeb31ad09149dbe0facfcc577a504f0da
4
- data.tar.gz: 66f87369d95a41cb5c0d5fd02dccd43f89e589f7
3
+ metadata.gz: 203a347c89c96ff4ad8016269999d4ea0cfa1fca
4
+ data.tar.gz: afdb1db5a4ce51cb2957b2a2f6856c24f2c3fa4e
5
5
  SHA512:
6
- metadata.gz: 82de3808e266997ca4e95144e6792877398deabddceb9cc7306ea0f7badecfe5d79a666915cb688a4fa2b5fcabc1997436b31593c39e52f7e6a204d3b48aaa77
7
- data.tar.gz: f038a141b3d4136c9d5313e63137412a912f5a78632c0ca27efe235757e030e117f7d3b58d97c9544bfddb3a8e12b0b2b666a03145b1283957e8be9fffc6ae32
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
- blob = opts[:blob]
145
- if blob
146
- if !ds.mimeType.present?
147
- ##TODO, this is all done by rubydora -- remove
148
- ds.mimeType = blob.respond_to?(:content_type) ? blob.content_type : "application/octet-stream"
149
- end
150
- if !ds.dsLabel.present? && blob.respond_to?(:path)
151
- ds.dsLabel = File.basename(blob.path)
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 => 'text/plain')
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=(content)
41
+ def content=(new_content)
42
42
  resource.clear!
43
- resource << deserialize(content)
44
- content
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
- data ||= datastream_content
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 repository if data.nil?
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
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "7.1.0"
2
+ VERSION = "7.1.1"
3
3
  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
- mock_file = double(:path => '/asdf/fdsa')
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 == 'text/plain'
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
- it "should be able to handle non-utf-8 characters" do
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
- ds = ActiveFedora::NtriplesRDFDatastream.new
60
- data = "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n\xE2\x80\x99 \" .\n".force_encoding('ASCII-8BIT')
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
- result = ds.deserialize(data)
63
- result.dump(:ntriples).should == "<info:fedora/scholarsphere:qv33rx50r> <http://purl.org/dc/terms/description> \"\\n’ \" .\n"
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.0
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-07-18 00:00:00.000000000 Z
13
+ date: 2014-09-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rsolr