rspec-openapi 0.18.1 → 0.18.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20d994264ab34877708e7c467c98b31f1b672ee0d73b953f2791e404895eed58
4
- data.tar.gz: 6c319639b445a9178919a435a7816d0dfb5d8156c71d0fe1f929ab76d4733086
3
+ metadata.gz: 39da96c0f0b1650e0504d45a624be7905c9f47a2b128e992eecb5b05b828dd87
4
+ data.tar.gz: 5c6cb0fdaf3900ae93d0618c82b6762c8cf50002e7ac155c23a46b543f91d126
5
5
  SHA512:
6
- metadata.gz: c7526eb5af4a66264ad5874c9f3fb3c9dd964196a3d91d7e0739956443fc643646822038c90a707a9b9fb5e26bba9bccd5652973ef227f4c8dd961a440a4682e
7
- data.tar.gz: e3d71afaa32041ba31266832c51d4241e248cba2cb4b607adbd157b0164eedab4ef9d5e17ab89c7e196b52a64365aab584aa0dae1f5f0c0701f4dfde49f1f26c
6
+ metadata.gz: df87ce7e2b08623ec314330020d011ede771872a435f11b266be1f1c1a2e24c8329559b1f3e42b50a58a86c442c0afed2e98444694138823b9b17ebb94e54878
7
+ data.tar.gz: c89fb952a0d8fbc4c5ed814bd11513d2323f2c5237ad0a7b0e341e2522c329a331230b51ecab3bcf42a60dd4e5da090a337202dac37db3d4f68ab82ad7a9f91b
@@ -52,7 +52,7 @@ class << RSpec::OpenAPI::Extractors::Hanami = Object.new
52
52
  # @param [RSpec::Core::Example] example
53
53
  # @return Array
54
54
  def request_attributes(request, example)
55
- route = Hanami.app.router.recognize(request.path, method: request.method)
55
+ route = Hanami.app.router.recognize(Rack::MockRequest.env_for(request.path, method: request.method))
56
56
 
57
57
  return RSpec::OpenAPI::Extractors::Rack.request_attributes(request, example) unless route.routable?
58
58
 
@@ -66,7 +66,7 @@ class << RSpec::OpenAPI::Extractors::Hanami = Object.new
66
66
  deprecated = metadata[:deprecated]
67
67
  path = request.path
68
68
 
69
- raw_path_params = route.params.filter { |_key, value| RSpec::OpenAPI::Extractors.number_or_nil(value) }
69
+ raw_path_params = route.params
70
70
 
71
71
  result = InspectorAnalyzer.call(request.method, add_id(path, route))
72
72
 
@@ -92,8 +92,6 @@ class << RSpec::OpenAPI::Extractors::Hanami = Object.new
92
92
  return path if route.params.empty?
93
93
 
94
94
  route.params.each_pair do |key, value|
95
- next unless RSpec::OpenAPI::Extractors.number_or_nil(value)
96
-
97
95
  path = path.sub("/#{value}", "/:#{key}")
98
96
  end
99
97
 
@@ -104,8 +102,6 @@ class << RSpec::OpenAPI::Extractors::Hanami = Object.new
104
102
  return path if route.params.empty?
105
103
 
106
104
  route.params.each_pair do |key, value|
107
- next unless RSpec::OpenAPI::Extractors.number_or_nil(value)
108
-
109
105
  path = path.sub("/#{value}", "/{#{key}}")
110
106
  end
111
107
 
@@ -44,32 +44,23 @@ class << RSpec::OpenAPI::Extractors::Rails = Object.new
44
44
 
45
45
  # @param [ActionDispatch::Request] request
46
46
  def find_rails_route(request, app: Rails.application, path_prefix: '')
47
- app.routes.router.recognize(request) do |route, parameters|
47
+ app.routes.router.recognize(request) do |route, _parameters|
48
48
  path = route.path.spec.to_s.delete_suffix('(.:format)')
49
49
 
50
50
  if route.app.matches?(request)
51
51
  if route.app.engine?
52
52
  route, path = find_rails_route(request, app: route.app.app, path_prefix: path)
53
53
  next if route.nil?
54
- elsif path_prefix + path == add_id(request.path, parameters)
55
- return [route, path_prefix + path]
56
- else
57
- return [route, nil]
58
54
  end
55
+
56
+ # Params are empty when it is Engine or Rack app.
57
+ # In that case, we can't handle parameters in path.
58
+ return [route, nil] if request.params.empty?
59
+
59
60
  return [route, path_prefix + path]
60
61
  end
61
62
  end
62
63
 
63
64
  nil
64
65
  end
65
-
66
- def add_id(path, parameters)
67
- parameters.each_pair do |key, value|
68
- next unless RSpec::OpenAPI::Extractors.number_or_nil(value)
69
-
70
- path = path.sub("/#{value}", "/:#{key}")
71
- end
72
-
73
- path
74
- end
75
66
  end
@@ -2,11 +2,4 @@
2
2
 
3
3
  # Create namespace
4
4
  module RSpec::OpenAPI::Extractors
5
- # @param [String, Symbol] path_parameter
6
- # @return [Integer, nil]
7
- def self.number_or_nil(path_parameter)
8
- Integer(path_parameter.to_s || '')
9
- rescue ArgumentError
10
- nil
11
- end
12
5
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module OpenAPI
5
- VERSION = '0.18.1'
5
+ VERSION = '0.18.3'
6
6
  end
7
7
  end
data/lib/rspec/openapi.rb CHANGED
@@ -15,30 +15,17 @@ require 'rspec/openapi/shared_hooks'
15
15
  require 'rspec/openapi/extractors'
16
16
  require 'rspec/openapi/extractors/rack'
17
17
 
18
- if ENV['OPENAPI']
19
- DEBUG_ENABLED = ['', '1', 'true'].include?(ENV['DEBUG']&.downcase)
20
-
21
- begin
22
- require 'hanami'
23
- rescue LoadError
24
- warn 'Hanami not detected' if DEBUG_ENABLED
25
- else
26
- require 'rspec/openapi/extractors/hanami'
27
- end
18
+ module RSpec::OpenAPI
19
+ class Config
20
+ class << self
21
+ attr_accessor :debug_enabled
28
22
 
29
- begin
30
- require 'rails'
31
- rescue LoadError
32
- warn 'Rails not detected' if DEBUG_ENABLED
33
- else
34
- require 'rspec/openapi/extractors/rails'
23
+ def load_environment_settings
24
+ @debug_enabled = ['', '1', 'true'].include?(ENV['DEBUG']&.downcase)
25
+ end
26
+ end
35
27
  end
36
- end
37
28
 
38
- require 'rspec/openapi/minitest_hooks' if Object.const_defined?('Minitest')
39
- require 'rspec/openapi/rspec_hooks' if ENV['OPENAPI'] && Object.const_defined?('RSpec')
40
-
41
- module RSpec::OpenAPI
42
29
  @path = 'doc/openapi.yaml'
43
30
  @title = File.basename(Dir.pwd)
44
31
  @comment = nil
@@ -84,3 +71,26 @@ module RSpec::OpenAPI
84
71
  attr_reader :config_filename
85
72
  end
86
73
  end
74
+
75
+ if ENV['OPENAPI']
76
+ RSpec::OpenAPI::Config.load_environment_settings
77
+
78
+ begin
79
+ require 'hanami'
80
+ rescue LoadError
81
+ warn 'Hanami not detected' if RSpec::OpenAPI::Config.debug_enabled
82
+ else
83
+ require 'rspec/openapi/extractors/hanami'
84
+ end
85
+
86
+ begin
87
+ require 'rails'
88
+ rescue LoadError
89
+ warn 'Rails not detected' if RSpec::OpenAPI::Config.debug_enabled
90
+ else
91
+ require 'rspec/openapi/extractors/rails'
92
+ end
93
+ end
94
+
95
+ require 'rspec/openapi/minitest_hooks' if Object.const_defined?('Minitest')
96
+ require 'rspec/openapi/rspec_hooks' if ENV['OPENAPI'] && Object.const_defined?('RSpec')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-openapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.18.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-04-20 00:00:00.000000000 Z
12
+ date: 2024-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -109,7 +109,7 @@ licenses:
109
109
  metadata:
110
110
  homepage_uri: https://github.com/exoego/rspec-openapi
111
111
  source_code_uri: https://github.com/exoego/rspec-openapi
112
- changelog_uri: https://github.com/exoego/rspec-openapi/releases/tag/v0.18.1
112
+ changelog_uri: https://github.com/exoego/rspec-openapi/releases/tag/v0.18.3
113
113
  rubygems_mfa_required: 'true'
114
114
  post_install_message:
115
115
  rdoc_options: []