fitting 2.8.0 → 2.11.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: e2cacd061443e2b01a8632268f720ded08dffce1
4
- data.tar.gz: 1d0237514578651a2376ae63b47b8ca6433a3a9c
3
+ metadata.gz: 9fe2c40a89499b32b2a4989a88cb8d294c420191
4
+ data.tar.gz: cd0deaa0b1fb6003bc6c58054def0843fa22e656
5
5
  SHA512:
6
- metadata.gz: a23cd2b021cfc20b7fa23a02cc97446e27a99714bb0069cfd4b08303a2011daca9e59fab7f38cc98476fd7b447df8389d9247806e451b2277d7f6a8dd6d0208f
7
- data.tar.gz: d10e832b45a744eabf84cdbdbe0f213bd901f80bce104e6639d391d83d1123df4f95426a64cda0c28706210eac6c6e2100d031696413c6bbc23fcd536202cb94
6
+ metadata.gz: 1e2e177b230a274a1e53d2eb525f6f59f89ffcdcc9ae4392183f0021ae727f3a4d48499dd870bf853ea49a21d7eeec00c9196f1659506348d14dae07287688e3
7
+ data.tar.gz: a4ae0ec1d99a3f6b9d9e9fd10bcdeaf592be1335ada092481dece76250da9caa5f4f3cf084d290f792bb16fa897fe361a0967c4c739f918fcedb53a4e8d3bac9
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  /tmp/
10
10
  .idea/
11
11
  .byebug_history
12
+ .tool-versions
data/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Change log
2
2
 
3
+ ### 2.11.0 - 2019-09-09
4
+
5
+ * features
6
+ * crafter_apib_path
7
+ * drafter_4_apib_path
8
+ * drafter_4_yaml_path
9
+
10
+ * fixes
11
+ * crafter_yaml_path
12
+
13
+ ### 2.10.0 - 2019-09-05
14
+
15
+ * features
16
+ * add crafter_yaml_path
17
+
18
+ ### 2.9.1 - 2019-07-15
19
+
20
+ * fixes
21
+ * Improve gemspec
22
+ * Delete experimental code with haml
23
+
24
+ ### 2.9.0 - 2019-07-15
25
+
26
+ * features
27
+ * Delete old spec json
28
+ * fixes
29
+ * Improve gemspec
30
+
31
+ ### 2.8.1 - 2018-12-18
32
+
33
+ * features
34
+ * Add support for [parallel_tests](https://github.com/grosser/parallel_tests)
35
+
3
36
  ### 2.8.0 - 2018-10-13
4
37
 
5
38
  * features
data/README.md CHANGED
@@ -42,7 +42,7 @@ require 'fitting'
42
42
  Fitting.save_test_data
43
43
  ```
44
44
 
45
- The tests.json file will be created
45
+ The files will be created in ./fitting_tests/ path
46
46
 
47
47
  Example:
48
48
 
@@ -141,9 +141,9 @@ API responses with validation errors or untested: 9 (36.00% of 25).
141
141
  For details `rake fitting:documentation_responses_error[s]`
142
142
 
143
143
  ```
144
- request metohd: GET
144
+ request method: GET
145
145
  request path: /api/v1/book
146
- response staus: 200
146
+ response status: 200
147
147
  source json-schema: {"$schema"=>"http://json-schema.org/draft-04/schema#", "type"=>"object", ...}
148
148
  combination: ["required", "pages"]
149
149
  new json-schema: {"$schema"=>"http://json-schema.org/draft-04/schema#", "type"=>"object", ...}
@@ -167,11 +167,27 @@ If your project uses several prefixes, for each one you need to create a separat
167
167
 
168
168
  ### apib_path
169
169
 
170
- Path to API Blueprint documentation. There must be an installed [drafter](https://github.com/apiaryio/drafter) to parse it.
170
+ Path to API Blueprint v3 documentation. There must be an installed [drafter](https://github.com/apiaryio/drafter) to parse it.
171
171
 
172
172
  ### drafter_yaml_path
173
173
 
174
- Path to API Blueprint documentation pre-parsed with `drafter` and saved to a YAML file.
174
+ Path to API Blueprint v3 documentation pre-parsed with `drafter` and saved to a YAML file.
175
+
176
+ ### drafter_4_apib_path
177
+
178
+ Path to API Blueprint v4 documentation. There must be an installed [drafter](https://github.com/apiaryio/drafter) to parse it.
179
+
180
+ ### drafter_4_yaml_path
181
+
182
+ Path to API Blueprint v4 documentation pre-parsed with `drafter` and saved to a YAML file.
183
+
184
+ ### crafter_apib_path
185
+
186
+ Path to API Blueprint v4 documentation.
187
+
188
+ ### crafter_yaml_path
189
+
190
+ Path to API Blueprint v4 documentation pre-parsed with `crafter` and saved to a YAML file.
175
191
 
176
192
  ### tomogram_json_path
177
193
 
data/fitting.gemspec CHANGED
@@ -18,9 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_runtime_dependency 'haml'
22
21
  spec.add_runtime_dependency 'json-schema', '~> 2.6', '>= 2.6.2'
23
- spec.add_runtime_dependency 'multi_json'
22
+ spec.add_runtime_dependency 'multi_json', '~> 1.11'
24
23
  spec.add_runtime_dependency 'tomograph', '~> 2.0', '>= 2.2.0'
25
24
  spec.add_development_dependency 'bundler', '~> 1.12'
26
25
  spec.add_development_dependency 'byebug', '~> 8.2', '>= 8.2.1'
data/lib/fitting.rb CHANGED
@@ -32,6 +32,8 @@ module Fitting
32
32
  def save_test_data
33
33
  responses = Fitting::Storage::Responses.new
34
34
 
35
+ FileUtils.rm_r Dir.glob("fitting_tests/*"), :force => true
36
+
35
37
  RSpec.configure do |config|
36
38
  config.after(:each, type: :controller) do
37
39
  responses.add(response, inspect)
@@ -5,6 +5,10 @@ module Fitting
5
5
  class Legacy
6
6
  attr_accessor :apib_path,
7
7
  :drafter_yaml_path,
8
+ :crafter_apib_path,
9
+ :crafter_yaml_path,
10
+ :drafter_4_apib_path,
11
+ :drafter_4_yaml_path,
8
12
  :strict,
9
13
  :prefix,
10
14
  :white_list,
@@ -20,11 +24,24 @@ module Fitting
20
24
  end
21
25
 
22
26
  def tomogram
23
- @tomogram ||= Tomograph::Tomogram.new(
24
- prefix: @prefix,
25
- apib_path: @apib_path,
26
- drafter_yaml_path: @drafter_yaml_path
27
- )
27
+ @tomogram ||= if @crafter_apib_path || @crafter_yaml_path
28
+ Tomograph::Tomogram.new(
29
+ prefix: @prefix,
30
+ crafter_apib_path: @crafter_apib_path,
31
+ crafter_yaml_path: @crafter_yaml_path
32
+ )
33
+ elsif @drafter_4_apib_path || @drafter_4_yaml_path
34
+ Tomograph::Tomogram.new(
35
+ prefix: @prefix,
36
+ drafter_4_apib_path: @drafter_4_apib_path,
37
+ drafter_4_yaml_path: @drafter_4_yaml_path
38
+ )
39
+ else Tomograph::Tomogram.new(
40
+ prefix: @prefix,
41
+ apib_path: @apib_path,
42
+ drafter_yaml_path: @drafter_yaml_path
43
+ )
44
+ end
28
45
  end
29
46
 
30
47
  def title
@@ -6,6 +6,10 @@ module Fitting
6
6
  attr_reader :title
7
7
  attr_accessor :apib_path,
8
8
  :drafter_yaml_path,
9
+ :crafter_apib_path,
10
+ :crafter_yaml_path,
11
+ :drafter_4_apib_path,
12
+ :drafter_4_yaml_path,
9
13
  :tomogram_json_path,
10
14
  :strict,
11
15
  :prefix,
@@ -18,6 +22,10 @@ module Fitting
18
22
  def initialize(yaml, title = 'fitting')
19
23
  @apib_path = yaml['apib_path']
20
24
  @drafter_yaml_path = yaml['drafter_yaml_path']
25
+ @crafter_apib_path = yaml['crafter_apib_path']
26
+ @crafter_yaml_path = yaml['crafter_yaml_path']
27
+ @drafter_4_apib_path = yaml['drafter_4_apib_path']
28
+ @drafter_4_yaml_path = yaml['drafter_4_yaml_path']
21
29
  @tomogram_json_path = yaml['tomogram_json_path']
22
30
  @strict = yaml['strict']
23
31
  @prefix = yaml['prefix']
@@ -31,12 +39,26 @@ module Fitting
31
39
  end
32
40
 
33
41
  def tomogram
34
- @tomogram ||= Tomograph::Tomogram.new(
35
- prefix: @prefix,
36
- apib_path: @apib_path,
37
- drafter_yaml_path: @drafter_yaml_path,
38
- tomogram_json_path: @tomogram_json_path
39
- )
42
+ @tomogram ||= if @crafter_yaml_path || @crafter_apib_path
43
+ Tomograph::Tomogram.new(
44
+ prefix: @prefix,
45
+ crafter_apib_path: @crafter_apib_path,
46
+ crafter_yaml_path: @crafter_yaml_path,
47
+ )
48
+ elsif @drafter_4_apib_path || @drafter_4_yaml_path
49
+ Tomograph::Tomogram.new(
50
+ prefix: @prefix,
51
+ drafter_4_apib_path: @drafter_4_apib_path,
52
+ drafter_4_yaml_path: @drafter_4_yaml_path,
53
+ )
54
+ else
55
+ Tomograph::Tomogram.new(
56
+ prefix: @prefix,
57
+ apib_path: @apib_path,
58
+ drafter_yaml_path: @drafter_yaml_path,
59
+ tomogram_json_path: @tomogram_json_path
60
+ )
61
+ end
40
62
  end
41
63
 
42
64
  def stats_path
@@ -8,7 +8,10 @@ module Fitting
8
8
  def to_a
9
9
  return @to_a if @to_a
10
10
 
11
- array = JSON.load(File.read('tests.json'))
11
+ array = []
12
+ Dir['fitting_tests/*.json'].each do |file|
13
+ array += JSON.load(File.read(file))
14
+ end
12
15
  @to_a = array.inject([]) do |res, tested_request|
13
16
  res.push(Fitting::Records::Spherical::Request.load(tested_request))
14
17
  end
@@ -13,8 +13,8 @@ module Fitting
13
13
  response.json_schemas.map do |json_schema|
14
14
  json_schema.combinations.map do |combination|
15
15
  next unless combination.valid_bodies == []
16
- res += "request metohd: #{request.method}\nrequest path: #{request.path}\n"\
17
- "response staus: #{response.status}\nsource json-schema: #{json_schema.json_schema}\n"\
16
+ res += "request method: #{request.method}\nrequest path: #{request.path}\n"\
17
+ "response status: #{response.status}\nsource json-schema: #{json_schema.json_schema}\n"\
18
18
  "combination: #{combination.description}\nnew json-schema: #{combination.json_schema}\n\n"
19
19
  end
20
20
  end
@@ -13,8 +13,8 @@ module Fitting
13
13
  response.json_schemas.map do |json_schema|
14
14
  json_schema.combinations_with_enum.map do |combination|
15
15
  next unless combination.valid_bodies == []
16
- res += "request metohd: #{request.method}\nrequest path: #{request.path}\n"\
17
- "response staus: #{response.status}\nsource json-schema: #{json_schema.json_schema}\n"\
16
+ res += "request method: #{request.method}\nrequest path: #{request.path}\n"\
17
+ "response status: #{response.status}\nsource json-schema: #{json_schema.json_schema}\n"\
18
18
  "combination: #{combination.description}\nnew json-schema: #{combination.json_schema}\n\n"
19
19
  end
20
20
  end
data/lib/fitting/tests.rb CHANGED
@@ -7,12 +7,14 @@ module Fitting
7
7
  end
8
8
 
9
9
  def save
10
+ make_dir('fitting_tests')
10
11
  array = @tested_requests.inject([]) do |res, request|
11
12
  next res unless request.path.to_s.start_with?(Fitting.configuration.prefix)
12
13
  res.push(request.to_spherical.to_hash)
13
14
  end
14
15
  json = JSON.dump(array)
15
- File.open('tests.json', 'w') { |file| file.write(json) }
16
+
17
+ File.open("fitting_tests/test#{ENV["TEST_ENV_NUMBER"]}.json", 'w') { |file| file.write(json) }
16
18
  end
17
19
 
18
20
  def make_dir(dir_name)
@@ -1,3 +1,3 @@
1
1
  module Fitting
2
- VERSION = '2.8.0'.freeze
2
+ VERSION = '2.11.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fitting
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - d.efimov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-12 00:00:00.000000000 Z
11
+ date: 2019-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: haml
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: json-schema
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -48,16 +34,16 @@ dependencies:
48
34
  name: multi_json
49
35
  requirement: !ruby/object:Gem::Requirement
50
36
  requirements:
51
- - - ">="
37
+ - - "~>"
52
38
  - !ruby/object:Gem::Version
53
- version: '0'
39
+ version: '1.11'
54
40
  type: :runtime
55
41
  prerelease: false
56
42
  version_requirements: !ruby/object:Gem::Requirement
57
43
  requirements:
58
- - - ">="
44
+ - - "~>"
59
45
  - !ruby/object:Gem::Version
60
- version: '0'
46
+ version: '1.11'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: tomograph
63
49
  requirement: !ruby/object:Gem::Requirement
@@ -210,7 +196,6 @@ files:
210
196
  - lib/fitting/configuration.rb
211
197
  - lib/fitting/configuration/legacy.rb
212
198
  - lib/fitting/configuration/yaml.rb
213
- - lib/fitting/cover.rb
214
199
  - lib/fitting/cover/json_schema.rb
215
200
  - lib/fitting/cover/json_schema_enum.rb
216
201
  - lib/fitting/cover/response.rb
data/lib/fitting/cover.rb DELETED
@@ -1,66 +0,0 @@
1
- require 'fitting/cover/response'
2
- require 'haml'
3
- require 'json'
4
-
5
- module Fitting
6
- class Cover
7
- def initialize(all_responses, coverage)
8
- @all_responses = all_responses
9
- @coverage = coverage
10
- @list = {}
11
- end
12
-
13
- def to_hash
14
- return @list unless @list == {}
15
- @all_responses.each_with_object({}) do |response, res|
16
- next res unless response.documented?
17
- if res.key?(response.route)
18
- res[response.route].update(response)
19
- else
20
- res[response.route] = Fitting::Cover::Response.new(response)
21
- end
22
- end.map do |key, value|
23
- @list[key] = value.to_hash
24
- end
25
- @list
26
- end
27
-
28
- def template
29
- return @template if @template
30
- @template = {}
31
- to_hash.each do |key, value|
32
- @template[key] = value
33
- @template[key]['cover'] = 100.0
34
- if value['flags'] == []
35
- @template[key]['type'] = 'passed'
36
- else
37
- flag_true = value['flags'].find_all { |flag| flag == true }
38
- flag_false = value['flags'].find_all { |flag| flag == false }
39
- if flag_false.empty?
40
- @template[key]['type'] = 'passed'
41
- else
42
- @template[key]['cover'] = if flag_true.empty?
43
- 0.0
44
- else
45
- flag_false.size / flag_true.size
46
- end
47
- @template[key]['type'] = 'failed'
48
- end
49
- end
50
- @template[key]['json_schema'] = JSON.pretty_generate(value['json_schemas'].last)
51
- end
52
- @template
53
- end
54
-
55
- def save
56
- to_hash
57
- contents = File.read(File.expand_path('../view/report.html.haml', __FILE__))
58
- html = "<style>\n#{File.read(File.expand_path('../view/style.css', __FILE__))}\n</style>\n"
59
- html += Haml::Engine.new(contents).render(
60
- Object.new,
61
- :@to_hash => template
62
- )
63
- html
64
- end
65
- end
66
- end