iknow_view_models 3.4.2 → 3.4.3

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