rubydora 0.5.9 → 0.5.10

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.9
1
+ 0.5.10
@@ -7,9 +7,11 @@ module Rubydora
7
7
  define_model_callbacks :save, :create, :destroy
8
8
  define_model_callbacks :initialize, :only => :after
9
9
 
10
-
11
10
  include ActiveModel::Dirty
12
11
 
12
+ class_attribute :eager_load_datastream_content
13
+ self.eager_load_datastream_content = false
14
+
13
15
  include Rubydora::ExtensionParameters
14
16
 
15
17
  attr_reader :digital_object, :dsid
@@ -135,7 +137,7 @@ module Rubydora
135
137
  # @param [String or IO]
136
138
  # @return [String or IO]
137
139
  def content= new_content
138
- content_will_change!
140
+ content_will_change! if (self.eager_load_datastream_content and content != new_content) or (@content.nil? or @content != new_content)
139
141
  @content = new_content
140
142
  end
141
143
 
@@ -143,7 +145,7 @@ module Rubydora
143
145
  # We don't want to do that.
144
146
  def content_will_change!
145
147
  raise "Can't change values on older versions" if @asOfDateTime
146
- changed_attributes[:content] = nil
148
+ changed_attributes['content'] = nil
147
149
  end
148
150
 
149
151
  # Retrieve the datastream profile as a hash (and cache it)
@@ -155,6 +155,49 @@ describe Rubydora::Datastream do
155
155
 
156
156
  end
157
157
 
158
+ describe "content changed behavior" do
159
+ before(:each) do
160
+ @datastream = Rubydora::Datastream.new @mock_object, 'dsid'
161
+ @mock_repository.should_receive(:datastream).any_number_of_times.and_return <<-XML
162
+ <datastreamProfile>
163
+ <dsLocation>some:uri</dsLocation>
164
+ <dsLabel>label</dsLabel>
165
+ </datastreamProfile>
166
+ XML
167
+ end
168
+
169
+ it "should not be changed after a read-only access" do
170
+ @mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('asdf')
171
+ @datastream.content
172
+ @datastream.content_changed?.should == false
173
+ end
174
+ it "should be changed in the new content is different than the old content" do
175
+ @mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('asdf')
176
+ @datastream.content = "test"
177
+ @datastream.content_changed?.should == true
178
+ end
179
+
180
+ it "should not be changed in the new content is the same as the existing content (when eager-loading is enabled)" do
181
+ @mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
182
+ @datastream.eager_load_datastream_content = true
183
+ @datastream.content = "test"
184
+ @datastream.content_changed?.should == false
185
+ end
186
+
187
+ it "should be changed in the new content is the same as the existing content (without eager loading, the default)" do
188
+ @mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
189
+ @datastream.content = "test"
190
+ @datastream.content_changed?.should == true
191
+ end
192
+
193
+ it "should not be changed in the new content is the same as the existing content (and we have accessed #content previously)" do
194
+ @mock_repository.stub(:datastream_dissemination).with(hash_including(:pid => 'pid', :dsid => 'dsid')).and_return('test')
195
+ @datastream.content
196
+ @datastream.content = "test"
197
+ @datastream.content_changed?.should == false
198
+ end
199
+ end
200
+
158
201
  describe "update" do
159
202
 
160
203
  before(:each) do
metadata CHANGED
@@ -1,216 +1,231 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rubydora
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.10
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 9
10
- version: 0.5.9
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Chris Beer
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 3
27
- segments:
28
- - 0
29
- version: "0"
30
- version_requirements: *id001
12
+ date: 2012-06-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
31
15
  name: fastercsv
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
23
  prerelease: false
34
- - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
36
25
  none: false
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- hash: 3
41
- segments:
42
- - 0
43
- version: "0"
44
- version_requirements: *id002
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
45
31
  name: rest-client
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
39
  prerelease: false
48
- - !ruby/object:Gem::Dependency
49
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
50
41
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
56
- - 0
57
- version: "0"
58
- version_requirements: *id003
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
59
47
  name: nokogiri
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
60
54
  type: :runtime
61
55
  prerelease: false
62
- - !ruby/object:Gem::Dependency
63
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
64
57
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
72
- version_requirements: *id004
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
73
63
  name: mime-types
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
74
70
  type: :runtime
75
71
  prerelease: false
76
- - !ruby/object:Gem::Dependency
77
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
78
73
  none: false
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- hash: 3
83
- segments:
84
- - 0
85
- version: "0"
86
- version_requirements: *id005
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
87
79
  name: activesupport
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
88
86
  type: :runtime
89
87
  prerelease: false
90
- - !ruby/object:Gem::Dependency
91
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
92
89
  none: false
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- hash: 3
97
- segments:
98
- - 0
99
- version: "0"
100
- version_requirements: *id006
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
101
95
  name: activemodel
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
102
  type: :runtime
103
103
  prerelease: false
104
- - !ruby/object:Gem::Dependency
105
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
106
105
  none: false
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- hash: 3
111
- segments:
112
- - 0
113
- version: "0"
114
- version_requirements: *id007
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
115
111
  name: savon
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
116
118
  type: :runtime
117
119
  prerelease: false
118
- - !ruby/object:Gem::Dependency
119
- requirement: &id008 !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
120
121
  none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- hash: 3
125
- segments:
126
- - 0
127
- version: "0"
128
- version_requirements: *id008
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
129
127
  name: rake
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
130
134
  type: :development
131
135
  prerelease: false
132
- - !ruby/object:Gem::Dependency
133
- requirement: &id009 !ruby/object:Gem::Requirement
136
+ version_requirements: !ruby/object:Gem::Requirement
134
137
  none: false
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- hash: 3
139
- segments:
140
- - 0
141
- version: "0"
142
- version_requirements: *id009
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
143
  name: shoulda
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
144
150
  type: :development
145
151
  prerelease: false
146
- - !ruby/object:Gem::Dependency
147
- requirement: &id010 !ruby/object:Gem::Requirement
152
+ version_requirements: !ruby/object:Gem::Requirement
148
153
  none: false
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- hash: 11
153
- segments:
154
- - 1
155
- - 0
156
- - 14
157
- version: 1.0.14
158
- version_requirements: *id010
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
159
  name: bundler
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: 1.0.14
160
166
  type: :development
161
167
  prerelease: false
162
- - !ruby/object:Gem::Dependency
163
- requirement: &id011 !ruby/object:Gem::Requirement
168
+ version_requirements: !ruby/object:Gem::Requirement
164
169
  none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 3
169
- segments:
170
- - 0
171
- version: "0"
172
- version_requirements: *id011
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: 1.0.14
174
+ - !ruby/object:Gem::Dependency
173
175
  name: rspec
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
174
182
  type: :development
175
183
  prerelease: false
176
- - !ruby/object:Gem::Dependency
177
- requirement: &id012 !ruby/object:Gem::Requirement
184
+ version_requirements: !ruby/object:Gem::Requirement
178
185
  none: false
179
- requirements:
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- hash: 3
183
- segments:
184
- - 0
185
- version: "0"
186
- version_requirements: *id012
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
187
191
  name: yard
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
188
198
  type: :development
189
199
  prerelease: false
190
- - !ruby/object:Gem::Dependency
191
- requirement: &id013 !ruby/object:Gem::Requirement
200
+ version_requirements: !ruby/object:Gem::Requirement
192
201
  none: false
193
- requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- hash: 3
197
- segments:
198
- - 0
199
- version: "0"
200
- version_requirements: *id013
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
201
207
  name: jettywrapper
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
202
214
  type: :development
203
215
  prerelease: false
204
- description: "Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+"
205
- email:
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ description: ! 'Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+'
223
+ email:
206
224
  - chris@cbeer.info
207
225
  executables: []
208
-
209
226
  extensions: []
210
-
211
227
  extra_rdoc_files: []
212
-
213
- files:
228
+ files:
214
229
  - .gitignore
215
230
  - .gitmodules
216
231
  - Gemfile
@@ -251,38 +266,29 @@ files:
251
266
  - spec/spec_helper.rb
252
267
  homepage: http://github.com/cbeer/rubydora
253
268
  licenses: []
254
-
255
269
  post_install_message:
256
270
  rdoc_options: []
257
-
258
- require_paths:
271
+ require_paths:
259
272
  - lib
260
- required_ruby_version: !ruby/object:Gem::Requirement
273
+ required_ruby_version: !ruby/object:Gem::Requirement
261
274
  none: false
262
- requirements:
263
- - - ">="
264
- - !ruby/object:Gem::Version
265
- hash: 3
266
- segments:
267
- - 0
268
- version: "0"
269
- required_rubygems_version: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ! '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ required_rubygems_version: !ruby/object:Gem::Requirement
270
280
  none: false
271
- requirements:
272
- - - ">="
273
- - !ruby/object:Gem::Version
274
- hash: 3
275
- segments:
276
- - 0
277
- version: "0"
281
+ requirements:
282
+ - - ! '>='
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
278
285
  requirements: []
279
-
280
286
  rubyforge_project:
281
- rubygems_version: 1.8.17
287
+ rubygems_version: 1.8.24
282
288
  signing_key:
283
289
  specification_version: 3
284
290
  summary: Fedora Commons REST API ruby library
285
- test_files:
291
+ test_files:
286
292
  - spec/lib/datastream_spec.rb
287
293
  - spec/lib/digital_object_spec.rb
288
294
  - spec/lib/ext_model_loader_spec.rb