rspec-api-docs 0.6.0 → 0.7.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a857b455227b03c4d95835fd82d250be2cc4435b
|
4
|
+
data.tar.gz: 85108372a0fd8bdd440ad098959cadd4acc979ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ecce2a07476e855f8b5f483818f672bda0af1d535f6f99f07c550db6dfa097e29b0122da85fd32e6097add999d1a10e96ef2524f0dca0b5d0cc533a9eba4eb8
|
7
|
+
data.tar.gz: d139049350af5da882800943f9078735bc49ccd90df096244b04dc766820c2e481afda8ac76d7a33b7d70c5730b82632f7e4a7f9826d21b9b5c7a13d01b9fa59
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rspec/core/rake_task'
|
3
3
|
require 'rubocop/rake_task'
|
4
|
+
require 'rspec_api_docs/rake_task'
|
4
5
|
|
5
6
|
RSpec::Core::RakeTask.new :rspec do |task|
|
6
7
|
task.verbose = false
|
@@ -15,4 +16,14 @@ task :generate_integration_docs do
|
|
15
16
|
exit $?.exitstatus
|
16
17
|
end
|
17
18
|
|
19
|
+
RspecApiDocs::RakeTask.new do |task|
|
20
|
+
task.verbose = false
|
21
|
+
task.rspec_opts = [
|
22
|
+
'--require ./spec/integration/json_helper.rb',
|
23
|
+
'--format progress',
|
24
|
+
]
|
25
|
+
task.pattern = 'spec/integration/rspec_api_docs_spec.rb'
|
26
|
+
task.existing_file = 'spec/integration/output/json/index.json'
|
27
|
+
end
|
28
|
+
|
18
29
|
task default: [:rspec, :rubocop, :generate_integration_docs]
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rspec_api_docs/formatter/resource/example/request_headers'
|
2
|
+
|
1
3
|
module RspecApiDocs
|
2
4
|
class Resource
|
3
5
|
class Example
|
@@ -93,19 +95,8 @@ module RspecApiDocs
|
|
93
95
|
metadata.fetch(:requests, []).reject { |pair| pair.any?(&:nil?) }
|
94
96
|
end
|
95
97
|
|
96
|
-
# http://stackoverflow.com/a/33235714/826820
|
97
98
|
def request_headers(env)
|
98
|
-
|
99
|
-
*env.select { |k,v| k.start_with? 'HTTP_' }
|
100
|
-
.collect { |k,v| [k.sub(/^HTTP_/, ''), v] }
|
101
|
-
.collect { |k,v| [k.split('_').collect(&:capitalize).join('-'), v] }
|
102
|
-
.sort.flatten
|
103
|
-
]
|
104
|
-
|
105
|
-
# TODO: Extract, test, and document
|
106
|
-
headers.reject do |k, v|
|
107
|
-
RspecApiDocs.configuration.exclude_request_headers.include?(k)
|
108
|
-
end
|
99
|
+
RequestHeaders.call(env)
|
109
100
|
end
|
110
101
|
|
111
102
|
def request_path(request)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module RspecApiDocs
|
2
|
+
class Resource
|
3
|
+
class Example
|
4
|
+
class RequestHeaders
|
5
|
+
attr_reader :env
|
6
|
+
|
7
|
+
def self.call(*args)
|
8
|
+
new(*args).call
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(env)
|
12
|
+
@env = env
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
headers.reject do |k, v|
|
17
|
+
excluded_headers.include?(k)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
# http://stackoverflow.com/a/33235714/826820
|
24
|
+
def headers
|
25
|
+
Hash[
|
26
|
+
*env.select { |k, v| k.start_with? 'HTTP_' }
|
27
|
+
.collect { |k, v| [k.sub(/^HTTP_/, ''), v] }
|
28
|
+
.collect { |k, v| [k.split('_').collect(&:capitalize).join('-'), v] }
|
29
|
+
.sort.flatten
|
30
|
+
]
|
31
|
+
end
|
32
|
+
|
33
|
+
def excluded_headers
|
34
|
+
RspecApiDocs.configuration.exclude_request_headers
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'pry'
|
2
|
+
require 'rake'
|
3
|
+
require 'rspec'
|
4
|
+
require 'json'
|
5
|
+
require 'rspec_api_docs/config'
|
6
|
+
|
7
|
+
module RspecApiDocs
|
8
|
+
class RakeTask < ::Rake::TaskLib
|
9
|
+
module RSpecMatchers
|
10
|
+
extend RSpec::Matchers
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :name
|
14
|
+
|
15
|
+
attr_accessor \
|
16
|
+
:verbose,
|
17
|
+
:pattern,
|
18
|
+
:rspec_opts,
|
19
|
+
:existing_file,
|
20
|
+
:dir
|
21
|
+
|
22
|
+
def initialize(name = nil, &block)
|
23
|
+
@name = name || :'docs:ensure_updated'
|
24
|
+
@verbose = true
|
25
|
+
@pattern = 'spec/requests/**/*_spec.rb'
|
26
|
+
@rspec_opts = []
|
27
|
+
@existing_file = 'docs/index.json'
|
28
|
+
|
29
|
+
block.call(self)
|
30
|
+
|
31
|
+
define
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def define
|
37
|
+
desc 'Ensure API docs are up to date'
|
38
|
+
task name do
|
39
|
+
@dir = Dir.mktmpdir
|
40
|
+
|
41
|
+
rspec_task.run_task(verbose)
|
42
|
+
|
43
|
+
configure_rspec
|
44
|
+
|
45
|
+
RSpecMatchers.expect(generated).to RSpecMatchers.eq(existing)
|
46
|
+
|
47
|
+
remove_dir
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def generated
|
52
|
+
JSON.parse(File.read(Pathname.new(dir) + 'index.json'))
|
53
|
+
end
|
54
|
+
|
55
|
+
def existing
|
56
|
+
JSON.parse(File.read(existing_file))
|
57
|
+
end
|
58
|
+
|
59
|
+
def rspec_task
|
60
|
+
RSpec::Core::RakeTask.new.tap do |task|
|
61
|
+
task.pattern = pattern
|
62
|
+
task.rspec_opts = rspec_opts + [
|
63
|
+
'--format RspecApiDocs::Formatter',
|
64
|
+
'--order defined',
|
65
|
+
"--require #{spec_helper.path}",
|
66
|
+
]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def spec_helper
|
71
|
+
tempfile = Tempfile.new(['shoebox', '.rb'])
|
72
|
+
tempfile.write <<-EOF
|
73
|
+
RspecApiDocs.configure do |config|
|
74
|
+
config.output_dir = '#{dir}'
|
75
|
+
end
|
76
|
+
EOF
|
77
|
+
tempfile.close
|
78
|
+
tempfile
|
79
|
+
end
|
80
|
+
|
81
|
+
def configure_rspec
|
82
|
+
RSpec.configure do |config|
|
83
|
+
config.color = true
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def remove_dir
|
88
|
+
FileUtils.remove_entry dir
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-api-docs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Odin Dutton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -149,8 +149,10 @@ files:
|
|
149
149
|
- lib/rspec_api_docs/formatter/renderer/slate_renderer/slate_index.html.md.erb
|
150
150
|
- lib/rspec_api_docs/formatter/resource.rb
|
151
151
|
- lib/rspec_api_docs/formatter/resource/example.rb
|
152
|
+
- lib/rspec_api_docs/formatter/resource/example/request_headers.rb
|
152
153
|
- lib/rspec_api_docs/formatter/resource/parameter.rb
|
153
154
|
- lib/rspec_api_docs/formatter/resource/response_field.rb
|
155
|
+
- lib/rspec_api_docs/rake_task.rb
|
154
156
|
- lib/rspec_api_docs/version.rb
|
155
157
|
- rspec-api-docs.gemspec
|
156
158
|
homepage: https://github.com/twe4ked
|
@@ -173,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
175
|
version: '0'
|
174
176
|
requirements: []
|
175
177
|
rubyforge_project:
|
176
|
-
rubygems_version: 2.5.
|
178
|
+
rubygems_version: 2.5.1
|
177
179
|
signing_key:
|
178
180
|
specification_version: 4
|
179
181
|
summary: Generate API documentation using RSpec
|