rtiss_acts_as_versioned 0.8.3 → 0.9.0
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 +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:
|