sequel_bitemporal 0.4.19 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sequel/plugins/bitemporal.rb +3 -3
- data/sequel_bitemporal.gemspec +1 -1
- data/spec/bitemporal_date_spec.rb +19 -17
- data/spec/bitemporal_time_spec.rb +16 -14
- metadata +3 -3
@@ -46,7 +46,7 @@ module Sequel
|
|
46
46
|
@versions_alias = "#{base_alias}_versions".to_sym
|
47
47
|
@current_version_alias = "#{base_alias}_current_version".to_sym
|
48
48
|
@audit_class = opts[:audit_class]
|
49
|
-
@audit_updated_by_method = opts
|
49
|
+
@audit_updated_by_method = opts.fetch(:audit_updated_by_method){ :updated_by }
|
50
50
|
@propagate_per_column = opts.fetch(:propagate_per_column, false)
|
51
51
|
end
|
52
52
|
master.one_to_many :versions, class: version, key: :master_id, graph_alias_base: master.versions_alias
|
@@ -272,13 +272,13 @@ module Sequel
|
|
272
272
|
end
|
273
273
|
if attrs.any?
|
274
274
|
propagated = save_propagated future_version, attrs
|
275
|
-
if !propagated.new? && audited?
|
275
|
+
if !propagated.new? && audited? && updated_by
|
276
276
|
self.class.audit_class.audit(
|
277
277
|
self,
|
278
278
|
future_version.values,
|
279
279
|
propagated.values,
|
280
280
|
propagated.valid_from,
|
281
|
-
|
281
|
+
updated_by
|
282
282
|
)
|
283
283
|
end
|
284
284
|
previous_values = future_version.values.dup
|
data/sequel_bitemporal.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "sequel_bitemporal"
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.5.0"
|
7
7
|
s.authors = ["Joseph HALTER", "Jonathan TRON"]
|
8
8
|
s.email = ["joseph.halter@thetalentbox.com", "jonathan.tron@thetalentbox.com"]
|
9
9
|
s.homepage = "https://github.com/TalentBox/sequel_bitemporal"
|
@@ -574,41 +574,42 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
574
574
|
after do
|
575
575
|
Timecop.return
|
576
576
|
end
|
577
|
+
let(:author){ mock :author, audit_kind: "user" }
|
577
578
|
it "generates a new audit on creation" do
|
578
579
|
master = @master_class.new
|
579
|
-
master.should_receive(:
|
580
|
+
master.should_receive(:updated_by).and_return author
|
580
581
|
@audit_class.should_receive(:audit).with(
|
581
582
|
master,
|
582
583
|
{},
|
583
584
|
hash_including({name: "Single Standard", price: 98}),
|
584
585
|
Date.today,
|
585
|
-
|
586
|
+
author
|
586
587
|
)
|
587
588
|
master.update_attributes name: "Single Standard", price: 98
|
588
589
|
end
|
589
590
|
it "generates a new audit on full update" do
|
590
591
|
master = @master_class.new
|
591
|
-
master.should_receive(:
|
592
|
+
master.should_receive(:updated_by).twice.and_return author
|
592
593
|
master.update_attributes name: "Single Standard", price: 98
|
593
594
|
@audit_class.should_receive(:audit).with(
|
594
595
|
master,
|
595
596
|
hash_including({name: "Single Standard", price: 98}),
|
596
597
|
hash_including({name: "King size", price: 98}),
|
597
598
|
Date.today,
|
598
|
-
|
599
|
+
author
|
599
600
|
)
|
600
601
|
master.update_attributes name: "King size", price: 98
|
601
602
|
end
|
602
603
|
it "generates a new audit on partial update" do
|
603
604
|
master = @master_class.new
|
604
|
-
master.should_receive(:
|
605
|
+
master.should_receive(:updated_by).twice.and_return author
|
605
606
|
master.update_attributes name: "Single Standard", price: 98
|
606
607
|
@audit_class.should_receive(:audit).with(
|
607
608
|
master,
|
608
609
|
hash_including({name: "Single Standard", price: 98}),
|
609
610
|
hash_including({name: "King size", price: 98}),
|
610
611
|
Date.today,
|
611
|
-
|
612
|
+
author
|
612
613
|
)
|
613
614
|
master.update_attributes partial_update: true, name: "King size", price: 98
|
614
615
|
end
|
@@ -617,7 +618,7 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
617
618
|
begin
|
618
619
|
@master_class.instance_variable_set :@propagate_per_column, true
|
619
620
|
master = @master_class.new
|
620
|
-
master.should_receive(:
|
621
|
+
master.should_receive(:updated_by).exactly(8).times.and_return author
|
621
622
|
|
622
623
|
master.update_attributes name: "Single Standard", price: 12, length: nil, width: 1
|
623
624
|
initial_today = Date.today
|
@@ -636,14 +637,14 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
636
637
|
hash_including({name: "Single Standard", price: 12, length: nil, width: 1}),
|
637
638
|
hash_including({name: "Single Standard", price: 12, length: 3, width: 4}),
|
638
639
|
initial_today+2,
|
639
|
-
|
640
|
+
author
|
640
641
|
)
|
641
642
|
@audit_class.should_receive(:audit).with(
|
642
643
|
master,
|
643
644
|
hash_including({name: "Single Standard", price: 12, length: 1, width: 1}),
|
644
645
|
hash_including({name: "Single Standard", price: 12, length: 1, width: 4}),
|
645
646
|
initial_today+3,
|
646
|
-
|
647
|
+
author
|
647
648
|
)
|
648
649
|
Timecop.freeze initial_today+3 do
|
649
650
|
Sequel::Plugins::Bitemporal.at initial_today+2 do
|
@@ -655,14 +656,15 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
655
656
|
end
|
656
657
|
end
|
657
658
|
end
|
658
|
-
describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the
|
659
|
+
describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the author" do
|
659
660
|
include DbHelpers
|
660
661
|
before :all do
|
661
662
|
@audit_class = Class.new do
|
662
663
|
def self.audit(*args); end
|
663
664
|
end
|
664
|
-
db_setup audit_class: @audit_class, audit_updated_by_method: :
|
665
|
+
db_setup audit_class: @audit_class, audit_updated_by_method: :author
|
665
666
|
end
|
667
|
+
let(:author){ mock :author, audit_kind: "user" }
|
666
668
|
before do
|
667
669
|
Timecop.freeze 2009, 11, 28
|
668
670
|
end
|
@@ -671,39 +673,39 @@ describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the u
|
|
671
673
|
end
|
672
674
|
it "generates a new audit on creation" do
|
673
675
|
master = @master_class.new
|
674
|
-
master.should_receive(:
|
676
|
+
master.should_receive(:author).and_return author
|
675
677
|
@audit_class.should_receive(:audit).with(
|
676
678
|
master,
|
677
679
|
{},
|
678
680
|
hash_including({name: "Single Standard", price: 98}),
|
679
681
|
Date.today,
|
680
|
-
|
682
|
+
author
|
681
683
|
)
|
682
684
|
master.update_attributes name: "Single Standard", price: 98
|
683
685
|
end
|
684
686
|
it "generates a new audit on full update" do
|
685
687
|
master = @master_class.new
|
686
|
-
master.should_receive(:
|
688
|
+
master.should_receive(:author).twice.and_return author
|
687
689
|
master.update_attributes name: "Single Standard", price: 98
|
688
690
|
@audit_class.should_receive(:audit).with(
|
689
691
|
master,
|
690
692
|
hash_including({name: "Single Standard", price: 98}),
|
691
693
|
hash_including({name: "King size", price: 98}),
|
692
694
|
Date.today,
|
693
|
-
|
695
|
+
author
|
694
696
|
)
|
695
697
|
master.update_attributes name: "King size", price: 98
|
696
698
|
end
|
697
699
|
it "generates a new audit on partial update" do
|
698
700
|
master = @master_class.new
|
699
|
-
master.should_receive(:
|
701
|
+
master.should_receive(:author).twice.and_return author
|
700
702
|
master.update_attributes name: "Single Standard", price: 98
|
701
703
|
@audit_class.should_receive(:audit).with(
|
702
704
|
master,
|
703
705
|
hash_including({name: "Single Standard", price: 98}),
|
704
706
|
hash_including({name: "King size", price: 98}),
|
705
707
|
Date.today,
|
706
|
-
|
708
|
+
author
|
707
709
|
)
|
708
710
|
master.update_attributes partial_update: true, name: "King size", price: 98
|
709
711
|
end
|
@@ -365,21 +365,22 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
365
365
|
after do
|
366
366
|
Timecop.return
|
367
367
|
end
|
368
|
+
let(:author){ mock :author, audit_kind: "user" }
|
368
369
|
it "generates a new audit on creation" do
|
369
370
|
master = @master_class.new
|
370
|
-
master.should_receive(:
|
371
|
+
master.should_receive(:updated_by).and_return author
|
371
372
|
@audit_class.should_receive(:audit).with(
|
372
373
|
master,
|
373
374
|
{},
|
374
375
|
hash_including({name: "Single Standard", price: 98}),
|
375
376
|
Time.now,
|
376
|
-
|
377
|
+
author
|
377
378
|
)
|
378
379
|
master.update_attributes name: "Single Standard", price: 98
|
379
380
|
end
|
380
381
|
it "generates a new audit on full update" do
|
381
382
|
master = @master_class.new
|
382
|
-
master.should_receive(:
|
383
|
+
master.should_receive(:updated_by).twice.and_return author
|
383
384
|
@audit_class.stub(:audit)
|
384
385
|
master.update_attributes name: "Single Standard", price: 98
|
385
386
|
@audit_class.should_receive(:audit).with(
|
@@ -387,13 +388,13 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
387
388
|
hash_including({name: "Single Standard", price: 98}),
|
388
389
|
hash_including({name: "King size", price: 98}),
|
389
390
|
Time.now,
|
390
|
-
|
391
|
+
author
|
391
392
|
)
|
392
393
|
master.update_attributes name: "King size", price: 98
|
393
394
|
end
|
394
395
|
it "generates a new audit on partial update" do
|
395
396
|
master = @master_class.new
|
396
|
-
master.should_receive(:
|
397
|
+
master.should_receive(:updated_by).twice.and_return author
|
397
398
|
@audit_class.stub(:audit)
|
398
399
|
master.update_attributes name: "Single Standard", price: 98
|
399
400
|
@audit_class.should_receive(:audit).with(
|
@@ -401,17 +402,17 @@ describe "Sequel::Plugins::Bitemporal", "with audit" do
|
|
401
402
|
hash_including({name: "Single Standard", price: 98}),
|
402
403
|
hash_including({name: "King size", price: 98}),
|
403
404
|
Time.now,
|
404
|
-
|
405
|
+
author
|
405
406
|
)
|
406
407
|
master.update_attributes partial_update: true, name: "King size", price: 98
|
407
408
|
end
|
408
409
|
end
|
409
410
|
|
410
|
-
describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the
|
411
|
+
describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the author" do
|
411
412
|
include DbHelpers
|
412
413
|
before :all do
|
413
414
|
@audit_class = Class.new
|
414
|
-
db_setup use_time: true, audit_class: @audit_class, audit_updated_by_method: :
|
415
|
+
db_setup use_time: true, audit_class: @audit_class, audit_updated_by_method: :author
|
415
416
|
end
|
416
417
|
before do
|
417
418
|
Timecop.freeze 2009, 11, 28, 10
|
@@ -419,21 +420,22 @@ describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the u
|
|
419
420
|
after do
|
420
421
|
Timecop.return
|
421
422
|
end
|
423
|
+
let(:author){ mock :author, audit_kind: "user" }
|
422
424
|
it "generates a new audit on creation" do
|
423
425
|
master = @master_class.new
|
424
|
-
master.should_receive(:
|
426
|
+
master.should_receive(:author).and_return author
|
425
427
|
@audit_class.should_receive(:audit).with(
|
426
428
|
master,
|
427
429
|
{},
|
428
430
|
hash_including({name: "Single Standard", price: 98}),
|
429
431
|
Time.now,
|
430
|
-
|
432
|
+
author
|
431
433
|
)
|
432
434
|
master.update_attributes name: "Single Standard", price: 98
|
433
435
|
end
|
434
436
|
it "generates a new audit on full update" do
|
435
437
|
master = @master_class.new
|
436
|
-
master.should_receive(:
|
438
|
+
master.should_receive(:author).twice.and_return author
|
437
439
|
@audit_class.stub(:audit)
|
438
440
|
master.update_attributes name: "Single Standard", price: 98
|
439
441
|
@audit_class.should_receive(:audit).with(
|
@@ -441,13 +443,13 @@ describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the u
|
|
441
443
|
hash_including({name: "Single Standard", price: 98}),
|
442
444
|
hash_including({name: "King size", price: 98}),
|
443
445
|
Time.now,
|
444
|
-
|
446
|
+
author
|
445
447
|
)
|
446
448
|
master.update_attributes name: "King size", price: 98
|
447
449
|
end
|
448
450
|
it "generates a new audit on partial update" do
|
449
451
|
master = @master_class.new
|
450
|
-
master.should_receive(:
|
452
|
+
master.should_receive(:author).twice.and_return author
|
451
453
|
@audit_class.stub(:audit)
|
452
454
|
master.update_attributes name: "Single Standard", price: 98
|
453
455
|
@audit_class.should_receive(:audit).with(
|
@@ -455,7 +457,7 @@ describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the u
|
|
455
457
|
hash_including({name: "Single Standard", price: 98}),
|
456
458
|
hash_including({name: "King size", price: 98}),
|
457
459
|
Time.now,
|
458
|
-
|
460
|
+
author
|
459
461
|
)
|
460
462
|
master.update_attributes partial_update: true, name: "King size", price: 98
|
461
463
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel_bitemporal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -127,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
127
|
version: '0'
|
128
128
|
segments:
|
129
129
|
- 0
|
130
|
-
hash:
|
130
|
+
hash: 4238333192851217509
|
131
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
132
|
none: false
|
133
133
|
requirements:
|
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
136
|
version: '0'
|
137
137
|
segments:
|
138
138
|
- 0
|
139
|
-
hash:
|
139
|
+
hash: 4238333192851217509
|
140
140
|
requirements: []
|
141
141
|
rubyforge_project:
|
142
142
|
rubygems_version: 1.8.24
|