iknow_view_models 3.1.6 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
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: "../"