rubydora 0.5.9 → 0.5.10

Sign up to get free protection for your applications and to get access to all the features.
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