sequel_bitemporal 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a5b898bc4384d3300dc0c08881daafde9347ad5
4
- data.tar.gz: 78187929210e7c8a56c7c59d898f9cfaad9b72f2
3
+ metadata.gz: da30635c93f697ffa73f2d8de2ff9f5fdaef6d5a
4
+ data.tar.gz: cb7e8e67c49db3021b41783be19afb29e1b62e4b
5
5
  SHA512:
6
- metadata.gz: 85d02d52197c50ac0b46caf04f2a0a9601faee17011a510187eecb628dae05289b6f4778985fe0e7173cfe32493a1f978093bda4046774629caabe9ceb37e2b9
7
- data.tar.gz: 6a51aefa4b3d20749631382ac4eb1a5cad02ce7e7f7796a182b9d949cd7deafa924d4d4a69988f933e002cc2bb07e89e1eaece98be0ccc1d4917a3cfb7be9816
6
+ metadata.gz: a36ca71c07f927b9426d5ad3bed86dcb7e3e04e81e21ee0f54c8655887d8044e78b8284dee721f827b44122ba1a567b95c7fc4fe394b0a8a7637ae6571273fab
7
+ data.tar.gz: ea977f5d0dba283b01b72cce00f659c895f2d1a9104bf29fa7b888678bf76e6057830bb519268b853f1c7a38b797fa556c7e39bdf968f845f5ed55bf62ac07b4
data/.travis.yml CHANGED
@@ -1,7 +1,12 @@
1
+ language: ruby
2
+ cache:
3
+ bundler: true
4
+ sudo: false
1
5
  rvm:
2
6
  - 1.9.3
3
- - 2.0.0
7
+ - 2.0
4
8
  - 2.1
9
+ - 2.2
5
10
  - jruby-19mode
6
11
  env:
7
12
  - SQLITE=1
@@ -126,24 +126,27 @@ module Sequel
126
126
  n = Sequel.delay{ ::Sequel::Plugins::Bitemporal.now }
127
127
  if master.use_ranges
128
128
  master.existence_range_contains(t, j) &
129
- (Sequel.qualify(j, :valid_to) > n)
129
+ (Sequel.qualify(j, :valid_to) > n) &
130
+ (Sequel.qualify(j, :valid_from) != Sequel.qualify(j, :valid_to))
130
131
  else
131
132
  e = Sequel.qualify j, :expired_at
132
133
  (Sequel.qualify(j, :created_at) <= t) &
133
134
  Sequel.|({e=>nil}, e > t) &
134
- (Sequel.qualify(j, :valid_to) > n)
135
+ (Sequel.qualify(j, :valid_to) > n) &
136
+ (Sequel.qualify(j, :valid_from) != Sequel.qualify(j, :valid_to))
135
137
  end
136
138
  end) do |ds|
137
139
  t = Sequel.delay{ ::Sequel::Plugins::Bitemporal.point_in_time }
138
140
  n = Sequel.delay{ ::Sequel::Plugins::Bitemporal.now }
139
141
  if master.use_ranges
140
142
  existence_conditions = master.existence_range_contains t
141
- ds.where{ existence_conditions & (:valid_to > n) }
143
+ ds.where{ existence_conditions & (:valid_to > n) & (:valid_from != :valid_to) }
142
144
  else
143
145
  ds.where do
144
146
  (created_at <= t) &
145
147
  Sequel.|({expired_at=>nil}, expired_at > t) &
146
- (valid_to > n)
148
+ (valid_to > n) &
149
+ (valid_from != valid_to)
147
150
  end
148
151
  end
149
152
  end
@@ -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.8.5"
6
+ s.version = "0.8.6"
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"
@@ -523,6 +523,11 @@ describe "Sequel::Plugins::Bitemporal" do
523
523
  master.destroy
524
524
  expect(@master_class.eager_graph(:current_or_future_versions).where(Sequel.negate(current_or_future_versions__id: nil)).all).to be_empty
525
525
  end
526
+ it "association current or future versions ignores versions with valid_from==valid_to" do
527
+ master = @master_class.new
528
+ master.update_attributes name: "Single Standard", price: 99, valid_to: Date.today
529
+ expect(master.current_or_future_versions).to be_empty
530
+ end
526
531
  it "allows loading masters with current or future versions" do
527
532
  master_destroyed = @master_class.new
528
533
  master_destroyed.update_attributes name: "Single Standard", price: 98
@@ -58,14 +58,15 @@ describe "Sequel::Plugins::Bitemporal", :skip_jdbc_sqlite do
58
58
  master.update_attributes valid_from: initial_today+2, length: 3, width: 4
59
59
  expect(master.propagated_during_last_save.size).to eq(1)
60
60
  end
61
- expect(master.versions[0].name).to eq({"full_name" => "Single Standard"})
62
- expect(master.versions[1].name).to eq({"full_name" => "Single Standard"})
63
- expect(master.versions[2].name).to eq({"full_name" => "King Size"})
64
- expect(master.versions[3].name).to eq({"full_name" => "Single Standard"})
65
- expect(master.versions[4].name).to eq({"full_name" => "Single Standard"})
66
- expect(master.versions[5].name).to eq({"full_name" => "Single Standard"})
67
- expect(master.versions[6].name).to eq({"full_name" => "Single Standard"})
68
- expect(master.versions[7].name).to eq({"full_name" => "Single Standard"})
61
+ versions = master.versions_dataset.order(:id).all
62
+ expect(versions[0].name).to eq({"full_name" => "Single Standard"})
63
+ expect(versions[1].name).to eq({"full_name" => "Single Standard"})
64
+ expect(versions[2].name).to eq({"full_name" => "King Size"})
65
+ expect(versions[3].name).to eq({"full_name" => "Single Standard"})
66
+ expect(versions[4].name).to eq({"full_name" => "Single Standard"})
67
+ expect(versions[5].name).to eq({"full_name" => "Single Standard"})
68
+ expect(versions[6].name).to eq({"full_name" => "Single Standard"})
69
+ expect(versions[7].name).to eq({"full_name" => "Single Standard"})
69
70
  ensure
70
71
  @master_class.instance_variable_set :@propagate_per_column, propagate_per_column
71
72
  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.8.5
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph HALTER
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-23 00:00:00.000000000 Z
12
+ date: 2016-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel