rspec-openapi 0.3.5 → 0.3.10

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: d7134b7b05a91d447b6a52af56ee417e6f0c045d73526f171d9792d2301d40db
4
- data.tar.gz: 8eeea5674f4e54c7ec53c1275f51b4dc47876438c64ee658db19cdbb6abc4489
3
+ metadata.gz: 62ae9fb333bba34df56a7675823e22ae9029852028d529ffae48ee9070eadeb0
4
+ data.tar.gz: 249959214fbce6ae72294f07e1a7de945c1052071d67942ec7f19c68cbe90a9f
5
5
  SHA512:
6
- metadata.gz: 62b2b1e562954829ba607fa1f6713aa683fd508dde975198aa0c17c3dd7ad5db0e4d7e57aa80d6ca5a9d758a56d274128434eddc3f0dc9ac090117f80861bd7a
7
- data.tar.gz: 354bb226fa980dac17d7a67d66404aad653c5fc4dd26b985fbd335152063b67716d2573e699835c5bce10d929fad08ea28a5f4545186b5b6ce17dbf13ffe01f0
6
+ metadata.gz: 8f66917401fc326b7a290892000ef82af637d959fd337ab158152176605fa5e41a8ce2e904b7c1d73cef203d1b3851912bcff0d58f5e879d27fc728f456d1569
7
+ data.tar.gz: abf3aee3cd216b58d53079c53372a3839c3cc89470d5a0500274fde35a3103643d8c6a3555b977989bc598f4f71e0518300cec76372dce1a8ff4bb41615a0113
@@ -1,3 +1,26 @@
1
+ ## v0.3.10
2
+
3
+ * Add `info.version`
4
+ [#16](https://github.com/k0kubun/rspec-openapi/pull/16)
5
+
6
+ ## v0.3.9
7
+
8
+ * Initial support for multipart/form-data
9
+ [#12](https://github.com/k0kubun/rspec-openapi/pull/12)
10
+
11
+ ## v0.3.8
12
+
13
+ * Generate `type: 'number', format: 'float'` instead of `type: 'float'` for Float
14
+ [#11](https://github.com/k0kubun/rspec-openapi/issues/11)
15
+
16
+ ## v0.3.7
17
+
18
+ * Classify tag names and remove controller names from summary in Rails
19
+
20
+ ## v0.3.6
21
+
22
+ * Fix documents generated by Rails engines
23
+
1
24
  ## v0.3.5
2
25
 
3
26
  * Support finding routes in Rails engines
data/README.md CHANGED
@@ -64,9 +64,9 @@ info:
64
64
  paths:
65
65
  "/tables":
66
66
  get:
67
- summary: 'tables #index'
67
+ summary: index
68
68
  tags:
69
- - tables
69
+ - Table
70
70
  parameters:
71
71
  - name: page
72
72
  in: query
@@ -111,6 +111,9 @@ RSpec::OpenAPI.path = 'doc/schema.yaml'
111
111
  # Disable generating `example`
112
112
  RSpec::OpenAPI.enable_example = false
113
113
 
114
+ # Change `info.version`
115
+ RSpec::OpenAPI.application_version = '1.0.0'
116
+
114
117
  # Generate a comment on top of a schema file
115
118
  RSpec::OpenAPI.comment = <<~EOS
116
119
  This file is auto-generated by rspec-openapi https://github.com/k0kubun/rspec-openapi
@@ -6,8 +6,9 @@ module RSpec::OpenAPI
6
6
  @comment = nil
7
7
  @enable_example = true
8
8
  @description_builder = -> (example) { example.description }
9
+ @application_version = '1.0.0'
9
10
 
10
11
  class << self
11
- attr_accessor :path, :comment, :enable_example, :description_builder
12
+ attr_accessor :path, :comment, :enable_example, :description_builder, :application_version
12
13
  end
13
14
  end
@@ -4,6 +4,7 @@ class << RSpec::OpenAPI::DefaultSchema = Object.new
4
4
  openapi: '3.0.3',
5
5
  info: {
6
6
  title: title,
7
+ version: RSpec::OpenAPI.application_version,
7
8
  },
8
9
  paths: {},
9
10
  }.freeze
@@ -18,8 +18,8 @@ class << RSpec::OpenAPI::RecordBuilder = Object.new
18
18
  if rails?
19
19
  route = find_rails_route(request)
20
20
  path = route.path.spec.to_s.delete_suffix('(.:format)')
21
- summary = "#{route.requirements[:controller]} ##{route.requirements[:action]}"
22
- tags = [route.requirements[:controller]]
21
+ summary = "#{route.requirements[:action]}"
22
+ tags = [route.requirements[:controller].classify]
23
23
  else
24
24
  path = request.path
25
25
  summary = "#{request.method} #{request.path}"
@@ -59,14 +59,17 @@ class << RSpec::OpenAPI::RecordBuilder = Object.new
59
59
  end
60
60
 
61
61
  # @param [ActionDispatch::Request] request
62
- def find_rails_route(request)
63
- # Reverse the destructive modification by Rails https://github.com/rails/rails/blob/v5.2.4.4/actionpack/lib/action_dispatch/journey/router.rb#L36-L44
64
- unless request.script_name.empty?
62
+ def find_rails_route(request, app: Rails.application, fix_path: true)
63
+ # Reverse the destructive modification by Rails https://github.com/rails/rails/blob/v6.0.3.4/actionpack/lib/action_dispatch/journey/router.rb#L33-L41
64
+ if fix_path && !request.script_name.empty?
65
65
  request = request.dup
66
66
  request.path_info = File.join(request.script_name, request.path_info)
67
67
  end
68
68
 
69
- Rails.application.routes.router.recognize(request) do |route|
69
+ app.routes.router.recognize(request) do |route|
70
+ unless route.path.anchored
71
+ route = find_rails_route(request, app: route.app.app, fix_path: false)
72
+ end
70
73
  return route
71
74
  end
72
75
  raise "No route matched for #{request.request_method} #{request.path_info}"
@@ -79,7 +79,8 @@ class << RSpec::OpenAPI::SchemaBuilder = Object.new
79
79
  end
80
80
 
81
81
  def build_property(value)
82
- property = { type: build_type(value) }
82
+ property = build_type(value)
83
+
83
84
  case value
84
85
  when Array
85
86
  property[:items] = build_property(value.first)
@@ -96,19 +97,21 @@ class << RSpec::OpenAPI::SchemaBuilder = Object.new
96
97
  def build_type(value)
97
98
  case value
98
99
  when String
99
- 'string'
100
- when Float
101
- 'float'
100
+ { type: 'string' }
102
101
  when Integer
103
- 'integer'
102
+ { type: 'integer' }
103
+ when Float
104
+ { type: 'number', format: 'float' }
104
105
  when TrueClass, FalseClass
105
- 'boolean'
106
+ { type: 'boolean' }
106
107
  when Array
107
- 'array'
108
+ { type: 'array' }
108
109
  when Hash
109
- 'object'
110
+ { type: 'object' }
111
+ when ActionDispatch::Http::UploadedFile
112
+ { type: 'string', format: 'binary' }
110
113
  when NilClass
111
- 'null'
114
+ { type: 'null' }
112
115
  else
113
116
  raise NotImplementedError, "type detection is not implemented for: #{value.inspect}"
114
117
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module OpenAPI
3
- VERSION = '0.3.5'
3
+ VERSION = '0.3.10'
4
4
  end
5
5
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-openapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-23 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -66,6 +66,7 @@ files:
66
66
  - lib/rspec/openapi/schema_merger.rb
67
67
  - lib/rspec/openapi/version.rb
68
68
  - rspec-openapi.gemspec
69
+ - test.png
69
70
  homepage: https://github.com/k0kubun/rspec-openapi
70
71
  licenses:
71
72
  - MIT