sequel_bitemporal 0.6.14 → 0.6.15

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.
@@ -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.