power_api 1.0.0 → 2.0.0
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/CHANGELOG.md +5 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +93 -90
- data/README.md +329 -75
- data/app/helpers/power_api/application_helper.rb +57 -0
- data/bin/clean_test_app +2 -0
- data/lib/generators/power_api/controller/controller_generator.rb +27 -15
- data/lib/generators/power_api/exposed_api_config/USAGE +5 -0
- data/lib/generators/power_api/exposed_api_config/exposed_api_config_generator.rb +58 -0
- data/lib/generators/power_api/install/install_generator.rb +2 -44
- data/lib/generators/power_api/internal_api_config/USAGE +5 -0
- data/lib/generators/power_api/internal_api_config/internal_api_config_generator.rb +31 -0
- data/lib/generators/power_api/version/version_generator.rb +2 -2
- data/lib/power_api/engine.rb +8 -1
- data/lib/power_api/errors.rb +2 -0
- data/lib/power_api/generator_helper/active_record_resource.rb +10 -6
- data/lib/power_api/generator_helper/ams_helper.rb +5 -11
- data/lib/power_api/generator_helper/api_helper.rb +61 -0
- data/lib/power_api/generator_helper/controller_helper.rb +45 -15
- data/lib/power_api/generator_helper/routes_helper.rb +22 -7
- data/lib/power_api/generator_helper/rspec_controller_helper.rb +306 -0
- data/lib/power_api/generator_helper/swagger_helper.rb +14 -24
- data/lib/power_api/generator_helpers.rb +2 -1
- data/lib/power_api/version.rb +1 -1
- data/spec/dummy/app/controllers/api/base_controller.rb +2 -0
- data/spec/dummy/app/controllers/api/internal/base_controller.rb +5 -0
- data/spec/dummy/app/controllers/api/internal/blogs_controller.rb +36 -0
- data/spec/dummy/app/serializers/api/internal/blog_serializer.rb +12 -0
- data/spec/dummy/config/initializers/active_model_serializers.rb +1 -0
- data/spec/dummy/config/initializers/api_pagination.rb +32 -0
- data/spec/dummy/config/routes.rb +2 -7
- data/spec/dummy/spec/helpers/power_api/application_helper_spec.rb +171 -0
- data/spec/dummy/spec/lib/power_api/generator_helper/ams_helper_spec.rb +50 -12
- data/spec/dummy/spec/lib/power_api/generator_helper/api_helper_spec.rb +115 -0
- data/spec/dummy/spec/lib/power_api/generator_helper/controller_helper_spec.rb +126 -34
- data/spec/dummy/spec/lib/power_api/generator_helper/routes_helper_spec.rb +29 -5
- data/spec/dummy/spec/lib/power_api/generator_helper/rspec_controller_helper_spec.rb +559 -0
- data/spec/dummy/spec/lib/power_api/generator_helper/swagger_helper_spec.rb +10 -20
- data/spec/dummy/spec/support/shared_examples/active_record_resource_atrributes.rb +22 -3
- metadata +27 -5
- data/lib/power_api/generator_helper/version_helper.rb +0 -16
- data/spec/dummy/spec/lib/power_api/generator_helper/version_helper_spec.rb +0 -55
@@ -3,6 +3,7 @@ shared_examples 'ActiveRecord resource attributes' do |attributes_key|
|
|
3
3
|
describe "#resource_attributes" do
|
4
4
|
let(:expected_attributes) do
|
5
5
|
[
|
6
|
+
{ name: :id, type: :integer, swagger_type: :integer, example: kind_of(Integer), required: false },
|
6
7
|
{ name: :title, type: :string, swagger_type: :string, example: "'Some title'", required: true },
|
7
8
|
{ name: :body, type: :text, swagger_type: :string, example: "'Some body'", required: true },
|
8
9
|
{ name: :created_at, type: :datetime, swagger_type: :string, example: "'1984-06-04 09:00'", required: false },
|
@@ -21,27 +22,30 @@ shared_examples 'ActiveRecord resource attributes' do |attributes_key|
|
|
21
22
|
let(attributes_key) { %w{title body} }
|
22
23
|
let(:expected_attributes) do
|
23
24
|
[
|
25
|
+
{ name: :id, type: :integer, swagger_type: :integer, example: kind_of(Integer), required: false },
|
24
26
|
{ name: :title, type: :string, swagger_type: :string, example: "'Some title'", required: true },
|
25
27
|
{ name: :body, type: :text, swagger_type: :string, example: "'Some body'", required: true }
|
26
28
|
]
|
27
29
|
end
|
28
30
|
|
29
|
-
it { expect(perform).to
|
31
|
+
it { expect(perform).to match(expected_attributes) }
|
30
32
|
end
|
31
33
|
|
32
34
|
context "with attributes not present in model" do
|
33
35
|
let(attributes_key) { %w{title bloody} }
|
34
36
|
let(:expected_attributes) do
|
35
37
|
[
|
38
|
+
{ name: :id, type: :integer, swagger_type: :integer, example: kind_of(Integer), required: false },
|
36
39
|
{ name: :title, type: :string, swagger_type: :string, example: "'Some title'", required: true }
|
37
40
|
]
|
38
41
|
end
|
39
42
|
|
40
|
-
it { expect(perform).to
|
43
|
+
it { expect(perform).to match(expected_attributes) }
|
41
44
|
end
|
42
45
|
end
|
43
46
|
|
44
47
|
describe "#required_resource_attributes" do
|
48
|
+
let(:include_id) { false }
|
45
49
|
let(:expected_attributes) do
|
46
50
|
[
|
47
51
|
{ name: :title, type: :string, swagger_type: :string, example: "'Some title'", required: true },
|
@@ -50,10 +54,23 @@ shared_examples 'ActiveRecord resource attributes' do |attributes_key|
|
|
50
54
|
end
|
51
55
|
|
52
56
|
def perform
|
53
|
-
resource.required_resource_attributes
|
57
|
+
resource.required_resource_attributes(include_id: include_id)
|
54
58
|
end
|
55
59
|
|
56
60
|
it { expect(perform).to eq(expected_attributes) }
|
61
|
+
|
62
|
+
context "with included id" do
|
63
|
+
let(:include_id) { true }
|
64
|
+
let(:expected_attributes) do
|
65
|
+
[
|
66
|
+
{ name: :id, type: :integer, swagger_type: :integer, example: kind_of(Integer), required: false },
|
67
|
+
{ name: :title, type: :string, swagger_type: :string, example: "'Some title'", required: true },
|
68
|
+
{ name: :body, type: :text, swagger_type: :string, example: "'Some body'", required: true }
|
69
|
+
]
|
70
|
+
end
|
71
|
+
|
72
|
+
it { expect(perform).to match(expected_attributes) }
|
73
|
+
end
|
57
74
|
end
|
58
75
|
|
59
76
|
describe "#required_attributes_names" do
|
@@ -88,6 +105,7 @@ shared_examples 'ActiveRecord resource attributes' do |attributes_key|
|
|
88
105
|
describe "#attributes_names" do
|
89
106
|
let(:expected_attributes) do
|
90
107
|
[
|
108
|
+
:id,
|
91
109
|
:title,
|
92
110
|
:body,
|
93
111
|
:created_at,
|
@@ -138,6 +156,7 @@ shared_examples 'ActiveRecord resource attributes' do |attributes_key|
|
|
138
156
|
describe "#attributes_symbols_text_list" do
|
139
157
|
let(:expected_result) do
|
140
158
|
<<~ATTRS
|
159
|
+
:id,
|
141
160
|
:title,
|
142
161
|
:body,
|
143
162
|
:created_at,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Platanus
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -342,12 +342,17 @@ files:
|
|
342
342
|
- app/models/power_api/application_record.rb
|
343
343
|
- app/responders/api_responder.rb
|
344
344
|
- app/views/layouts/power_api/application.html.erb
|
345
|
+
- bin/clean_test_app
|
345
346
|
- bin/rails
|
346
347
|
- config/routes.rb
|
347
348
|
- lib/generators/power_api/controller/USAGE
|
348
349
|
- lib/generators/power_api/controller/controller_generator.rb
|
350
|
+
- lib/generators/power_api/exposed_api_config/USAGE
|
351
|
+
- lib/generators/power_api/exposed_api_config/exposed_api_config_generator.rb
|
349
352
|
- lib/generators/power_api/install/USAGE
|
350
353
|
- lib/generators/power_api/install/install_generator.rb
|
354
|
+
- lib/generators/power_api/internal_api_config/USAGE
|
355
|
+
- lib/generators/power_api/internal_api_config/internal_api_config_generator.rb
|
351
356
|
- lib/generators/power_api/version/USAGE
|
352
357
|
- lib/generators/power_api/version/version_generator.rb
|
353
358
|
- lib/power_api.rb
|
@@ -355,16 +360,17 @@ files:
|
|
355
360
|
- lib/power_api/errors.rb
|
356
361
|
- lib/power_api/generator_helper/active_record_resource.rb
|
357
362
|
- lib/power_api/generator_helper/ams_helper.rb
|
363
|
+
- lib/power_api/generator_helper/api_helper.rb
|
358
364
|
- lib/power_api/generator_helper/controller_actions_helper.rb
|
359
365
|
- lib/power_api/generator_helper/controller_helper.rb
|
360
366
|
- lib/power_api/generator_helper/pagination_helper.rb
|
361
367
|
- lib/power_api/generator_helper/resource_helper.rb
|
362
368
|
- lib/power_api/generator_helper/routes_helper.rb
|
369
|
+
- lib/power_api/generator_helper/rspec_controller_helper.rb
|
363
370
|
- lib/power_api/generator_helper/rubocop_helper.rb
|
364
371
|
- lib/power_api/generator_helper/simple_token_auth_helper.rb
|
365
372
|
- lib/power_api/generator_helper/swagger_helper.rb
|
366
373
|
- lib/power_api/generator_helper/template_builder_helper.rb
|
367
|
-
- lib/power_api/generator_helper/version_helper.rb
|
368
374
|
- lib/power_api/generator_helpers.rb
|
369
375
|
- lib/power_api/version.rb
|
370
376
|
- lib/tasks/power_api_tasks.rake
|
@@ -374,6 +380,9 @@ files:
|
|
374
380
|
- spec/dummy/app/assets/stylesheets/application.css
|
375
381
|
- spec/dummy/app/channels/application_cable/channel.rb
|
376
382
|
- spec/dummy/app/channels/application_cable/connection.rb
|
383
|
+
- spec/dummy/app/controllers/api/base_controller.rb
|
384
|
+
- spec/dummy/app/controllers/api/internal/base_controller.rb
|
385
|
+
- spec/dummy/app/controllers/api/internal/blogs_controller.rb
|
377
386
|
- spec/dummy/app/controllers/application_controller.rb
|
378
387
|
- spec/dummy/app/controllers/concerns/api/deprecated_spec.rb
|
379
388
|
- spec/dummy/app/controllers/concerns/api/error_spec.rb
|
@@ -386,6 +395,7 @@ files:
|
|
386
395
|
- spec/dummy/app/models/blog.rb
|
387
396
|
- spec/dummy/app/models/portfolio.rb
|
388
397
|
- spec/dummy/app/models/user.rb
|
398
|
+
- spec/dummy/app/serializers/api/internal/blog_serializer.rb
|
389
399
|
- spec/dummy/app/views/layouts/application.html.erb
|
390
400
|
- spec/dummy/app/views/layouts/mailer.html.erb
|
391
401
|
- spec/dummy/app/views/layouts/mailer.text.erb
|
@@ -401,6 +411,8 @@ files:
|
|
401
411
|
- spec/dummy/config/environments/development.rb
|
402
412
|
- spec/dummy/config/environments/production.rb
|
403
413
|
- spec/dummy/config/environments/test.rb
|
414
|
+
- spec/dummy/config/initializers/active_model_serializers.rb
|
415
|
+
- spec/dummy/config/initializers/api_pagination.rb
|
404
416
|
- spec/dummy/config/initializers/application_controller_renderer.rb
|
405
417
|
- spec/dummy/config/initializers/assets.rb
|
406
418
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
@@ -432,15 +444,17 @@ files:
|
|
432
444
|
- spec/dummy/spec/factories/blogs.rb
|
433
445
|
- spec/dummy/spec/factories/portfolios.rb
|
434
446
|
- spec/dummy/spec/factories/users.rb
|
447
|
+
- spec/dummy/spec/helpers/power_api/application_helper_spec.rb
|
435
448
|
- spec/dummy/spec/lib/power_api/generator_helper/ams_helper_spec.rb
|
449
|
+
- spec/dummy/spec/lib/power_api/generator_helper/api_helper_spec.rb
|
436
450
|
- spec/dummy/spec/lib/power_api/generator_helper/controller_actions_helper_spec.rb
|
437
451
|
- spec/dummy/spec/lib/power_api/generator_helper/controller_helper_spec.rb
|
438
452
|
- spec/dummy/spec/lib/power_api/generator_helper/pagination_helper_spec.rb
|
439
453
|
- spec/dummy/spec/lib/power_api/generator_helper/resource_helper_spec.rb
|
440
454
|
- spec/dummy/spec/lib/power_api/generator_helper/routes_helper_spec.rb
|
455
|
+
- spec/dummy/spec/lib/power_api/generator_helper/rspec_controller_helper_spec.rb
|
441
456
|
- spec/dummy/spec/lib/power_api/generator_helper/simple_token_auth_helper_spec.rb
|
442
457
|
- spec/dummy/spec/lib/power_api/generator_helper/swagger_helper_spec.rb
|
443
|
-
- spec/dummy/spec/lib/power_api/generator_helper/version_helper_spec.rb
|
444
458
|
- spec/dummy/spec/support/shared_examples/active_record_resource.rb
|
445
459
|
- spec/dummy/spec/support/shared_examples/active_record_resource_atrributes.rb
|
446
460
|
- spec/dummy/spec/support/test_generator_helpers.rb
|
@@ -476,6 +490,9 @@ test_files:
|
|
476
490
|
- spec/dummy/app/assets/stylesheets/application.css
|
477
491
|
- spec/dummy/app/channels/application_cable/channel.rb
|
478
492
|
- spec/dummy/app/channels/application_cable/connection.rb
|
493
|
+
- spec/dummy/app/controllers/api/base_controller.rb
|
494
|
+
- spec/dummy/app/controllers/api/internal/base_controller.rb
|
495
|
+
- spec/dummy/app/controllers/api/internal/blogs_controller.rb
|
479
496
|
- spec/dummy/app/controllers/application_controller.rb
|
480
497
|
- spec/dummy/app/controllers/concerns/api/deprecated_spec.rb
|
481
498
|
- spec/dummy/app/controllers/concerns/api/error_spec.rb
|
@@ -488,6 +505,7 @@ test_files:
|
|
488
505
|
- spec/dummy/app/models/blog.rb
|
489
506
|
- spec/dummy/app/models/portfolio.rb
|
490
507
|
- spec/dummy/app/models/user.rb
|
508
|
+
- spec/dummy/app/serializers/api/internal/blog_serializer.rb
|
491
509
|
- spec/dummy/app/views/layouts/application.html.erb
|
492
510
|
- spec/dummy/app/views/layouts/mailer.html.erb
|
493
511
|
- spec/dummy/app/views/layouts/mailer.text.erb
|
@@ -503,6 +521,8 @@ test_files:
|
|
503
521
|
- spec/dummy/config/environments/development.rb
|
504
522
|
- spec/dummy/config/environments/production.rb
|
505
523
|
- spec/dummy/config/environments/test.rb
|
524
|
+
- spec/dummy/config/initializers/active_model_serializers.rb
|
525
|
+
- spec/dummy/config/initializers/api_pagination.rb
|
506
526
|
- spec/dummy/config/initializers/application_controller_renderer.rb
|
507
527
|
- spec/dummy/config/initializers/assets.rb
|
508
528
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
@@ -534,15 +554,17 @@ test_files:
|
|
534
554
|
- spec/dummy/spec/factories/blogs.rb
|
535
555
|
- spec/dummy/spec/factories/portfolios.rb
|
536
556
|
- spec/dummy/spec/factories/users.rb
|
557
|
+
- spec/dummy/spec/helpers/power_api/application_helper_spec.rb
|
537
558
|
- spec/dummy/spec/lib/power_api/generator_helper/ams_helper_spec.rb
|
559
|
+
- spec/dummy/spec/lib/power_api/generator_helper/api_helper_spec.rb
|
538
560
|
- spec/dummy/spec/lib/power_api/generator_helper/controller_actions_helper_spec.rb
|
539
561
|
- spec/dummy/spec/lib/power_api/generator_helper/controller_helper_spec.rb
|
540
562
|
- spec/dummy/spec/lib/power_api/generator_helper/pagination_helper_spec.rb
|
541
563
|
- spec/dummy/spec/lib/power_api/generator_helper/resource_helper_spec.rb
|
542
564
|
- spec/dummy/spec/lib/power_api/generator_helper/routes_helper_spec.rb
|
565
|
+
- spec/dummy/spec/lib/power_api/generator_helper/rspec_controller_helper_spec.rb
|
543
566
|
- spec/dummy/spec/lib/power_api/generator_helper/simple_token_auth_helper_spec.rb
|
544
567
|
- spec/dummy/spec/lib/power_api/generator_helper/swagger_helper_spec.rb
|
545
|
-
- spec/dummy/spec/lib/power_api/generator_helper/version_helper_spec.rb
|
546
568
|
- spec/dummy/spec/support/shared_examples/active_record_resource.rb
|
547
569
|
- spec/dummy/spec/support/shared_examples/active_record_resource_atrributes.rb
|
548
570
|
- spec/dummy/spec/support/test_generator_helpers.rb
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module PowerApi::GeneratorHelper::VersionHelper
|
2
|
-
extend ActiveSupport::Concern
|
3
|
-
|
4
|
-
included do
|
5
|
-
attr_reader :version_number
|
6
|
-
end
|
7
|
-
|
8
|
-
def version_number=(value)
|
9
|
-
@version_number = value.to_s.to_i
|
10
|
-
raise PowerApi::GeneratorError.new("invalid version number") if version_number < 1
|
11
|
-
end
|
12
|
-
|
13
|
-
def first_version?
|
14
|
-
version_number.to_i == 1
|
15
|
-
end
|
16
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
RSpec.describe PowerApi::GeneratorHelper::VersionHelper, type: :generator do
|
2
|
-
describe "#version_number" do
|
3
|
-
def perform
|
4
|
-
generators_helper.version_number
|
5
|
-
end
|
6
|
-
|
7
|
-
it { expect(perform).to eq(1) }
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "version_number=" do
|
11
|
-
context "with invalid version number" do
|
12
|
-
let(:version_number) { "A" }
|
13
|
-
|
14
|
-
it { expect { generators_helper }.to raise_error("invalid version number") }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "with zero version number" do
|
18
|
-
let(:version_number) { 0 }
|
19
|
-
|
20
|
-
it { expect { generators_helper }.to raise_error("invalid version number") }
|
21
|
-
end
|
22
|
-
|
23
|
-
context "with nil version number" do
|
24
|
-
let(:version_number) { nil }
|
25
|
-
|
26
|
-
it { expect { generators_helper }.to raise_error("invalid version number") }
|
27
|
-
end
|
28
|
-
|
29
|
-
context "with nil blank number" do
|
30
|
-
let(:version_number) { "" }
|
31
|
-
|
32
|
-
it { expect { generators_helper }.to raise_error("invalid version number") }
|
33
|
-
end
|
34
|
-
|
35
|
-
context "with negative version number" do
|
36
|
-
let(:version_number) { -1 }
|
37
|
-
|
38
|
-
it { expect { generators_helper }.to raise_error("invalid version number") }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe "#first_version?" do
|
43
|
-
def perform
|
44
|
-
generators_helper.first_version?
|
45
|
-
end
|
46
|
-
|
47
|
-
it { expect(perform).to eq(true) }
|
48
|
-
|
49
|
-
context "when version in not first version" do
|
50
|
-
let(:version_number) { "2" }
|
51
|
-
|
52
|
-
it { expect(perform).to eq(false) }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|