sequel_bitemporal 0.8.5 → 0.8.6

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