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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +6 -6
  3. data/.rubocop.yml +18 -0
  4. data/Appraisals +6 -6
  5. data/Gemfile +6 -2
  6. data/Rakefile +5 -5
  7. data/gemfiles/rails_5_2.gemfile +5 -5
  8. data/gemfiles/rails_6_0.gemfile +9 -0
  9. data/iknow_view_models.gemspec +40 -38
  10. data/lib/iknow_view_models.rb +9 -7
  11. data/lib/iknow_view_models/version.rb +1 -1
  12. data/lib/view_model.rb +31 -17
  13. data/lib/view_model/access_control.rb +5 -2
  14. data/lib/view_model/access_control/composed.rb +10 -9
  15. data/lib/view_model/access_control/open.rb +2 -0
  16. data/lib/view_model/access_control/read_only.rb +2 -0
  17. data/lib/view_model/access_control/tree.rb +11 -6
  18. data/lib/view_model/access_control_error.rb +4 -1
  19. data/lib/view_model/active_record.rb +13 -12
  20. data/lib/view_model/active_record/association_data.rb +3 -2
  21. data/lib/view_model/active_record/association_manipulation.rb +6 -4
  22. data/lib/view_model/active_record/cache.rb +114 -34
  23. data/lib/view_model/active_record/cache/cacheable_view.rb +2 -2
  24. data/lib/view_model/active_record/collection_nested_controller.rb +3 -3
  25. data/lib/view_model/active_record/controller.rb +68 -1
  26. data/lib/view_model/active_record/controller_base.rb +4 -1
  27. data/lib/view_model/active_record/nested_controller_base.rb +1 -0
  28. data/lib/view_model/active_record/update_context.rb +8 -6
  29. data/lib/view_model/active_record/update_data.rb +32 -30
  30. data/lib/view_model/active_record/update_operation.rb +17 -13
  31. data/lib/view_model/active_record/visitor.rb +0 -1
  32. data/lib/view_model/after_transaction_runner.rb +2 -2
  33. data/lib/view_model/callbacks.rb +3 -1
  34. data/lib/view_model/controller.rb +13 -3
  35. data/lib/view_model/deserialization_error.rb +15 -12
  36. data/lib/view_model/error.rb +12 -10
  37. data/lib/view_model/error_view.rb +3 -1
  38. data/lib/view_model/migratable_view.rb +78 -0
  39. data/lib/view_model/migration.rb +48 -0
  40. data/lib/view_model/migration/no_path_error.rb +26 -0
  41. data/lib/view_model/migration/one_way_error.rb +24 -0
  42. data/lib/view_model/migration/unspecified_version_error.rb +24 -0
  43. data/lib/view_model/migrator.rb +108 -0
  44. data/lib/view_model/record.rb +15 -14
  45. data/lib/view_model/reference.rb +3 -1
  46. data/lib/view_model/references.rb +8 -5
  47. data/lib/view_model/registry.rb +1 -1
  48. data/lib/view_model/schemas.rb +9 -4
  49. data/lib/view_model/serialization_error.rb +4 -1
  50. data/lib/view_model/serialize_context.rb +4 -4
  51. data/lib/view_model/test_helpers.rb +8 -3
  52. data/lib/view_model/test_helpers/arvm_builder.rb +21 -15
  53. data/lib/view_model/traversal_context.rb +2 -1
  54. data/nix/dependencies.nix +5 -0
  55. data/nix/gem/generate.rb +2 -1
  56. data/shell.nix +8 -3
  57. data/test/.rubocop.yml +14 -0
  58. data/test/helpers/arvm_test_models.rb +12 -9
  59. data/test/helpers/arvm_test_utilities.rb +5 -3
  60. data/test/helpers/controller_test_helpers.rb +55 -32
  61. data/test/helpers/match_enumerator.rb +1 -0
  62. data/test/helpers/query_logging.rb +2 -1
  63. data/test/helpers/test_access_control.rb +5 -3
  64. data/test/helpers/viewmodel_spec_helpers.rb +88 -22
  65. data/test/unit/view_model/access_control_test.rb +144 -144
  66. data/test/unit/view_model/active_record/alias_test.rb +15 -13
  67. data/test/unit/view_model/active_record/belongs_to_test.rb +40 -39
  68. data/test/unit/view_model/active_record/cache_test.rb +68 -31
  69. data/test/unit/view_model/active_record/cloner_test.rb +67 -63
  70. data/test/unit/view_model/active_record/controller_test.rb +113 -65
  71. data/test/unit/view_model/active_record/counter_test.rb +10 -9
  72. data/test/unit/view_model/active_record/customization_test.rb +59 -58
  73. data/test/unit/view_model/active_record/has_many_test.rb +112 -111
  74. data/test/unit/view_model/active_record/has_many_through_poly_test.rb +15 -14
  75. data/test/unit/view_model/active_record/has_many_through_test.rb +33 -38
  76. data/test/unit/view_model/active_record/has_one_test.rb +37 -36
  77. data/test/unit/view_model/active_record/migration_test.rb +161 -0
  78. data/test/unit/view_model/active_record/namespacing_test.rb +19 -17
  79. data/test/unit/view_model/active_record/poly_test.rb +44 -45
  80. data/test/unit/view_model/active_record/shared_test.rb +30 -28
  81. data/test/unit/view_model/active_record/version_test.rb +9 -7
  82. data/test/unit/view_model/active_record_test.rb +72 -72
  83. data/test/unit/view_model/callbacks_test.rb +19 -15
  84. data/test/unit/view_model/controller_test.rb +4 -2
  85. data/test/unit/view_model/record_test.rb +92 -97
  86. data/test/unit/view_model/traversal_context_test.rb +4 -5
  87. data/test/unit/view_model_test.rb +18 -16
  88. metadata +36 -12
  89. data/.travis.yml +0 -31
  90. data/appveyor.yml +0 -22
  91. 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.rb'
9
- require_relative '../../helpers/arvm_test_utilities.rb'
10
- require_relative '../../helpers/arvm_test_models.rb'
11
- require_relative '../../helpers/viewmodel_spec_helpers.rb'
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
- require "bundler/setup"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
2
4
  Bundler.require
3
5
 
4
- require "minitest/autorun"
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("a")
24
+ s = TestViewModel.new('a')
23
25
  assert_equal(TestViewModel.serialize_to_hash(s),
24
- { "name" => "a" })
26
+ { 'name' => 'a' })
25
27
  end
26
28
 
27
29
  def test_default_serialize
28
- s = DefaultViewModel.new("a", 1)
30
+ s = DefaultViewModel.new('a', 1)
29
31
  assert_equal(TestViewModel.serialize_to_hash(s),
30
- { "foo" => "a", "bar" => 1 })
32
+ { 'foo' => 'a', 'bar' => 1 })
31
33
  end
32
34
 
33
35
  def test_default_serialize_array
34
- s = DefaultViewModel.new("a", [1,2])
36
+ s = DefaultViewModel.new('a', [1, 2])
35
37
  assert_equal(TestViewModel.serialize_to_hash(s),
36
- { "foo" => "a", "bar" => [1,2] })
38
+ { 'foo' => 'a', 'bar' => [1, 2] })
37
39
  end
38
40
 
39
41
  def test_default_serialize_hash
40
- s = DefaultViewModel.new("a", { "x" => "y" })
42
+ s = DefaultViewModel.new('a', { 'x' => 'y' })
41
43
  assert_equal(DefaultViewModel.serialize_to_hash(s),
42
- { "foo" => "a", "bar" => { "x" => "y" } })
44
+ { 'foo' => 'a', 'bar' => { 'x' => 'y' } })
43
45
  end
44
46
 
45
47
  def test_default_serialize_empty_hash
46
- s = DefaultViewModel.new("a", {})
48
+ s = DefaultViewModel.new('a', {})
47
49
  assert_equal(DefaultViewModel.serialize_to_hash(s),
48
- { "foo" => "a", "bar" => {} })
50
+ { 'foo' => 'a', 'bar' => {} })
49
51
  end
50
52
 
51
53
  def test_default_serialize_viewmodel
52
- s = DefaultViewModel.new("a", DefaultViewModel.new(1, 2))
54
+ s = DefaultViewModel.new('a', DefaultViewModel.new(1, 2))
53
55
  assert_equal(DefaultViewModel.serialize_to_hash(s),
54
- { "foo" => "a", "bar" => { "foo" => 1, "bar" => 2 } })
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("a", [TestViewModel.new("x"), TestViewModel.new("y")])
60
+ s = DefaultViewModel.new('a', [TestViewModel.new('x'), TestViewModel.new('y')])
59
61
  assert_equal(DefaultViewModel.serialize_to_hash(s),
60
- { "foo" => "a", "bar" => [{"name" => "x"}, {"name" => "y"}] })
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.1.6
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-04-23 00:00:00.000000000 Z
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: safe_values
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: keyword_builder
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: oj
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.18'
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.18'
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
- - ".travis.yml"
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/rails_6_0_beta.gemfile
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
@@ -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
@@ -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
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "minitest-ci"
6
- gem "activerecord", "~> 6.0.0.beta"
7
- gem "activesupport", "~> 6.0.0.beta"
8
-
9
- gemspec path: "../"