lazy_api_doc 0.2.0 → 0.2.3
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/Gemfile.lock +1 -1
- data/lib/generators/lazy_api_doc/install_generator.rb +2 -2
- data/lib/lazy_api_doc/generator.rb +4 -6
- data/lib/lazy_api_doc/variants_parser.rb +2 -2
- data/lib/lazy_api_doc/version.rb +1 -1
- data/lib/lazy_api_doc.rb +16 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa62cfe77df17307c22cb91c6a951e2820d1a4b5d9aa5abdcf2125048fe4442f
|
4
|
+
data.tar.gz: f9429c504ec51bd374877f5a6c2406cbd0ce03353b771136f1f3dc41877a5cb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08af3aec20c0c6f7b9281f51845411a9f3875aec62577a6b0eb2f7a185ea4a7c49ad95fbc87d3ae434850ced028b14f5de2f9816bfd12babd938790bc443e553'
|
7
|
+
data.tar.gz: a50c616f463aa585bb9afc963855e7149236a437fea129b225a204c3ee7687996d0e2d781821b358beb7473a97418fe8438f4a1eea09938dc36ba17b0cd5066f
|
data/Gemfile.lock
CHANGED
@@ -44,7 +44,7 @@ module LazyApiDoc
|
|
44
44
|
# This peace of code handle using ParallelTests (tests runs in independent processes).
|
45
45
|
# Just delete this block if you don't use ParallelTests
|
46
46
|
if ENV['TEST_ENV_NUMBER'] && defined?(ParallelTests)
|
47
|
-
LazyApiDoc.save_examples
|
47
|
+
LazyApiDoc.save_examples('rspec')
|
48
48
|
ParallelTests.wait_for_other_processes_to_finish if ParallelTests.first_process?
|
49
49
|
LazyApiDoc.load_examples
|
50
50
|
end
|
@@ -75,7 +75,7 @@ module LazyApiDoc
|
|
75
75
|
# This peace of code handle using ParallelTests (tests runs in independent processes).
|
76
76
|
# Just delete this block if you don't use ParallelTests
|
77
77
|
if ENV['TEST_ENV_NUMBER'] && defined?(ParallelTests)
|
78
|
-
LazyApiDoc.save_examples
|
78
|
+
LazyApiDoc.save_examples('minitest')
|
79
79
|
ParallelTests.wait_for_other_processes_to_finish if ParallelTests.first_process?
|
80
80
|
LazyApiDoc.load_examples
|
81
81
|
end
|
@@ -39,7 +39,7 @@ module LazyApiDoc
|
|
39
39
|
def example_group(example, examples, route) # rubocop:disable Metrics/AbcSize
|
40
40
|
{
|
41
41
|
example['verb'].downcase => {
|
42
|
-
"tags" => [example.controller],
|
42
|
+
"tags" => [example.controller || 'Ungrouped'],
|
43
43
|
"description" => example["description"].capitalize,
|
44
44
|
"summary" => example.action,
|
45
45
|
"parameters" => path_params(route, examples) + query_params(examples),
|
@@ -85,12 +85,10 @@ module LazyApiDoc
|
|
85
85
|
|
86
86
|
def query_params(examples)
|
87
87
|
query_variants = examples.map do |example|
|
88
|
-
|
89
|
-
next {}
|
88
|
+
_path, query = example.request['full_path'].split('?')
|
89
|
+
next {} unless query
|
90
90
|
|
91
|
-
|
92
|
-
full_path.last.split('&').map { |part| part.split('=').map { |each| CGI.unescape(each) } }.group_by(&:first)
|
93
|
-
.transform_values { |v| v.map(&:last) }.map { |k, v| [k, k.match?(/\[\]\z/) ? v : v.first] }.to_h
|
91
|
+
CGI.parse(query).map { |k, v| [k.gsub('[]', ''), k.match?('\[\]') ? v : v.first] }.to_h
|
94
92
|
end
|
95
93
|
|
96
94
|
parsed = ::LazyApiDoc::VariantsParser.new(query_variants).result
|
@@ -73,10 +73,10 @@ module LazyApiDoc
|
|
73
73
|
result["properties"] = variant.map do |key, val|
|
74
74
|
[
|
75
75
|
key.to_s,
|
76
|
-
parse(val, variants.
|
76
|
+
parse(val, variants.select { |v| v.is_a?(Hash) }.map { |v| v.fetch(key, OPTIONAL) })
|
77
77
|
]
|
78
78
|
end.to_h
|
79
|
-
result["required"] = variant.keys.select { |key| variants.
|
79
|
+
result["required"] = variant.keys.select { |key| variants.select { |v| v.is_a?(Hash) }.all? { |v| v.key?(key) } }
|
80
80
|
result
|
81
81
|
end
|
82
82
|
|
data/lib/lazy_api_doc/version.rb
CHANGED
data/lib/lazy_api_doc.rb
CHANGED
@@ -32,16 +32,16 @@ module LazyApiDoc
|
|
32
32
|
|
33
33
|
def add_spec(rspec_example) # rubocop:disable Metrics/AbcSize
|
34
34
|
add(
|
35
|
-
'controller' => rspec_example.request.params[:controller],
|
36
|
-
'action' => rspec_example.request.params[:action],
|
35
|
+
'controller' => rspec_example.instance_variable_get(:@request).params[:controller],
|
36
|
+
'action' => rspec_example.instance_variable_get(:@request).params[:action],
|
37
37
|
'description' => rspec_example.class.description,
|
38
38
|
'source_location' => [rspec_example.class.metadata[:file_path], rspec_example.class.metadata[:line_number]],
|
39
|
-
'verb' => rspec_example.request.method,
|
40
|
-
'params' => rspec_example.request.params,
|
41
|
-
'content_type' => rspec_example.request.content_type.to_s,
|
39
|
+
'verb' => rspec_example.instance_variable_get(:@request).method,
|
40
|
+
'params' => rspec_example.instance_variable_get(:@request).params,
|
41
|
+
'content_type' => rspec_example.instance_variable_get(:@request).content_type.to_s,
|
42
42
|
'request' => {
|
43
|
-
'query_params' => rspec_example.request.query_parameters,
|
44
|
-
'full_path' => rspec_example.request.fullpath
|
43
|
+
'query_params' => rspec_example.instance_variable_get(:@request).query_parameters,
|
44
|
+
'full_path' => rspec_example.instance_variable_get(:@request).fullpath
|
45
45
|
},
|
46
46
|
'response' => {
|
47
47
|
'code' => rspec_example.response.status,
|
@@ -53,16 +53,16 @@ module LazyApiDoc
|
|
53
53
|
|
54
54
|
def add_test(mini_test_example) # rubocop:disable Metrics/AbcSize
|
55
55
|
add(
|
56
|
-
'controller' => mini_test_example.request.params[:controller],
|
57
|
-
'action' => mini_test_example.request.params[:action],
|
56
|
+
'controller' => mini_test_example.instance_variable_get(:@request).params[:controller],
|
57
|
+
'action' => mini_test_example.instance_variable_get(:@request).params[:action],
|
58
58
|
'description' => mini_test_example.name.gsub(/\Atest_/, '').humanize,
|
59
59
|
'source_location' => mini_test_example.method(mini_test_example.name).source_location,
|
60
|
-
'verb' => mini_test_example.request.method,
|
61
|
-
'params' => mini_test_example.request.params,
|
62
|
-
'content_type' => mini_test_example.request.content_type.to_s,
|
60
|
+
'verb' => mini_test_example.instance_variable_get(:@request).method,
|
61
|
+
'params' => mini_test_example.instance_variable_get(:@request).params,
|
62
|
+
'content_type' => mini_test_example.instance_variable_get(:@request).content_type.to_s,
|
63
63
|
'request' => {
|
64
|
-
'query_params' => mini_test_example.request.query_parameters,
|
65
|
-
'full_path' => mini_test_example.request.fullpath
|
64
|
+
'query_params' => mini_test_example.instance_variable_get(:@request).query_parameters,
|
65
|
+
'full_path' => mini_test_example.instance_variable_get(:@request).fullpath
|
66
66
|
},
|
67
67
|
'response' => {
|
68
68
|
'code' => mini_test_example.response.status,
|
@@ -79,10 +79,10 @@ module LazyApiDoc
|
|
79
79
|
File.write("#{path}/api.yml", layout.to_yaml)
|
80
80
|
end
|
81
81
|
|
82
|
-
def save_examples
|
82
|
+
def save_examples(process_name)
|
83
83
|
FileUtils.mkdir("#{path}/examples") unless File.exist?("#{path}/examples")
|
84
84
|
File.write(
|
85
|
-
"#{path}/examples
|
85
|
+
"#{path}/examples/#{process_name}_#{ENV['TEST_ENV_NUMBER'] || SecureRandom.uuid}.json",
|
86
86
|
{
|
87
87
|
created_at: Time.now.to_i,
|
88
88
|
examples: generator.examples
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazy_api_doc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdan Guban
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: The gem collects all requests and responses from your request specs and
|
14
14
|
generates documentationbased on it
|