iknow_view_models 3.1.6 → 3.2.2
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 +4 -4
- data/.circleci/config.yml +6 -6
- data/.rubocop.yml +18 -0
- data/Appraisals +6 -6
- data/Gemfile +6 -2
- data/Rakefile +5 -5
- data/gemfiles/rails_5_2.gemfile +5 -5
- data/gemfiles/rails_6_0.gemfile +9 -0
- data/iknow_view_models.gemspec +40 -38
- data/lib/iknow_view_models.rb +9 -7
- data/lib/iknow_view_models/version.rb +1 -1
- data/lib/view_model.rb +31 -17
- data/lib/view_model/access_control.rb +5 -2
- data/lib/view_model/access_control/composed.rb +10 -9
- data/lib/view_model/access_control/open.rb +2 -0
- data/lib/view_model/access_control/read_only.rb +2 -0
- data/lib/view_model/access_control/tree.rb +11 -6
- data/lib/view_model/access_control_error.rb +4 -1
- data/lib/view_model/active_record.rb +13 -12
- data/lib/view_model/active_record/association_data.rb +3 -2
- data/lib/view_model/active_record/association_manipulation.rb +6 -4
- data/lib/view_model/active_record/cache.rb +114 -34
- data/lib/view_model/active_record/cache/cacheable_view.rb +2 -2
- data/lib/view_model/active_record/collection_nested_controller.rb +3 -3
- data/lib/view_model/active_record/controller.rb +68 -1
- data/lib/view_model/active_record/controller_base.rb +4 -1
- data/lib/view_model/active_record/nested_controller_base.rb +1 -0
- data/lib/view_model/active_record/update_context.rb +8 -6
- data/lib/view_model/active_record/update_data.rb +32 -30
- data/lib/view_model/active_record/update_operation.rb +17 -13
- data/lib/view_model/active_record/visitor.rb +0 -1
- data/lib/view_model/after_transaction_runner.rb +2 -2
- data/lib/view_model/callbacks.rb +3 -1
- data/lib/view_model/controller.rb +13 -3
- data/lib/view_model/deserialization_error.rb +15 -12
- data/lib/view_model/error.rb +12 -10
- data/lib/view_model/error_view.rb +3 -1
- data/lib/view_model/migratable_view.rb +78 -0
- data/lib/view_model/migration.rb +48 -0
- data/lib/view_model/migration/no_path_error.rb +26 -0
- data/lib/view_model/migration/one_way_error.rb +24 -0
- data/lib/view_model/migration/unspecified_version_error.rb +24 -0
- data/lib/view_model/migrator.rb +108 -0
- data/lib/view_model/record.rb +15 -14
- data/lib/view_model/reference.rb +3 -1
- data/lib/view_model/references.rb +8 -5
- data/lib/view_model/registry.rb +1 -1
- data/lib/view_model/schemas.rb +9 -4
- data/lib/view_model/serialization_error.rb +4 -1
- data/lib/view_model/serialize_context.rb +4 -4
- data/lib/view_model/test_helpers.rb +8 -3
- data/lib/view_model/test_helpers/arvm_builder.rb +21 -15
- data/lib/view_model/traversal_context.rb +2 -1
- data/nix/dependencies.nix +5 -0
- data/nix/gem/generate.rb +2 -1
- data/shell.nix +8 -3
- data/test/.rubocop.yml +14 -0
- data/test/helpers/arvm_test_models.rb +12 -9
- data/test/helpers/arvm_test_utilities.rb +5 -3
- data/test/helpers/controller_test_helpers.rb +55 -32
- data/test/helpers/match_enumerator.rb +1 -0
- data/test/helpers/query_logging.rb +2 -1
- data/test/helpers/test_access_control.rb +5 -3
- data/test/helpers/viewmodel_spec_helpers.rb +88 -22
- data/test/unit/view_model/access_control_test.rb +144 -144
- data/test/unit/view_model/active_record/alias_test.rb +15 -13
- data/test/unit/view_model/active_record/belongs_to_test.rb +40 -39
- data/test/unit/view_model/active_record/cache_test.rb +68 -31
- data/test/unit/view_model/active_record/cloner_test.rb +67 -63
- data/test/unit/view_model/active_record/controller_test.rb +113 -65
- data/test/unit/view_model/active_record/counter_test.rb +10 -9
- data/test/unit/view_model/active_record/customization_test.rb +59 -58
- data/test/unit/view_model/active_record/has_many_test.rb +112 -111
- data/test/unit/view_model/active_record/has_many_through_poly_test.rb +15 -14
- data/test/unit/view_model/active_record/has_many_through_test.rb +33 -38
- data/test/unit/view_model/active_record/has_one_test.rb +37 -36
- data/test/unit/view_model/active_record/migration_test.rb +161 -0
- data/test/unit/view_model/active_record/namespacing_test.rb +19 -17
- data/test/unit/view_model/active_record/poly_test.rb +44 -45
- data/test/unit/view_model/active_record/shared_test.rb +30 -28
- data/test/unit/view_model/active_record/version_test.rb +9 -7
- data/test/unit/view_model/active_record_test.rb +72 -72
- data/test/unit/view_model/callbacks_test.rb +19 -15
- data/test/unit/view_model/controller_test.rb +4 -2
- data/test/unit/view_model/record_test.rb +92 -97
- data/test/unit/view_model/traversal_context_test.rb +4 -5
- data/test/unit/view_model_test.rb +18 -16
- metadata +36 -12
- data/.travis.yml +0 -31
- data/appveyor.yml +0 -22
- data/gemfiles/rails_6_0_beta.gemfile +0 -9
@@ -1,14 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
3
|
require 'minitest/autorun'
|
5
4
|
require 'minitest/unit'
|
6
5
|
require 'minitest/hooks'
|
7
6
|
|
8
|
-
require_relative '../../helpers/match_enumerator
|
9
|
-
require_relative '../../helpers/arvm_test_utilities
|
10
|
-
require_relative '../../helpers/arvm_test_models
|
11
|
-
require_relative '../../helpers/viewmodel_spec_helpers
|
7
|
+
require_relative '../../helpers/match_enumerator'
|
8
|
+
require_relative '../../helpers/arvm_test_utilities'
|
9
|
+
require_relative '../../helpers/arvm_test_models'
|
10
|
+
require_relative '../../helpers/viewmodel_spec_helpers'
|
12
11
|
|
13
12
|
require 'view_model'
|
14
13
|
require 'view_model/record'
|
@@ -1,7 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
2
4
|
Bundler.require
|
3
5
|
|
4
|
-
require
|
6
|
+
require 'minitest/autorun'
|
5
7
|
|
6
8
|
class DefaultViewModel < ViewModel
|
7
9
|
self.view_name = 'DefaultViewModel'
|
@@ -19,44 +21,44 @@ end
|
|
19
21
|
|
20
22
|
class ViewModel::ActiveRecordTest < ActiveSupport::TestCase
|
21
23
|
def test_serialize
|
22
|
-
s = TestViewModel.new(
|
24
|
+
s = TestViewModel.new('a')
|
23
25
|
assert_equal(TestViewModel.serialize_to_hash(s),
|
24
|
-
{
|
26
|
+
{ 'name' => 'a' })
|
25
27
|
end
|
26
28
|
|
27
29
|
def test_default_serialize
|
28
|
-
s = DefaultViewModel.new(
|
30
|
+
s = DefaultViewModel.new('a', 1)
|
29
31
|
assert_equal(TestViewModel.serialize_to_hash(s),
|
30
|
-
{
|
32
|
+
{ 'foo' => 'a', 'bar' => 1 })
|
31
33
|
end
|
32
34
|
|
33
35
|
def test_default_serialize_array
|
34
|
-
s = DefaultViewModel.new(
|
36
|
+
s = DefaultViewModel.new('a', [1, 2])
|
35
37
|
assert_equal(TestViewModel.serialize_to_hash(s),
|
36
|
-
{
|
38
|
+
{ 'foo' => 'a', 'bar' => [1, 2] })
|
37
39
|
end
|
38
40
|
|
39
41
|
def test_default_serialize_hash
|
40
|
-
s = DefaultViewModel.new(
|
42
|
+
s = DefaultViewModel.new('a', { 'x' => 'y' })
|
41
43
|
assert_equal(DefaultViewModel.serialize_to_hash(s),
|
42
|
-
{
|
44
|
+
{ 'foo' => 'a', 'bar' => { 'x' => 'y' } })
|
43
45
|
end
|
44
46
|
|
45
47
|
def test_default_serialize_empty_hash
|
46
|
-
s = DefaultViewModel.new(
|
48
|
+
s = DefaultViewModel.new('a', {})
|
47
49
|
assert_equal(DefaultViewModel.serialize_to_hash(s),
|
48
|
-
{
|
50
|
+
{ 'foo' => 'a', 'bar' => {} })
|
49
51
|
end
|
50
52
|
|
51
53
|
def test_default_serialize_viewmodel
|
52
|
-
s = DefaultViewModel.new(
|
54
|
+
s = DefaultViewModel.new('a', DefaultViewModel.new(1, 2))
|
53
55
|
assert_equal(DefaultViewModel.serialize_to_hash(s),
|
54
|
-
{
|
56
|
+
{ 'foo' => 'a', 'bar' => { 'foo' => 1, 'bar' => 2 } })
|
55
57
|
end
|
56
58
|
|
57
59
|
def test_default_serialize_array_of_viewmodel
|
58
|
-
s = DefaultViewModel.new(
|
60
|
+
s = DefaultViewModel.new('a', [TestViewModel.new('x'), TestViewModel.new('y')])
|
59
61
|
assert_equal(DefaultViewModel.serialize_to_hash(s),
|
60
|
-
{
|
62
|
+
{ 'foo' => 'a', 'bar' => [{ 'name' => 'x' }, { 'name' => 'y' }] })
|
61
63
|
end
|
62
64
|
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.
|
4
|
+
version: 3.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iKnow Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 2.2.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: keyword_builder
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: safe_values
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: oj
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: renum
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,7 +207,7 @@ dependencies:
|
|
193
207
|
- !ruby/object:Gem::Version
|
194
208
|
version: '0'
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
210
|
+
name: rgl
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
198
212
|
requirements:
|
199
213
|
- - ">="
|
@@ -280,16 +294,16 @@ dependencies:
|
|
280
294
|
name: pg
|
281
295
|
requirement: !ruby/object:Gem::Requirement
|
282
296
|
requirements:
|
283
|
-
- - "
|
297
|
+
- - ">="
|
284
298
|
- !ruby/object:Gem::Version
|
285
|
-
version: '0
|
299
|
+
version: '0'
|
286
300
|
type: :development
|
287
301
|
prerelease: false
|
288
302
|
version_requirements: !ruby/object:Gem::Requirement
|
289
303
|
requirements:
|
290
|
-
- - "
|
304
|
+
- - ">="
|
291
305
|
- !ruby/object:Gem::Version
|
292
|
-
version: '0
|
306
|
+
version: '0'
|
293
307
|
- !ruby/object:Gem::Dependency
|
294
308
|
name: pry
|
295
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -357,15 +371,14 @@ files:
|
|
357
371
|
- ".envrc"
|
358
372
|
- ".gitignore"
|
359
373
|
- ".idea/codeStyleSettings.xml"
|
360
|
-
- ".
|
374
|
+
- ".rubocop.yml"
|
361
375
|
- Appraisals
|
362
376
|
- Gemfile
|
363
377
|
- LICENSE.txt
|
364
378
|
- README.md
|
365
379
|
- Rakefile
|
366
|
-
- appveyor.yml
|
367
380
|
- gemfiles/rails_5_2.gemfile
|
368
|
-
- gemfiles/
|
381
|
+
- gemfiles/rails_6_0.gemfile
|
369
382
|
- iknow_view_models.gemspec
|
370
383
|
- lib/iknow_view_models.rb
|
371
384
|
- lib/iknow_view_models/railtie.rb
|
@@ -401,6 +414,12 @@ files:
|
|
401
414
|
- lib/view_model/deserialize_context.rb
|
402
415
|
- lib/view_model/error.rb
|
403
416
|
- lib/view_model/error_view.rb
|
417
|
+
- lib/view_model/migratable_view.rb
|
418
|
+
- lib/view_model/migration.rb
|
419
|
+
- lib/view_model/migration/no_path_error.rb
|
420
|
+
- lib/view_model/migration/one_way_error.rb
|
421
|
+
- lib/view_model/migration/unspecified_version_error.rb
|
422
|
+
- lib/view_model/migrator.rb
|
404
423
|
- lib/view_model/record.rb
|
405
424
|
- lib/view_model/record/attribute_data.rb
|
406
425
|
- lib/view_model/reference.rb
|
@@ -414,8 +433,10 @@ files:
|
|
414
433
|
- lib/view_model/traversal_context.rb
|
415
434
|
- lib/view_model/utils.rb
|
416
435
|
- lib/view_model/utils/collections.rb
|
436
|
+
- nix/dependencies.nix
|
417
437
|
- nix/gem/generate.rb
|
418
438
|
- shell.nix
|
439
|
+
- test/.rubocop.yml
|
419
440
|
- test/config/database.yml
|
420
441
|
- test/helpers/arvm_test_models.rb
|
421
442
|
- test/helpers/arvm_test_utilities.rb
|
@@ -437,6 +458,7 @@ files:
|
|
437
458
|
- test/unit/view_model/active_record/has_many_through_poly_test.rb
|
438
459
|
- test/unit/view_model/active_record/has_many_through_test.rb
|
439
460
|
- test/unit/view_model/active_record/has_one_test.rb
|
461
|
+
- test/unit/view_model/active_record/migration_test.rb
|
440
462
|
- test/unit/view_model/active_record/namespacing_test.rb
|
441
463
|
- test/unit/view_model/active_record/poly_test.rb
|
442
464
|
- test/unit/view_model/active_record/shared_test.rb
|
@@ -473,6 +495,7 @@ specification_version: 4
|
|
473
495
|
summary: ViewModels provide a means of encapsulating a collection of related data
|
474
496
|
and specifying its JSON serialization.
|
475
497
|
test_files:
|
498
|
+
- test/.rubocop.yml
|
476
499
|
- test/config/database.yml
|
477
500
|
- test/helpers/arvm_test_models.rb
|
478
501
|
- test/helpers/arvm_test_utilities.rb
|
@@ -494,6 +517,7 @@ test_files:
|
|
494
517
|
- test/unit/view_model/active_record/has_many_through_poly_test.rb
|
495
518
|
- test/unit/view_model/active_record/has_many_through_test.rb
|
496
519
|
- test/unit/view_model/active_record/has_one_test.rb
|
520
|
+
- test/unit/view_model/active_record/migration_test.rb
|
497
521
|
- test/unit/view_model/active_record/namespacing_test.rb
|
498
522
|
- test/unit/view_model/active_record/poly_test.rb
|
499
523
|
- test/unit/view_model/active_record/shared_test.rb
|
data/.travis.yml
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
dist: trusty
|
2
|
-
sudo: false
|
3
|
-
language: ruby
|
4
|
-
cache: bundler
|
5
|
-
|
6
|
-
rvm:
|
7
|
-
- 2.5
|
8
|
-
|
9
|
-
gemfile:
|
10
|
-
- gemfiles/rails_5_2.gemfile
|
11
|
-
|
12
|
-
addons:
|
13
|
-
postgresql: "10"
|
14
|
-
apt:
|
15
|
-
packages:
|
16
|
-
- postgresql-10
|
17
|
-
- postgresql-client-10
|
18
|
-
- postgresql-server-dev-10
|
19
|
-
env:
|
20
|
-
global:
|
21
|
-
- PGPORT=5433
|
22
|
-
|
23
|
-
before_install:
|
24
|
-
- gem update --system
|
25
|
-
- gem install bundler
|
26
|
-
|
27
|
-
before_script:
|
28
|
-
- psql -c 'CREATE DATABASE iknow_view_models;'
|
29
|
-
|
30
|
-
notifications:
|
31
|
-
email: false
|
data/appveyor.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
---
|
2
|
-
version: "{build}"
|
3
|
-
image: ubuntu
|
4
|
-
|
5
|
-
stack:
|
6
|
-
- ruby 2.5.0, postgresql
|
7
|
-
|
8
|
-
build: off
|
9
|
-
|
10
|
-
install:
|
11
|
-
- sudo -u postgres createdb -O appveyor iknow_view_models
|
12
|
-
- sudo apt-get update
|
13
|
-
- sudo apt-get -y install postgresql-server-dev-10
|
14
|
-
- gem install bundler
|
15
|
-
- bundle install
|
16
|
-
|
17
|
-
before_test:
|
18
|
-
- ruby -v
|
19
|
-
- bundle -v
|
20
|
-
|
21
|
-
test_script:
|
22
|
-
- bundle exec rake
|