azeroth 0.6.3 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +37 -2
  3. data/.rubocop.yml +11 -0
  4. data/Dockerfile +2 -2
  5. data/README.md +164 -1
  6. data/azeroth.gemspec +6 -5
  7. data/lib/azeroth.rb +1 -0
  8. data/lib/azeroth/decorator.rb +123 -0
  9. data/lib/azeroth/decorator/key_value_extractor.rb +2 -2
  10. data/lib/azeroth/decorator/options.rb +3 -3
  11. data/lib/azeroth/model.rb +3 -1
  12. data/lib/azeroth/options.rb +38 -1
  13. data/lib/azeroth/request_handler.rb +39 -2
  14. data/lib/azeroth/request_handler/create.rb +31 -5
  15. data/lib/azeroth/request_handler/update.rb +3 -3
  16. data/lib/azeroth/resourceable.rb +27 -0
  17. data/lib/azeroth/resourceable/class_methods.rb +120 -6
  18. data/lib/azeroth/routes_builder.rb +2 -1
  19. data/lib/azeroth/version.rb +1 -1
  20. data/spec/controllers/pokemon_masters_controller_spec.rb +56 -0
  21. data/spec/controllers/pokemons_controller_spec.rb +56 -0
  22. data/spec/dummy/app/controllers/games_controller.rb +22 -0
  23. data/spec/dummy/app/controllers/pokemon_masters_controller.rb +9 -0
  24. data/spec/dummy/app/controllers/pokemons_controller.rb +27 -0
  25. data/spec/dummy/app/controllers/publishers_controller.rb +8 -0
  26. data/spec/dummy/app/models/game.rb +5 -0
  27. data/spec/dummy/app/models/game/decorator.rb +9 -0
  28. data/spec/dummy/app/models/name_decorator.rb +5 -0
  29. data/spec/dummy/app/models/pokemon.rb +8 -0
  30. data/spec/dummy/app/models/pokemon/decorator.rb +16 -0
  31. data/spec/dummy/app/models/pokemon/favorite_decorator.rb +7 -0
  32. data/spec/dummy/app/models/pokemon_master.rb +7 -0
  33. data/spec/dummy/app/models/pokemon_master/decorator.rb +17 -0
  34. data/spec/dummy/app/models/publisher.rb +5 -0
  35. data/spec/dummy/config/routes.rb +8 -0
  36. data/spec/dummy/db/schema.rb +26 -0
  37. data/spec/integration/readme/azeroth/decorator_spec.rb +48 -0
  38. data/spec/integration/readme/controllers/games_controller_spec.rb +42 -0
  39. data/spec/integration/yard/azeroth/decorator_spec.rb +58 -17
  40. data/spec/integration/yard/controllers/games_controller_spec.rb +42 -0
  41. data/spec/lib/azeroth/decorator/key_value_extractor_spec.rb +32 -0
  42. data/spec/lib/azeroth/decorator_spec.rb +28 -2
  43. data/spec/lib/azeroth/request_handler/create_spec.rb +166 -0
  44. data/spec/lib/azeroth/request_handler/update_spec.rb +91 -0
  45. data/spec/lib/azeroth/request_handler_spec.rb +3 -1
  46. data/spec/support/app/controllers/request_handler_controller.rb +12 -1
  47. data/spec/support/factories/game.rb +8 -0
  48. data/spec/support/factories/pokemon.rb +8 -0
  49. data/spec/support/factories/pokemon_master.rb +9 -0
  50. data/spec/support/factories/publisher.rb +7 -0
  51. data/spec/support/shared_examples/request_handler.rb +5 -2
  52. metadata +70 -12
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :pokemon, class: '::Pokemon' do
5
+ name { 'Bulbasaur' }
6
+ pokemon_master
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :pokemon_master, class: '::PokemonMaster' do
5
+ sequence(:first_name) { |n| "Ash-#{n}" }
6
+ sequence(:last_name) { |n| "Ketchum-#{n}" }
7
+ age { 10 }
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :publisher, class: '::Publisher' do
5
+ sequence(:name) { |n| "Publisher #{n}" }
6
+ end
7
+ end
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  shared_examples 'a request handler' do |status: :ok|
4
- subject(:handler) { described_class.new(controller, model) }
4
+ subject(:handler) do
5
+ described_class.new(controller, model, options)
6
+ end
5
7
 
6
8
  let(:controller) { controller_class.new }
7
9
  let(:params) { ActionController::Parameters.new(parameters) }
8
10
  let(:model) { Azeroth::Model.new(:document, options) }
9
- let(:options) { Azeroth::Options.new }
11
+ let(:options) { Azeroth::Options.new(options_hash) }
12
+ let(:options_hash) { {} }
10
13
  let(:extra_params) { {} }
11
14
 
12
15
  let(:decorator) { Document::Decorator.new(expected_resource) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azeroth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darthjee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-05 00:00:00.000000000 Z
11
+ date: 2020-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.0
19
+ version: 5.2.4.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.2.0
26
+ version: 5.2.4.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: darthjee-active_ext
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,48 +38,62 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.3.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: jace
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: sinclair
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 1.6.4
61
+ version: 1.6.5
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 1.6.4
68
+ version: 1.6.5
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: actionpack
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - '='
60
74
  - !ruby/object:Gem::Version
61
- version: 5.2.4.2
75
+ version: 5.2.4.3
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - '='
67
81
  - !ruby/object:Gem::Version
68
- version: 5.2.4.2
82
+ version: 5.2.4.3
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: activerecord
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - '='
74
88
  - !ruby/object:Gem::Version
75
- version: 5.2.4.2
89
+ version: 5.2.4.3
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - '='
81
95
  - !ruby/object:Gem::Version
82
- version: 5.2.4.2
96
+ version: 5.2.4.3
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +170,14 @@ dependencies:
156
170
  requirements:
157
171
  - - '='
158
172
  - !ruby/object:Gem::Version
159
- version: 5.2.4.2
173
+ version: 5.2.4.3
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - '='
165
179
  - !ruby/object:Gem::Version
166
- version: 5.2.4.2
180
+ version: 5.2.4.3
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rails-controller-testing
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -438,6 +452,8 @@ files:
438
452
  - spec/controllers/documents_controller_spec.rb
439
453
  - spec/controllers/documents_with_error_controller_spec.rb
440
454
  - spec/controllers/index_documents_controller_spec.rb
455
+ - spec/controllers/pokemon_masters_controller_spec.rb
456
+ - spec/controllers/pokemons_controller_spec.rb
441
457
  - spec/dummy/.ruby-version
442
458
  - spec/dummy/Rakefile
443
459
  - spec/dummy/app/assets/config/manifest.js
@@ -452,7 +468,11 @@ files:
452
468
  - spec/dummy/app/controllers/concerns/.keep
453
469
  - spec/dummy/app/controllers/documents_controller.rb
454
470
  - spec/dummy/app/controllers/documents_with_error_controller.rb
471
+ - spec/dummy/app/controllers/games_controller.rb
455
472
  - spec/dummy/app/controllers/index_documents_controller.rb
473
+ - spec/dummy/app/controllers/pokemon_masters_controller.rb
474
+ - spec/dummy/app/controllers/pokemons_controller.rb
475
+ - spec/dummy/app/controllers/publishers_controller.rb
456
476
  - spec/dummy/app/helpers/application_helper.rb
457
477
  - spec/dummy/app/jobs/application_job.rb
458
478
  - spec/dummy/app/mailers/application_mailer.rb
@@ -465,10 +485,19 @@ files:
465
485
  - spec/dummy/app/models/dummy_model/decorator.rb
466
486
  - spec/dummy/app/models/factory.rb
467
487
  - spec/dummy/app/models/factory/decorator_with_product.rb
488
+ - spec/dummy/app/models/game.rb
489
+ - spec/dummy/app/models/game/decorator.rb
468
490
  - spec/dummy/app/models/id_decorator.rb
491
+ - spec/dummy/app/models/name_decorator.rb
492
+ - spec/dummy/app/models/pokemon.rb
493
+ - spec/dummy/app/models/pokemon/decorator.rb
494
+ - spec/dummy/app/models/pokemon/favorite_decorator.rb
495
+ - spec/dummy/app/models/pokemon_master.rb
496
+ - spec/dummy/app/models/pokemon_master/decorator.rb
469
497
  - spec/dummy/app/models/product.rb
470
498
  - spec/dummy/app/models/product/decorator.rb
471
499
  - spec/dummy/app/models/product/decorator_with_factory.rb
500
+ - spec/dummy/app/models/publisher.rb
472
501
  - spec/dummy/app/models/user.rb
473
502
  - spec/dummy/app/views/documents/edit.html
474
503
  - spec/dummy/app/views/documents/index.html
@@ -519,7 +548,10 @@ files:
519
548
  - spec/dummy/storage/.keep
520
549
  - spec/dummy/tmp/.keep
521
550
  - spec/dummy/tmp/storage/.keep
551
+ - spec/integration/readme/azeroth/decorator_spec.rb
552
+ - spec/integration/readme/controllers/games_controller_spec.rb
522
553
  - spec/integration/yard/azeroth/decorator_spec.rb
554
+ - spec/integration/yard/controllers/games_controller_spec.rb
523
555
  - spec/lib/azeroth/decorator/hash_builder_spec.rb
524
556
  - spec/lib/azeroth/decorator/key_value_extractor_spec.rb
525
557
  - spec/lib/azeroth/decorator_spec.rb
@@ -545,7 +577,11 @@ files:
545
577
  - spec/support/factories/document.rb
546
578
  - spec/support/factories/dummy_model.rb
547
579
  - spec/support/factories/factory.rb
580
+ - spec/support/factories/game.rb
581
+ - spec/support/factories/pokemon.rb
582
+ - spec/support/factories/pokemon_master.rb
548
583
  - spec/support/factories/product.rb
584
+ - spec/support/factories/publisher.rb
549
585
  - spec/support/factories/user.rb
550
586
  - spec/support/factory_bot.rb
551
587
  - spec/support/matchers/add_method.rb
@@ -577,6 +613,8 @@ test_files:
577
613
  - spec/controllers/documents_controller_spec.rb
578
614
  - spec/controllers/documents_with_error_controller_spec.rb
579
615
  - spec/controllers/index_documents_controller_spec.rb
616
+ - spec/controllers/pokemon_masters_controller_spec.rb
617
+ - spec/controllers/pokemons_controller_spec.rb
580
618
  - spec/dummy/.ruby-version
581
619
  - spec/dummy/Rakefile
582
620
  - spec/dummy/app/assets/config/manifest.js
@@ -591,7 +629,11 @@ test_files:
591
629
  - spec/dummy/app/controllers/concerns/.keep
592
630
  - spec/dummy/app/controllers/documents_controller.rb
593
631
  - spec/dummy/app/controllers/documents_with_error_controller.rb
632
+ - spec/dummy/app/controllers/games_controller.rb
594
633
  - spec/dummy/app/controllers/index_documents_controller.rb
634
+ - spec/dummy/app/controllers/pokemon_masters_controller.rb
635
+ - spec/dummy/app/controllers/pokemons_controller.rb
636
+ - spec/dummy/app/controllers/publishers_controller.rb
595
637
  - spec/dummy/app/helpers/application_helper.rb
596
638
  - spec/dummy/app/jobs/application_job.rb
597
639
  - spec/dummy/app/mailers/application_mailer.rb
@@ -604,10 +646,19 @@ test_files:
604
646
  - spec/dummy/app/models/dummy_model/decorator.rb
605
647
  - spec/dummy/app/models/factory.rb
606
648
  - spec/dummy/app/models/factory/decorator_with_product.rb
649
+ - spec/dummy/app/models/game.rb
650
+ - spec/dummy/app/models/game/decorator.rb
607
651
  - spec/dummy/app/models/id_decorator.rb
652
+ - spec/dummy/app/models/name_decorator.rb
653
+ - spec/dummy/app/models/pokemon.rb
654
+ - spec/dummy/app/models/pokemon/decorator.rb
655
+ - spec/dummy/app/models/pokemon/favorite_decorator.rb
656
+ - spec/dummy/app/models/pokemon_master.rb
657
+ - spec/dummy/app/models/pokemon_master/decorator.rb
608
658
  - spec/dummy/app/models/product.rb
609
659
  - spec/dummy/app/models/product/decorator.rb
610
660
  - spec/dummy/app/models/product/decorator_with_factory.rb
661
+ - spec/dummy/app/models/publisher.rb
611
662
  - spec/dummy/app/models/user.rb
612
663
  - spec/dummy/app/views/documents/edit.html
613
664
  - spec/dummy/app/views/documents/index.html
@@ -658,7 +709,10 @@ test_files:
658
709
  - spec/dummy/storage/.keep
659
710
  - spec/dummy/tmp/.keep
660
711
  - spec/dummy/tmp/storage/.keep
712
+ - spec/integration/readme/azeroth/decorator_spec.rb
713
+ - spec/integration/readme/controllers/games_controller_spec.rb
661
714
  - spec/integration/yard/azeroth/decorator_spec.rb
715
+ - spec/integration/yard/controllers/games_controller_spec.rb
662
716
  - spec/lib/azeroth/decorator/hash_builder_spec.rb
663
717
  - spec/lib/azeroth/decorator/key_value_extractor_spec.rb
664
718
  - spec/lib/azeroth/decorator_spec.rb
@@ -684,7 +738,11 @@ test_files:
684
738
  - spec/support/factories/document.rb
685
739
  - spec/support/factories/dummy_model.rb
686
740
  - spec/support/factories/factory.rb
741
+ - spec/support/factories/game.rb
742
+ - spec/support/factories/pokemon.rb
743
+ - spec/support/factories/pokemon_master.rb
687
744
  - spec/support/factories/product.rb
745
+ - spec/support/factories/publisher.rb
688
746
  - spec/support/factories/user.rb
689
747
  - spec/support/factory_bot.rb
690
748
  - spec/support/matchers/add_method.rb