azeroth 0.6.3 → 0.7.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 (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