iknow_view_models 3.4.2 → 3.4.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: 10bc5dca413705470b182157c2a38ebc2e11a7ae5a121ad328d03b35ff64f1d6
4
- data.tar.gz: c31bf72ad0a62316705618344963e7ad78d29224b33c5472dc00ca9ec9413d75
3
+ metadata.gz: 3560a98616dd2f0548ac7e663827e68d86fa9991969ac6ee49633a0090e7d628
4
+ data.tar.gz: deec44e5132f91dfc1deef0dd889ee20c1b01c6d5d7791d356f1e9dc99ec1c8a
5
5
  SHA512:
6
- metadata.gz: 989ff044b31ae5bdcea3e489e0528c9d7d6115fc19193c11f0986985001c2bd0d6bb3c40ef99f331d525c466c09849b2218dcbad8169545106b3736e6da7360b
7
- data.tar.gz: 6bb882161397c6ad72456dd8a5d9389fce1ce3be9c27347d8168790070072287e9e5ab669c6406504e67cff15fce1df6a58babc9ec59be542a9f2935f407a787
6
+ metadata.gz: 5af2b38b2e8fb8805480bd665ea24e7ad4b489951c8b72660e502a053a945798f18269b60991eb416ab6959fc46e4831a911a15005810b57e288e2eeaaf37fd5
7
+ data.tar.gz: 5a73108237e3ffae5751f50a6e693e8fd737a4d1936f087095138ec2db47cbd7ec852f81e6ef881f794a38d67ba85429825b2393a850c149f363121f321adf30
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency 'activesupport', '>= 5.0'
26
26
 
27
27
  spec.add_dependency 'acts_as_manual_list'
28
- spec.add_dependency 'deep_preloader', '>= 1.0.1'
28
+ spec.add_dependency 'deep_preloader', '>= 1.0.2'
29
29
  spec.add_dependency 'iknow_cache'
30
30
  spec.add_dependency 'iknow_params', '~> 2.2.0'
31
31
  spec.add_dependency 'keyword_builder'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IknowViewModels
4
- VERSION = '3.4.2'
4
+ VERSION = '3.4.3'
5
5
  end
@@ -127,7 +127,9 @@ class ViewModel::ActiveRecord::AssociationData
127
127
  end
128
128
 
129
129
  def polymorphic?
130
- target_reflection.polymorphic?
130
+ # STI polymorphism isn't shown on the association reflection, so in that
131
+ # case we have to infer it by having multiple target viewmodel types.
132
+ target_reflection.polymorphic? || viewmodel_classes.size > 1
131
133
  end
132
134
 
133
135
  # The side of the immediate association that holds the pointer.
@@ -16,7 +16,7 @@ module ViewModel::ActiveRecord::AssociationManipulation
16
16
  associated_viewmodel = association_data.viewmodel_class
17
17
  direct_viewmodel = association_data.direct_viewmodel
18
18
  else
19
- raise ArgumentError.new('Polymorphic STI relationships not supported yet') if association_data.viewmodel_classes.size > 1
19
+ raise ArgumentError.new('Polymorphic STI relationships not supported yet') if association_data.polymorphic?
20
20
 
21
21
  associated_viewmodel = association.klass.try { |k| association_data.viewmodel_class_for_model!(k) }
22
22
  direct_viewmodel = associated_viewmodel
@@ -118,7 +118,7 @@ module ViewModel::ActiveRecord::AssociationManipulation
118
118
  direct_viewmodel_class = association_data.direct_viewmodel
119
119
  root_update_data, referenced_update_data = construct_indirect_append_updates(association_data, subtree_hashes, references)
120
120
  else
121
- raise ArgumentError.new('Polymorphic STI relationships not supported yet') if association_data.viewmodel_classes.size > 1
121
+ raise ArgumentError.new('Polymorphic STI relationships not supported yet') if association_data.polymorphic?
122
122
 
123
123
  direct_viewmodel_class = association_data.viewmodel_class
124
124
  root_update_data, referenced_update_data = construct_direct_append_updates(association_data, subtree_hashes, references)
@@ -242,7 +242,7 @@ module ViewModel::ActiveRecord::AssociationManipulation
242
242
  direct_viewmodel = association_data.direct_viewmodel
243
243
  association_scope = association_scope.where(association_data.indirect_reflection.foreign_key => associated_id)
244
244
  else
245
- raise ArgumentError.new('Polymorphic STI relationships not supported yet') if association_data.viewmodel_classes.size > 1
245
+ raise ArgumentError.new('Polymorphic STI relationships not supported yet') if association_data.polymorphic?
246
246
 
247
247
  # viewmodel type for current association: nil in case of empty polymorphic association
248
248
  direct_viewmodel = association.klass.try { |k| association_data.viewmodel_class_for_model!(k) }
@@ -972,7 +972,7 @@ class ViewModel::ActiveRecord::HasManyTest < ActiveSupport::TestCase
972
972
  'children' => [
973
973
  { '_type' => 'Dog', 'dog_number' => 1 },
974
974
  { '_type' => 'Cat', 'cat_number' => 2 },
975
- ]
975
+ ],
976
976
  }
977
977
 
978
978
  pv = ModelView.deserialize_from_view(view)
@@ -1010,7 +1010,7 @@ class ViewModel::ActiveRecord::HasManyTest < ActiveSupport::TestCase
1010
1010
  it 'functional updates' do
1011
1011
  model = create_model!
1012
1012
 
1013
- alter_by_view!(ModelView, model) do |view, refs|
1013
+ alter_by_view!(ModelView, model) do |view, _refs|
1014
1014
  view['children'] = build_fupdate do
1015
1015
  append([{ '_type' => 'Cat', 'cat_number' => 100 }])
1016
1016
  end
@@ -1021,6 +1021,18 @@ class ViewModel::ActiveRecord::HasManyTest < ActiveSupport::TestCase
1021
1021
  assert_kind_of(Cat, new_child)
1022
1022
  assert_equal(100, new_child.cat_number)
1023
1023
  end
1024
+
1025
+ it 'calculates eager_includes' do
1026
+ includes = viewmodel_class.eager_includes
1027
+ expected = DeepPreloader::Spec.new(
1028
+ 'children' => DeepPreloader::PolymorphicSpec.new(
1029
+ {
1030
+ 'Dog' => DeepPreloader::Spec.new,
1031
+ 'Cat' => DeepPreloader::Spec.new,
1032
+ }))
1033
+
1034
+ assert_equal(includes, expected)
1035
+ end
1024
1036
  end
1025
1037
 
1026
1038
  describe 'owned reference children' do
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.4.2
4
+ version: 3.4.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: 2021-06-23 00:00:00.000000000 Z
11
+ date: 2021-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.1
61
+ version: 1.0.2
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.1
68
+ version: 1.0.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: iknow_cache
71
71
  requirement: !ruby/object:Gem::Requirement