sequel_bitemporal 0.6.14 → 0.6.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -423,7 +423,7 @@ module Sequel
423
423
 
424
424
  to_check_columns = self.class.version_class.columns - excluded_columns
425
425
  updated_by = (send(self.class.audit_updated_by_method) if audited?)
426
- previous_values = @current_version_values
426
+ previous_values = @current_version_values || {}
427
427
  current_version_values = pending_version.values
428
428
 
429
429
  futures.each do |future_version|
@@ -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.14"
6
+ s.version = "0.6.15"
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"
@@ -360,7 +360,7 @@ describe "Sequel::Plugins::Bitemporal" do
360
360
  | Single Standard | 12 | 1 | 1 | 2009-11-30 | 2009-12-01 | 2009-12-01 | 2009-12-02 | |
361
361
  | Single Standard | 12 | | 1 | 2009-12-01 | | 2009-11-28 | 2009-11-30 | |
362
362
  | Single Standard | 12 | 3 | 4 | 2009-12-01 | | 2009-11-30 | 2009-12-01 | |
363
- | Single Standard | 12 | 1 | 4 | 2009-12-01 | | 2009-12-01 | 2009-12-02 | |
363
+ | Single Standard | 12 | 3 | 4 | 2009-12-01 | | 2009-12-01 | 2009-12-02 | |
364
364
  }
365
365
  ensure
366
366
  @master_class.instance_variable_set :@propagate_per_column, propagate_per_column
@@ -405,6 +405,24 @@ describe "Sequel::Plugins::Bitemporal" do
405
405
  master.pending_or_current_version.name.should == "King Size"
406
406
  master.name.should == "King Size"
407
407
  end
408
+ it "allows creating a new version before all other versions in case of propagation per column" do
409
+ propagate_per_column = @master_class.propagate_per_column
410
+ begin
411
+ @master_class.instance_variable_set :@propagate_per_column, true
412
+ master = @master_class.new
413
+ master.update_attributes name: "Single Standard", price: 98
414
+ Timecop.freeze Date.today - 100 do
415
+ master.update_attributes name: "Single Standard", price: 95
416
+ end
417
+ master.should have_versions %Q{
418
+ | name | price | created_at | expired_at | valid_from | valid_to | current |
419
+ | Single Standard | 98 | 2009-11-28 | | 2009-11-28 | MAX DATE | true |
420
+ | Single Standard | 95 | 2009-08-20 | | 2009-08-20 | 2009-11-28 | |
421
+ }
422
+ ensure
423
+ @master_class.instance_variable_set :@propagate_per_column, propagate_per_column
424
+ end
425
+ end
408
426
  it "allows to go back in time" do
409
427
  master = @master_class.new
410
428
  master.update_attributes name: "Single Standard", price: 98, valid_to: Date.today+1
@@ -755,20 +773,7 @@ describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the a
755
773
  )
756
774
  master.update_attributes name: "Single Standard", price: 98
757
775
  end
758
- it "generates a new audit on full update" do
759
- master = @master_class.new
760
- master.should_receive(:author).twice.and_return author
761
- master.update_attributes name: "Single Standard", price: 98
762
- @audit_class.should_receive(:audit).with(
763
- master,
764
- hash_including({name: "Single Standard", price: 98}),
765
- hash_including({name: "King size", price: 98}),
766
- Date.today,
767
- author
768
- )
769
- master.update_attributes name: "King size", price: 98
770
- end
771
- it "generates a new audit on partial update" do
776
+ it "generates a new audit on update" do
772
777
  master = @master_class.new
773
778
  master.should_receive(:author).twice.and_return author
774
779
  master.update_attributes name: "Single Standard", price: 98
@@ -459,21 +459,7 @@ describe "Sequel::Plugins::Bitemporal", "with audit, specifying how to get the a
459
459
  )
460
460
  master.update_attributes name: "Single Standard", price: 98
461
461
  end
462
- it "generates a new audit on full update" do
463
- master = @master_class.new
464
- master.should_receive(:author).twice.and_return author
465
- @audit_class.stub(:audit)
466
- master.update_attributes name: "Single Standard", price: 98
467
- @audit_class.should_receive(:audit).with(
468
- master,
469
- hash_including({name: "Single Standard", price: 98}),
470
- hash_including({name: "King size", price: 98}),
471
- Time.now,
472
- author
473
- )
474
- master.update_attributes name: "King size", price: 98
475
- end
476
- it "generates a new audit on partial update" do
462
+ it "generates a new audit on update" do
477
463
  master = @master_class.new
478
464
  master.should_receive(:author).twice.and_return author
479
465
  @audit_class.stub(:audit)
@@ -4,11 +4,12 @@ RSpec::Matchers.define :have_versions do |versions_str|
4
4
  @last_version = nil
5
5
  match do |master|
6
6
  versions = master.versions_dataset.order(:id).all
7
+ columns = @table.first.keys.collect &:to_sym
7
8
  versions.size == @table.size && @table.each.with_index.all? do |version, index|
8
9
  @last_index = index
9
10
  @last_version = version
10
11
  master_version = versions[index]
11
- [:name, :price, :valid_from, :valid_to, :created_at, :expired_at, :current].all? do |column|
12
+ columns.all? do |column|
12
13
  if column==:current
13
14
  found = master_version.current?
14
15
  expected = (version[column.to_s]=="true").to_s
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_bitemporal
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.6.15
4
5
  prerelease:
5
- version: 0.6.14
6
6
  platform: ruby
7
7
  authors:
8
8
  - Joseph HALTER
@@ -10,104 +10,104 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-06-06 00:00:00.000000000 Z
13
+ date: 2013-07-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sequel
17
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
18
19
  requirements:
19
20
  - - ~>
20
21
  - !ruby/object:Gem::Version
21
22
  version: '3.30'
22
- none: false
23
23
  type: :runtime
24
+ prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
25
27
  requirements:
26
28
  - - ~>
27
29
  - !ruby/object:Gem::Version
28
30
  version: '3.30'
29
- none: false
30
- prerelease: false
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: sqlite3
33
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
34
35
  requirements:
35
36
  - - ! '>='
36
37
  - !ruby/object:Gem::Version
37
38
  version: '0'
38
- none: false
39
39
  type: :development
40
+ prerelease: false
40
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
41
43
  requirements:
42
44
  - - ! '>='
43
45
  - !ruby/object:Gem::Version
44
46
  version: '0'
45
- none: false
46
- prerelease: false
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pg
49
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
50
51
  requirements:
51
52
  - - ! '>='
52
53
  - !ruby/object:Gem::Version
53
54
  version: '0'
54
- none: false
55
55
  type: :development
56
+ prerelease: false
56
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
57
59
  requirements:
58
60
  - - ! '>='
59
61
  - !ruby/object:Gem::Version
60
62
  version: '0'
61
- none: false
62
- prerelease: false
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: rspec
65
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
66
67
  requirements:
67
68
  - - ~>
68
69
  - !ruby/object:Gem::Version
69
70
  version: 2.10.0
70
- none: false
71
71
  type: :development
72
+ prerelease: false
72
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
73
75
  requirements:
74
76
  - - ~>
75
77
  - !ruby/object:Gem::Version
76
78
  version: 2.10.0
77
- none: false
78
- prerelease: false
79
79
  - !ruby/object:Gem::Dependency
80
80
  name: timecop
81
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
82
83
  requirements:
83
84
  - - ! '>='
84
85
  - !ruby/object:Gem::Version
85
86
  version: '0'
86
- none: false
87
87
  type: :development
88
+ prerelease: false
88
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
89
91
  requirements:
90
92
  - - ! '>='
91
93
  - !ruby/object:Gem::Version
92
94
  version: '0'
93
- none: false
94
- prerelease: false
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: rake
97
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
98
99
  requirements:
99
100
  - - ! '>='
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
- none: false
103
103
  type: :development
104
+ prerelease: false
104
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
105
107
  requirements:
106
108
  - - ! '>='
107
109
  - !ruby/object:Gem::Version
108
110
  version: '0'
109
- none: false
110
- prerelease: false
111
111
  description: Bitemporal versioning for sequel, fully tested.
112
112
  email:
113
113
  - joseph.halter@thetalentbox.com
@@ -139,26 +139,20 @@ rdoc_options: []
139
139
  require_paths:
140
140
  - lib
141
141
  required_ruby_version: !ruby/object:Gem::Requirement
142
+ none: false
142
143
  requirements:
143
144
  - - ! '>='
144
145
  - !ruby/object:Gem::Version
145
- segments:
146
- - 0
147
- hash: 1292693480009936684
148
146
  version: '0'
149
- none: false
150
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
+ none: false
151
149
  requirements:
152
150
  - - ! '>='
153
151
  - !ruby/object:Gem::Version
154
- segments:
155
- - 0
156
- hash: 1292693480009936684
157
152
  version: '0'
158
- none: false
159
153
  requirements: []
160
154
  rubyforge_project:
161
- rubygems_version: 1.8.25
155
+ rubygems_version: 1.8.23
162
156
  signing_key:
163
157
  specification_version: 3
164
158
  summary: Bitemporal versioning for sequel.