iknow_view_models 3.7.1 → 3.7.3

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
  SHA256:
3
- metadata.gz: 1fb4421931099dc325d159573afcd9ea3529f6e29b4ac80f60d3628c9812df4c
4
- data.tar.gz: 97d730c4d0a28ec9ce257906f69a1dd79e1b99c5fe025067ad57ba4ca9774931
3
+ metadata.gz: c8326292714cd7c35f3abdfab45e1384ab1e4e7c393a09270667761b657490b4
4
+ data.tar.gz: 76b36a08882c48264b991b0b2098de2559c860e0ff6b8a10d25932182773352a
5
5
  SHA512:
6
- metadata.gz: 53aff699c92efd1c334333b2f417444498c504b2f91ea57a00741e3e6e1e259c988723b23e68a7f2c16fba1a6906786471748f5adf5dc2797ca2a4d0924f10df
7
- data.tar.gz: b739f19369e3282f6e897a000f04bb56b432796acbe78ca70777e349eef8f39a4058488032f4b42eeda0c4c7c4f60e9b4dba1fba1f2cf253a3c2bd960ff753e3
6
+ metadata.gz: b0ec39c9fd67c59a790b9327645880c5742994789adb29fe944dea737196edc3bbc23e623ce73a9d5d4a0968efefc404ce05b60c28f9740f4cbfa8c27d2076d6
7
+ data.tar.gz: 396e3640cab86908afa4a7c1d768499613f432033b6fa0fa87da8657e575bb889c574685ee27032439d41a4fa5cd4795fc1f98f7481f82338e9bf9eb53b11ea8
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'acts_as_manual_list'
29
29
  spec.add_dependency 'deep_preloader', '>= 1.0.2'
30
30
  spec.add_dependency 'iknow_cache'
31
- spec.add_dependency 'iknow_params', '~> 2.2.0'
31
+ spec.add_dependency 'iknow_params', '~> 2.3.0'
32
32
  spec.add_dependency 'keyword_builder'
33
33
  spec.add_dependency 'safe_values'
34
34
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IknowViewModels
4
- VERSION = '3.7.1'
4
+ VERSION = '3.7.3'
5
5
  end
@@ -163,7 +163,7 @@ class ViewModel::ActiveRecord
163
163
 
164
164
  @release_pool.release_all!
165
165
 
166
- if updated_viewmodels.present?
166
+ if updated_viewmodels.present? && deserialize_context.validate_deferred_constraints?
167
167
  # Deferred database constraints may have been violated by changes during
168
168
  # deserialization. VM::AR promises that any errors during deserialization
169
169
  # will be raised as a ViewModel::DeserializationError, so check constraints
@@ -4,9 +4,21 @@ require 'view_model/traversal_context'
4
4
 
5
5
  class ViewModel::DeserializeContext < ViewModel::TraversalContext
6
6
  class SharedContext < ViewModel::TraversalContext::SharedContext
7
+ def initialize(validate_deferred_constraints: true, **rest)
8
+ super(**rest)
9
+ @validate_deferred_constraints = validate_deferred_constraints
10
+ end
11
+
12
+ # Should deferred database constraints be checked via SET CONSTRAINTS
13
+ # IMMEDIATE at the end of the deserialization operation
14
+ def validate_deferred_constraints?
15
+ @validate_deferred_constraints
16
+ end
7
17
  end
8
18
 
9
19
  def self.shared_context_class
10
20
  SharedContext
11
21
  end
22
+
23
+ delegate :validate_deferred_constraints?, to: :shared_context
12
24
  end
@@ -556,5 +556,21 @@ class ViewModel::ActiveRecordTest < ActiveSupport::TestCase
556
556
 
557
557
  assert_equal({ constraint: constraint, columns: columns, values: values, conflicts: conflicts, nodes: [] }, ex.meta)
558
558
  end
559
+
560
+ def test_disabled_deferred_check
561
+ l1 = List.create!(value: 1)
562
+ l2 = List.create!
563
+
564
+ ctx = ListView.new_deserialize_context(validate_deferred_constraints: false)
565
+ alter_by_view!(ListView, l2, deserialize_context: ctx) do |view, refs|
566
+ view['value'] = 1
567
+ end
568
+
569
+ ex = assert_raises(::ActiveRecord::StatementInvalid) do
570
+ List.connection.execute('SET CONSTRAINTS ALL IMMEDIATE')
571
+ end
572
+
573
+ assert_equal(PG::ExclusionViolation, ex.cause.class)
574
+ end
559
575
  end
560
576
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iknow_view_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.1
4
+ version: 3.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - iKnow Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-17 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.2.0
103
+ version: 2.3.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.2.0
110
+ version: 2.3.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: keyword_builder
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -509,7 +509,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
509
509
  - !ruby/object:Gem::Version
510
510
  version: '0'
511
511
  requirements: []
512
- rubygems_version: 3.3.11
512
+ rubygems_version: 3.3.26
513
513
  signing_key:
514
514
  specification_version: 4
515
515
  summary: ViewModels provide a means of encapsulating a collection of related data