sequel_bitemporal 0.8.8 → 0.8.9

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: fc21e82b40ea8f3f5dc15e28ed49dfd2d5cb9b1d
4
- data.tar.gz: b96f3457b381585ba37c2b81825c3d387225fabd
3
+ metadata.gz: 68ac021c3521e98f78d3f9bc44c21267cc07c60a
4
+ data.tar.gz: fa89baf10e99cbed3ed83b2072a1c2e5b2a73ca8
5
5
  SHA512:
6
- metadata.gz: 2c0883049c494836a9579c2442c194e79100587fa2f187ef5a99a8f96e938979e09bf64f2c807e1543a4d4ba2c4f430ce4c14e8700263df9e54f1097a3319c28
7
- data.tar.gz: 98d110e00b4f2d4f075f338820bcfbf717790c4447cc87f6049f9b99276fbe159ce8f27cb373a252c1a16a586e8e5ea8a36333d2900d63de00d29a029a7528d8
6
+ metadata.gz: 18a5b6e13d4c74e905262dd6844db54b5550f8f626bfad46aff2093d82bc06217294f1cef60ca25361d6fd6604c48a1fdfb29531ea448a6de9f802075e6cfa1c
7
+ data.tar.gz: 132614240d0c4244938b136a7b5be58bd741368cd616c6fcd9335f4c4fc3156bd79fe1df1c4e4392a11988ca117ff690c5cde95c8e3e30fb7bb7f9ac46a97cbe
@@ -501,7 +501,8 @@ module Sequel
501
501
  updated_by = (send(self.class.audit_updated_by_method) if audited?)
502
502
  previous_values = @current_version_values || {}
503
503
  current_version_values = {}
504
- pending_version.columns.each do |column|
504
+ columns = pending_version.columns - excluded_columns_for_changes
505
+ columns.each do |column|
505
506
  current_version_values[column] = pending_version.public_send(column)
506
507
  end
507
508
 
@@ -588,9 +589,10 @@ module Sequel
588
589
  return false unless @pending_version
589
590
  return true unless current_version?
590
591
  @current_version_values = current_version.values
591
- pending_version.columns.detect do |key|
592
- new_value = pending_version.send key
593
- case key
592
+ columns = pending_version.columns - excluded_columns_for_changes
593
+ columns.detect do |column|
594
+ new_value = pending_version.send column
595
+ case column
594
596
  when :id, :master_id, :created_at, :expired_at
595
597
  false
596
598
  when :valid_from
@@ -607,12 +609,12 @@ module Sequel
607
609
  else
608
610
  if model.version_uses_string_nilifier
609
611
  if current_version.respond_to? :nil_string?
610
- new_value = nil if current_version.nil_string? key, new_value
611
- elsif !model.version_class.skip_input_transformer?(:string_nilifier, key)
612
+ new_value = nil if current_version.nil_string? column, new_value
613
+ elsif !model.version_class.skip_input_transformer?(:string_nilifier, column)
612
614
  new_value = model.version_class.input_transformers[:string_nilifier].call(new_value)
613
615
  end
614
616
  end
615
- current_version.send(key)!=new_value
617
+ current_version.send(column)!=new_value
616
618
  end
617
619
  end
618
620
  end
@@ -621,6 +623,10 @@ module Sequel
621
623
  self.class.excluded_columns
622
624
  end
623
625
 
626
+ def excluded_columns_for_changes
627
+ []
628
+ end
629
+
624
630
  def initial_version
625
631
  @initial_version ||= model.version_class.new
626
632
  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.8"
6
+ s.version = "0.8.9"
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"
@@ -762,6 +762,33 @@ describe "Sequel::Plugins::Bitemporal" do
762
762
  master = @master_class.with_current_version.all.first
763
763
  expect( master.current_version.master.object_id ).not_to eq master.object_id
764
764
  end
765
+ it "allow defining columns which must be ignored when checking for changes" do
766
+ closure = @version_class
767
+ with_excluded_columns = Class.new Sequel::Model do
768
+ set_dataset :rooms
769
+ plugin :bitemporal, version_class: closure
770
+ def excluded_columns_for_changes
771
+ [:name, :price]
772
+ end
773
+ end
774
+ master = with_excluded_columns.new
775
+ master.update_attributes name: "Single Standard", price: 98
776
+ expect(master).to have_versions %Q{
777
+ | name | price | created_at | expired_at | valid_from | valid_to | current |
778
+ | Single Standard | 98 | 2009-11-28 | | 2009-11-28 | MAX DATE | true |
779
+ }
780
+ master.update_attributes name: "King Size", price: 94
781
+ expect(master).to have_versions %Q{
782
+ | name | price | created_at | expired_at | valid_from | valid_to | current |
783
+ | Single Standard | 98 | 2009-11-28 | | 2009-11-28 | MAX DATE | true |
784
+ }
785
+ master.update_attributes length: 1
786
+ expect(master).to have_versions %Q{
787
+ | name | price | length | created_at | expired_at | valid_from | valid_to | current |
788
+ | Single Standard | 98 | | 2009-11-28 | 2009-11-28 | 2009-11-28 | MAX DATE | |
789
+ | King Size | 94 | 1 | 2009-11-28 | | 2009-11-28 | MAX DATE | true |
790
+ }
791
+ end
765
792
  end
766
793
 
767
794
  describe "Sequel::Plugins::Bitemporal", "with audit" do
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.8
4
+ version: 0.8.9
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: 2016-08-09 00:00:00.000000000 Z
12
+ date: 2017-02-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel