rtiss_acts_as_versioned 0.8.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README +1 -0
- data/lib/rtiss_acts_as_versioned.rb +5 -1
- data/rtiss_acts_as_versioned.gemspec +2 -2
- data/test/tiss_test.rb +75 -152
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cc2e3ea0395c08d987ad8bdeeb65efb5b74ec97a01e7a207c4f789710907ad54
|
4
|
+
data.tar.gz: ae2dd83effe00b997be04dd0b6b1ffc8d6190fda754e099009df676f5a76676c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 017a6da2f4c8047fde9b10cf45608515f850b391884dab841fef456faf3176decd3b0817aeb34a3d47797ed568940d76a7d339ded61a1e602b9817692c0cfac8
|
7
|
+
data.tar.gz: 3dd0570d6ae247ecae79ae3b34c9d81994b5d5748da48ba1e5da311b7663555b5d16356cdc576faaa6a3b3210360e5f20bec5454e824aba47994382b2c0282d7
|
data/README
CHANGED
@@ -7,6 +7,7 @@ This is the patched version for rtiss.
|
|
7
7
|
Versions 0.6.x (rails2 branch) are for rails 2.x
|
8
8
|
Versions 0.7.x (rails3 branch) are for rails 3.x
|
9
9
|
Versions 0.8.x (master branch) are for rails 4.x
|
10
|
+
Versions 0.9.x (master branch) are for rails 5.x (also works with rails 4.x)
|
10
11
|
|
11
12
|
== Resources
|
12
13
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
|
23
|
-
VERSION = '0.
|
23
|
+
VERSION = '0.9.0'
|
24
24
|
|
25
25
|
module ActiveRecord #:nodoc:
|
26
26
|
module Acts #:nodoc:
|
@@ -465,6 +465,9 @@ module ActiveRecord #:nodoc:
|
|
465
465
|
|
466
466
|
def empty_callback() end #:nodoc:
|
467
467
|
|
468
|
+
=begin
|
469
|
+
# Alte finder-Syntax ab Rails 5 nicht mehr verwendbar.
|
470
|
+
# Assoziation versions stattdessen verwenden
|
468
471
|
def find_versions(*args)
|
469
472
|
return [] if self.id.nil?
|
470
473
|
|
@@ -481,6 +484,7 @@ module ActiveRecord #:nodoc:
|
|
481
484
|
versions.find(options)
|
482
485
|
end
|
483
486
|
end
|
487
|
+
=end
|
484
488
|
|
485
489
|
def find_newest_version
|
486
490
|
return nil if self.id.nil?
|
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
|
|
12
12
|
## If your rubyforge_project name is different, then edit it and comment out
|
13
13
|
## the sub! line in the Rakefile
|
14
14
|
s.name = 'rtiss_acts_as_versioned'
|
15
|
-
s.version = '0.
|
16
|
-
s.date = '
|
15
|
+
s.version = '0.9.0'
|
16
|
+
s.date = '2019-11-04'
|
17
17
|
s.rubyforge_project = 'rtiss_acts_as_versioned'
|
18
18
|
s.summary = "Add simple versioning to ActiveRecord models (TISS version)."
|
19
19
|
s.description = "Add simple versioning to ActiveRecord models (TISS version).
|
data/test/tiss_test.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
+
require 'test_helper'
|
2
3
|
|
3
|
-
|
4
|
-
require File.join(File.dirname(__FILE__), 'fixtures/locked_rolle')
|
5
|
-
|
6
|
-
class TissTest < ActiveSupport::TestCase
|
4
|
+
class Tools::ActsAsVersionedTest < ActiveSupport::TestCase
|
7
5
|
def test_versioning
|
8
|
-
anzahl =
|
9
|
-
|
10
|
-
oid1 = create_object('
|
6
|
+
anzahl = Tools::LupKonfigKategorie.count
|
7
|
+
|
8
|
+
oid1 = create_object('java').id
|
11
9
|
oid2 = create_object('tuwien').id
|
12
10
|
oid3 = create_object('ruby').id
|
13
11
|
oid4 = create_object('rails').id
|
14
12
|
oid5 = create_object('times').id
|
15
|
-
|
16
|
-
assert_equal anzahl+5,
|
17
|
-
|
18
|
-
2.upto(5) {|index| edit_object(oid1, "
|
13
|
+
|
14
|
+
assert_equal anzahl+5, Tools::LupKonfigKategorie.count
|
15
|
+
|
16
|
+
2.upto(5) {|index| edit_object(oid1, "java" + index.to_s)}
|
19
17
|
2.upto(7) {|index| edit_object(oid2, "tuwien" + index.to_s)}
|
20
18
|
2.upto(9) {|index| edit_object(oid3, "ruby" + index.to_s)}
|
21
19
|
2.upto(6) {|index| edit_object(oid4, "rails" + index.to_s)}
|
22
20
|
2.upto(3) {|index| edit_object_with_sleep(oid5, "times" + index.to_s)}
|
23
|
-
|
21
|
+
|
24
22
|
assert versions_correct?(oid1, 5)
|
25
23
|
assert versions_correct?(oid2, 7)
|
26
24
|
assert versions_correct?(oid3, 9)
|
27
25
|
assert versions_correct?(oid4, 6)
|
28
|
-
|
26
|
+
|
29
27
|
assert timestamps?(oid1)
|
30
28
|
assert timestamps?(oid2)
|
31
29
|
assert timestamps?(oid3)
|
@@ -35,14 +33,14 @@ class TissTest < ActiveSupport::TestCase
|
|
35
33
|
destroy_record(oid2)
|
36
34
|
assert record_unavailable_in_original_table?(oid2)
|
37
35
|
assert deleted_record_versioned?(oid2, 8)
|
38
|
-
|
36
|
+
|
39
37
|
restore_record(oid2)
|
40
38
|
assert restored_record_available_in_original_table?(oid2)
|
41
39
|
assert restored_record_versioned?(oid2, 9)
|
42
|
-
|
40
|
+
|
43
41
|
assert save_record_without_changes(oid1)
|
44
42
|
end
|
45
|
-
|
43
|
+
|
46
44
|
def test_deleted_in_original_table
|
47
45
|
record = create_object('test deleted_in_orginal_table')
|
48
46
|
version_record = record.versions.first
|
@@ -59,17 +57,18 @@ class TissTest < ActiveSupport::TestCase
|
|
59
57
|
|
60
58
|
def test_find_versions
|
61
59
|
o = create_object("karin")
|
62
|
-
v = o.
|
60
|
+
v = o.versions
|
63
61
|
assert_equal 1, v.count
|
64
62
|
assert_equal v[0].name, "karin"
|
65
63
|
|
66
64
|
edit_object(o.id, "zak")
|
67
|
-
v
|
65
|
+
v.reload
|
66
|
+
|
68
67
|
assert_equal 2, v.count
|
69
68
|
assert_equal v[0].name, "karin"
|
70
69
|
assert_equal v[1].name, "zak"
|
71
70
|
|
72
|
-
v = o.
|
71
|
+
v = o.versions.where("name = 'zak'")
|
73
72
|
assert_equal 1, v.count
|
74
73
|
assert_equal v[0].name, "zak"
|
75
74
|
|
@@ -77,13 +76,13 @@ class TissTest < ActiveSupport::TestCase
|
|
77
76
|
# assert_equal 1, v.count
|
78
77
|
# assert_equal v[0].name, "zak"
|
79
78
|
|
80
|
-
v = o.
|
79
|
+
v = o.versions.first
|
81
80
|
assert_equal v.name, "karin"
|
82
81
|
|
83
|
-
v = o.
|
82
|
+
v = o.versions.last
|
84
83
|
assert_equal v.name, "zak"
|
85
84
|
|
86
|
-
v = o.
|
85
|
+
v = o.versions.order("name desc")
|
87
86
|
assert_equal 2, v.count
|
88
87
|
assert_equal v[0].name, "zak"
|
89
88
|
assert_equal v[1].name, "karin"
|
@@ -109,60 +108,14 @@ class TissTest < ActiveSupport::TestCase
|
|
109
108
|
|
110
109
|
assert_raises(RuntimeError) { v.restore }
|
111
110
|
assert !v.deleted_in_original_table
|
112
|
-
assert !v.record_restored, "Record_restored shows that the record was undeleted (should be false) for a newly created record"
|
113
111
|
|
114
|
-
old_version = o.version
|
115
112
|
o.destroy
|
116
113
|
v = o.find_newest_version
|
117
|
-
|
118
|
-
assert v.deleted_in_original_table, "Deleted-Flag in versioned record is not set"
|
119
|
-
assert_equal old_version + 1, v.version, "Destroy did not increment version number in history record"
|
114
|
+
assert v.deleted_in_original_table
|
120
115
|
|
121
116
|
v.restore
|
122
|
-
restored_version = v.version
|
123
|
-
assert !v.record_restored, "Record_restored shows that the record was undeleted (should be false) for the restored version record (but should be in the newly created record)"
|
124
|
-
o = Rolle.find oid
|
125
117
|
v = o.find_newest_version
|
126
|
-
|
127
|
-
assert_equal v.version, o.version
|
128
|
-
assert_equal old_version + 2, v.version, "Version field not restored correctly"
|
129
|
-
assert !v.deleted_in_original_table, "Deleted_in_original_table doesn't show that the record was undeleted (should be false)"
|
130
|
-
assert v.record_restored, "Record_restored doesn't show that the record was undeleted (should be true) for the version record created upon restore"
|
131
|
-
assert_equal restored_version, v.record_restored_from_version
|
132
|
-
|
133
|
-
o.name = 'kaputt'
|
134
|
-
assert o.save
|
135
|
-
o.destroy
|
136
|
-
v = o.find_newest_version
|
137
|
-
v.restore
|
138
|
-
o = Rolle.find oid
|
139
|
-
assert_equal v.version + 1, o.version
|
140
|
-
assert_equal 'kaputt', o.name
|
141
|
-
assert_equal v.version, o.find_newest_version.record_restored_from_version
|
142
|
-
o.destroy
|
143
|
-
v_old.restore
|
144
|
-
o = Rolle.find oid
|
145
|
-
assert_equal 'lebt', o.name
|
146
|
-
assert_equal v_old.version, o.find_newest_version.record_restored_from_version
|
147
|
-
end
|
148
|
-
|
149
|
-
def test_restore_and_destroy_with_revision_on_every_change
|
150
|
-
r = Rolle.new(:name => 'karin')
|
151
|
-
assert r.save
|
152
|
-
r.name = 'zak'
|
153
|
-
assert r.save
|
154
|
-
assert_equal 2, Rolle::Version.count
|
155
|
-
r.destroy
|
156
|
-
assert_equal 0, Rolle.count
|
157
|
-
assert_equal 3, Rolle::Version.count
|
158
|
-
assert version = r.find_version(3)
|
159
|
-
assert version.deleted_in_original_table?
|
160
|
-
assert version = r.find_version(2)
|
161
|
-
version.restore
|
162
|
-
assert r = Rolle.first
|
163
|
-
assert r.find_newest_version.record_restored?
|
164
|
-
assert_equal 4, Rolle::Version.count
|
165
|
-
assert_equal 4, r.version
|
118
|
+
assert !v.deleted_in_original_table
|
166
119
|
end
|
167
120
|
|
168
121
|
def test_original_record_exists
|
@@ -184,7 +137,7 @@ class TissTest < ActiveSupport::TestCase
|
|
184
137
|
oid = o.id
|
185
138
|
v = o.find_version(1)
|
186
139
|
assert v!=nil
|
187
|
-
|
140
|
+
|
188
141
|
assert_raises(RuntimeError) { restore_record(oid) }
|
189
142
|
assert !v.deleted_in_original_table
|
190
143
|
|
@@ -198,15 +151,15 @@ class TissTest < ActiveSupport::TestCase
|
|
198
151
|
assert v!=nil
|
199
152
|
assert !v.deleted_in_original_table
|
200
153
|
end
|
201
|
-
|
154
|
+
|
202
155
|
def test_restore_deleted_version
|
203
156
|
o = create_object("lebt")
|
204
157
|
oid = o.id
|
205
158
|
v = o.find_version(1)
|
206
159
|
assert v!=nil
|
207
|
-
|
160
|
+
|
208
161
|
edit_object(oid, "nicht")
|
209
|
-
x =
|
162
|
+
x = Tools::LupKonfigKategorie.find(oid)
|
210
163
|
assert x.name == "nicht"
|
211
164
|
|
212
165
|
v = o.find_version(2)
|
@@ -217,105 +170,76 @@ class TissTest < ActiveSupport::TestCase
|
|
217
170
|
assert v!=nil
|
218
171
|
assert v.deleted_in_original_table
|
219
172
|
|
220
|
-
|
221
|
-
x =
|
173
|
+
Tools::LupKonfigKategorie.restore_deleted_version(oid, 1)
|
174
|
+
x = Tools::LupKonfigKategorie.find(oid)
|
222
175
|
assert x.name == "lebt"
|
223
176
|
end
|
224
|
-
|
225
|
-
def test_destroy_unsaved_record
|
226
|
-
o = Rolle.new(:name => "Nicht Speichern")
|
227
|
-
assert_nothing_raised do o.destroy end
|
228
|
-
assert_equal o.highest_version, -1
|
229
|
-
end
|
230
177
|
|
231
|
-
def
|
232
|
-
|
233
|
-
|
234
|
-
r.name = 'zak'
|
235
|
-
assert r.save
|
236
|
-
r.reload
|
237
|
-
assert_equal 2, r.versions.size
|
238
|
-
assert_equal 2, r.versions.count
|
239
|
-
end
|
178
|
+
def test_find_and_deleted_in_original_table
|
179
|
+
mitarbeiter = Personal::Mitarbeiter.create(:person_id=>6, :eintrittsdatum=>'1990-01-01')
|
180
|
+
rel_person_orgeinheit = Organisation::RelPersonOrgeinheit.create(:anstellbar_id=>mitarbeiter.id, :anstellbar_type=>'Personal::Mitarbeiter', :orgeinheit_id=>1, :person_id=>5, :lup_person_funktion_id=>1, :org_interne_id=>1)
|
240
181
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
r.destroy
|
246
|
-
|
247
|
-
r = Rolle.new(:name => 'karin')
|
248
|
-
assert r.save
|
249
|
-
assert_raises RuntimeError do version.restore end
|
250
|
-
#assert_nothing_raised do
|
251
|
-
version.restore(perform_validations = false) #end
|
252
|
-
end
|
182
|
+
assert rel_person_orgeinheit.save
|
183
|
+
|
184
|
+
rel_person_orgeinheit.destroy
|
185
|
+
assert rel_person_orgeinheit.alte_adressbuchdaten_wiederherstellen
|
253
186
|
|
254
|
-
|
255
|
-
r = Rolle.new(:name => 'karin')
|
256
|
-
assert_equal true, r.save_without_revision
|
257
|
-
|
258
|
-
r = Rolle.new(:name => 'karin')
|
259
|
-
assert_equal false, r.save_without_revision
|
187
|
+
# assert_raises NoMethodError do rel_person_orgeinheit.alte_adressbuchdaten_wiederherstellen end
|
260
188
|
end
|
261
189
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
r.save
|
267
|
-
assert_equal 1, r.find_newest_version.version
|
268
|
-
r.name = 'zak'
|
269
|
-
r.save
|
270
|
-
assert_equal 2, r.find_newest_version.version
|
190
|
+
def test_destroy_unsaved_record
|
191
|
+
o = Tools::LupKonfigKategorie.new(:name => "Nicht Speichern")
|
192
|
+
assert_nothing_raised do o.destroy end
|
193
|
+
assert_equal o.highest_version, -1
|
271
194
|
end
|
272
|
-
=end
|
273
195
|
|
274
|
-
private
|
196
|
+
private
|
275
197
|
def create_object(bezeichnung)
|
276
|
-
|
277
|
-
o.
|
198
|
+
puts "create_object: #{bezeichnung}"
|
199
|
+
o = Tools::LupKonfigKategorie.new(:name => bezeichnung)
|
200
|
+
o.save!
|
278
201
|
return o
|
279
202
|
end
|
280
|
-
|
203
|
+
|
281
204
|
def edit_object(id, bezeichnung)
|
282
|
-
|
205
|
+
puts "edit_object: #{id}: #{bezeichnung}"
|
206
|
+
Tools::LupKonfigKategorie.find(id).update_attributes!(:name=>bezeichnung)
|
283
207
|
end
|
284
208
|
|
285
209
|
def edit_object_with_sleep(id, bezeichnung)
|
286
210
|
sleep(2)
|
287
|
-
|
211
|
+
Tools::LupKonfigKategorie.find(id).update_attributes!(:name=>bezeichnung)
|
288
212
|
end
|
289
213
|
|
290
214
|
def versions_correct?(id, highest_version)
|
291
|
-
result =
|
215
|
+
result = Tools::LupKonfigKategorie.find(id).versions.all.size == highest_version
|
292
216
|
1.upto(highest_version) do |current_version|
|
293
|
-
current_version_record =
|
217
|
+
current_version_record = Tools::LupKonfigKategorie.find(id).versions.find_by("version = #{current_version}")
|
294
218
|
result = false if current_version_record.nil? || current_version_record.deleted_in_original_table == true
|
295
219
|
end
|
296
220
|
return result
|
297
221
|
end
|
298
|
-
|
222
|
+
|
299
223
|
def timestamps?(id)
|
300
224
|
result = true;
|
301
|
-
highest_version =
|
225
|
+
highest_version = Tools::LupKonfigKategorie.find(id).versions.all.size
|
302
226
|
highest_version.downto(1) do |current_version|
|
303
227
|
if current_version >= 2
|
304
|
-
rolle_current_version =
|
305
|
-
rolle_predecessor_version =
|
228
|
+
rolle_current_version = Tools::LupKonfigKategorie.find(id).versions.find_by("version = #{current_version}")
|
229
|
+
rolle_predecessor_version = Tools::LupKonfigKategorie.find(id).versions.find_by("version = #{current_version-1}")
|
306
230
|
toleranz = rolle_current_version.created_at - rolle_predecessor_version.updated_at
|
307
231
|
result = false if toleranz > 1.0
|
308
232
|
end
|
309
233
|
end
|
310
234
|
return result
|
311
235
|
end
|
312
|
-
|
236
|
+
|
313
237
|
def strong_timestamps?(id)
|
314
238
|
result = true;
|
315
|
-
highest_version =
|
239
|
+
highest_version = Tools::LupKonfigKategorie.find(id).versions.all.size
|
316
240
|
highest_version.downto(2) do |current_version|
|
317
|
-
rolle_current_version =
|
318
|
-
rolle_predecessor_version =
|
241
|
+
rolle_current_version = Tools::LupKonfigKategorie.find(id).versions.find_by("version = #{current_version}")
|
242
|
+
rolle_predecessor_version = Tools::LupKonfigKategorie.find(id).versions.find_by("version = #{current_version-1}")
|
319
243
|
result = false unless rolle_current_version.created_at = rolle_predecessor_version.updated_at
|
320
244
|
result = false unless rolle_current_version.created_at >= rolle_predecessor_version.created_at
|
321
245
|
end
|
@@ -323,50 +247,49 @@ private
|
|
323
247
|
end
|
324
248
|
|
325
249
|
def destroy_record(id)
|
326
|
-
|
327
|
-
Rolle.destroy(id)
|
250
|
+
Tools::LupKonfigKategorie.destroy(id)
|
328
251
|
end
|
329
|
-
|
252
|
+
|
330
253
|
def record_unavailable_in_original_table?(id)
|
331
254
|
begin
|
332
|
-
|
255
|
+
Tools::LupKonfigKategorie.find(id)
|
333
256
|
return false
|
334
257
|
rescue
|
335
258
|
return true
|
336
259
|
end
|
337
260
|
end
|
338
|
-
|
261
|
+
|
339
262
|
def deleted_record_versioned?(id, highest_version)
|
340
263
|
version_of_deleted_record = highest_version
|
341
|
-
rolle_deleted =
|
264
|
+
rolle_deleted = Tools::LupKonfigKategorie::Version.find_by("version = #{version_of_deleted_record} and lup_konfig_kategorie_id = #{id}")
|
342
265
|
return rolle_deleted != nil && rolle_deleted.deleted_in_original_table == true
|
343
266
|
end
|
344
|
-
|
267
|
+
|
345
268
|
def restore_record(id)
|
346
|
-
|
269
|
+
Tools::LupKonfigKategorie.restore_deleted(id)
|
347
270
|
end
|
348
|
-
|
271
|
+
|
349
272
|
def restored_record_available_in_original_table?(id)
|
350
273
|
begin
|
351
|
-
|
274
|
+
Tools::LupKonfigKategorie.find(id)
|
352
275
|
return true
|
353
276
|
rescue
|
354
277
|
return false
|
355
278
|
end
|
356
279
|
end
|
357
|
-
|
280
|
+
|
358
281
|
def restored_record_versioned?(id, highest_version)
|
359
282
|
version_of_restored_record = highest_version
|
360
|
-
rolle_restored =
|
283
|
+
rolle_restored = Tools::LupKonfigKategorie.find(id).versions.find_by("version = #{version_of_restored_record}")
|
361
284
|
return rolle_restored != nil && rolle_restored.deleted_in_original_table == false
|
362
285
|
end
|
363
|
-
|
286
|
+
|
364
287
|
def save_record_without_changes(id)
|
365
|
-
versions_before_save =
|
366
|
-
rolle =
|
288
|
+
versions_before_save = Tools::LupKonfigKategorie.find(id).versions.all.size
|
289
|
+
rolle = Tools::LupKonfigKategorie.find(id)
|
367
290
|
rolle.update_attributes(:name=>rolle.name)
|
368
|
-
versions_after_save =
|
291
|
+
versions_after_save = Tools::LupKonfigKategorie.find(id).versions.all.size
|
369
292
|
return versions_before_save == versions_after_save
|
370
293
|
end
|
371
|
-
|
294
|
+
|
372
295
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rtiss_acts_as_versioned
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rick Olson
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2019-11-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -144,9 +144,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
146
|
rubyforge_project: rtiss_acts_as_versioned
|
147
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.7.9
|
148
148
|
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: Add simple versioning to ActiveRecord models (TISS version).
|
151
151
|
test_files: []
|
152
|
-
has_rdoc:
|