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 +4 -4
- data/iknow_view_models.gemspec +1 -1
- data/lib/iknow_view_models/version.rb +1 -1
- data/lib/view_model/active_record/association_data.rb +3 -1
- data/lib/view_model/active_record/association_manipulation.rb +3 -3
- data/test/unit/view_model/active_record/has_many_test.rb +14 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3560a98616dd2f0548ac7e663827e68d86fa9991969ac6ee49633a0090e7d628
|
4
|
+
data.tar.gz: deec44e5132f91dfc1deef0dd889ee20c1b01c6d5d7791d356f1e9dc99ec1c8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5af2b38b2e8fb8805480bd665ea24e7ad4b489951c8b72660e502a053a945798f18269b60991eb416ab6959fc46e4831a911a15005810b57e288e2eeaaf37fd5
|
7
|
+
data.tar.gz: 5a73108237e3ffae5751f50a6e693e8fd737a4d1936f087095138ec2db47cbd7ec852f81e6ef881f794a38d67ba85429825b2393a850c149f363121f321adf30
|
data/iknow_view_models.gemspec
CHANGED
@@ -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.
|
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'
|
@@ -127,7 +127,9 @@ class ViewModel::ActiveRecord::AssociationData
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def polymorphic?
|
130
|
-
|
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.
|
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.
|
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.
|
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,
|
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.
|
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-
|
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.
|
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.
|
68
|
+
version: 1.0.2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: iknow_cache
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|