fitting 2.16.0 → 2.18.1

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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +34 -3
  3. data/CHANGELOG.md +19 -0
  4. data/README.md +37 -4
  5. data/fitting.gemspec +9 -9
  6. data/images/example.png +0 -0
  7. data/images/example2.png +0 -0
  8. data/images/logo.png +0 -0
  9. data/lib/fitting/configuration/legacy.rb +6 -5
  10. data/lib/fitting/configuration/yaml.rb +2 -2
  11. data/lib/fitting/cover/json_schema.rb +3 -2
  12. data/lib/fitting/cover/json_schema_enum.rb +1 -1
  13. data/lib/fitting/cover/json_schema_one_of.rb +1 -1
  14. data/lib/fitting/cover/response.rb +1 -5
  15. data/lib/fitting/documentation.rb +0 -2
  16. data/lib/fitting/matchers/response_matcher.rb +2 -1
  17. data/lib/fitting/records/documented/request.rb +1 -0
  18. data/lib/fitting/records/realized_unit.rb +13 -15
  19. data/lib/fitting/records/spherical/request.rb +1 -1
  20. data/lib/fitting/records/spherical/requests.rb +2 -1
  21. data/lib/fitting/records/spherical/response.rb +2 -2
  22. data/lib/fitting/records/test_unit/request.rb +4 -0
  23. data/lib/fitting/records/tested/request.rb +4 -4
  24. data/lib/fitting/records/unit/combination.rb +5 -6
  25. data/lib/fitting/records/unit/json_schema.rb +38 -33
  26. data/lib/fitting/records/unit/request.rb +1 -0
  27. data/lib/fitting/records/unit/response.rb +1 -0
  28. data/lib/fitting/report/action.rb +6 -9
  29. data/lib/fitting/report/actions.rb +7 -5
  30. data/lib/fitting/report/combination.rb +1 -15
  31. data/lib/fitting/report/combinations.rb +4 -5
  32. data/lib/fitting/report/console.rb +1 -0
  33. data/lib/fitting/report/prefix.rb +42 -51
  34. data/lib/fitting/report/prefixes.rb +6 -4
  35. data/lib/fitting/report/response.rb +17 -18
  36. data/lib/fitting/report/responses.rb +9 -8
  37. data/lib/fitting/report/test.rb +9 -11
  38. data/lib/fitting/report/tests.rb +10 -13
  39. data/lib/fitting/request.rb +0 -1
  40. data/lib/fitting/response.rb +4 -3
  41. data/lib/fitting/statistics/cover_error.rb +2 -0
  42. data/lib/fitting/statistics/cover_error_enum.rb +2 -0
  43. data/lib/fitting/statistics/cover_error_one_of.rb +2 -0
  44. data/lib/fitting/statistics/list.rb +5 -4
  45. data/lib/fitting/statistics/not_covered_responses.rb +1 -1
  46. data/lib/fitting/statistics/percent.rb +2 -1
  47. data/lib/fitting/statistics/template.rb +10 -8
  48. data/lib/fitting/storage/responses.rb +2 -2
  49. data/lib/fitting/storage/white_list.rb +7 -0
  50. data/lib/fitting/templates/realized_template.rb +2 -0
  51. data/lib/fitting/tests.rb +1 -1
  52. data/lib/fitting/version.rb +1 -1
  53. data/lib/fitting.rb +9 -6
  54. data/lib/tasks/fitting.rake +62 -54
  55. data/lib/templates/bomboniere/package-lock.json +82 -67
  56. data/lib/templates/bomboniere/src/components/HelloWorld.vue +3 -0
  57. metadata +30 -55
  58. data/example.png +0 -0
  59. data/example2.png +0 -0
@@ -17,6 +17,7 @@ module Fitting
17
17
  return nil if @white_list == nil && @resource_white_list == nil && @include_resources == nil && @include_actions == nil
18
18
  return @white_list if @white_list
19
19
  return @white_list = transformation if @resource_white_list
20
+
20
21
  @white_list = {}
21
22
  @white_list.merge!(new_transformation) if @include_resources
22
23
  @white_list.merge!(postnew_transformation) if @include_actions
@@ -25,6 +26,7 @@ module Fitting
25
26
 
26
27
  def without_group
27
28
  return @without_group_list if @without_group_list
29
+
28
30
  @without_group_list = @resource_white_list.inject([]) do |all_requests, resource|
29
31
  resource_selection(resource, all_requests)
30
32
  end.flatten.uniq
@@ -43,6 +45,7 @@ module Fitting
43
45
 
44
46
  def find_warnings(resource)
45
47
  return nil if @resources[resource]
48
+
46
49
  @warnings.push(
47
50
  "FITTING WARNING: In the documentation there isn't resource from the resource_white_list #{resource}"
48
51
  )
@@ -50,6 +53,7 @@ module Fitting
50
53
 
51
54
  def puts_warnings
52
55
  return nil if @warnings == []
56
+
53
57
  warnings_string = @warnings.join("\n")
54
58
  puts "\n#{warnings_string}"
55
59
  end
@@ -93,6 +97,7 @@ module Fitting
93
97
 
94
98
  def new_without_group
95
99
  return @newwithout_group_list if @newwithout_group_list
100
+
96
101
  @newwithout_group_list = @include_resources.inject([]) do |all_requests, resource|
97
102
  if resource[0] == '/'
98
103
  new_resource_selection(resource, all_requests)
@@ -120,6 +125,7 @@ module Fitting
120
125
 
121
126
  def new_find_warnings(resource)
122
127
  return nil if @new_resources[resource]
128
+
123
129
  @warnings.push(
124
130
  "FITTING WARNING: In the documentation there isn't resource from the resource_white_list #{resource}"
125
131
  )
@@ -135,6 +141,7 @@ module Fitting
135
141
 
136
142
  def postnew_without_group
137
143
  return @postnewwithout_group_list if @postnewwithout_group_list
144
+
138
145
  @postnewwithout_group_list = @include_actions.inject([]) do |all_requests, resource|
139
146
  method, path = resource.split(' ')
140
147
  if path[0] == '/'
@@ -27,8 +27,10 @@ module Fitting
27
27
  all_good = requests.all?(&:valid_json_schemas?)
28
28
  res += "path: #{key} #{all_good ? '✔' : '✖'}\n"
29
29
  next if all_good
30
+
30
31
  requests.map do |request|
31
32
  next if request.valid_json_schemas?
33
+
32
34
  res += " full path: #{request.test_path} ✖\n"
33
35
  res += " request.method #{request.method}\n"
34
36
  res += " request.path #{request.path}\n"
data/lib/fitting/tests.rb CHANGED
@@ -13,7 +13,7 @@ module Fitting
13
13
  end
14
14
  json = JSON.dump(array)
15
15
 
16
- File.open("fitting_tests/test#{ENV["TEST_ENV_NUMBER"]}.json", 'w') { |file| file.write(json) }
16
+ File.open("fitting_tests/test#{ENV['TEST_ENV_NUMBER']}.json", 'w') { |file| file.write(json) }
17
17
  end
18
18
 
19
19
  def make_dir(dir_name)
@@ -1,3 +1,3 @@
1
1
  module Fitting
2
- VERSION = '2.16.0'.freeze
2
+ VERSION = '2.18.1'.freeze
3
3
  end
data/lib/fitting.rb CHANGED
@@ -16,7 +16,6 @@ module Fitting
16
16
  end
17
17
 
18
18
  def statistics
19
- puts 'DEPRECATED: deprecated method statistics, use new method save_test_data'
20
19
  responses = Fitting::Storage::Responses.new
21
20
 
22
21
  RSpec.configure do |config|
@@ -30,18 +29,21 @@ module Fitting
30
29
  end
31
30
  end
32
31
 
32
+ extend Gem::Deprecate
33
+ deprecate :statistics, :save_test_data, 2022, 1
34
+
33
35
  def save_test_data
34
36
  responses = Fitting::Storage::Responses.new
35
37
 
36
- FileUtils.rm_r Dir.glob("fitting_tests/*"), :force => true
38
+ FileUtils.rm_r Dir.glob('fitting_tests/*'), force: true
37
39
 
38
40
  RSpec.configure do |config|
39
- config.after(:each, type: :request) do
40
- responses.add(response, inspect)
41
+ config.after(:each, type: :request) do |example|
42
+ responses.add(response, example.metadata)
41
43
  end
42
44
 
43
- config.after(:each, type: :controller) do
44
- responses.add(response, inspect)
45
+ config.after(:each, type: :controller) do |example|
46
+ responses.add(response, example.metadata)
45
47
  end
46
48
 
47
49
  config.after(:suite) do
@@ -61,6 +63,7 @@ module Fitting
61
63
 
62
64
  def self.load_tasks
63
65
  return if loaded_tasks
66
+
64
67
  self.loaded_tasks = true
65
68
 
66
69
  Dir[File.join(File.dirname(__FILE__), 'tasks', '**/*.rake')].each do |rake|
@@ -22,29 +22,33 @@ namespace :fitting do
22
22
  end
23
23
 
24
24
  prefixes.to_a.map do |prefix|
25
+ next if prefix.skip?
26
+
25
27
  prefix.actions.to_a.map do |action|
26
28
  action.responses.join(action.tests)
27
- end unless prefix.skip?
29
+ end
28
30
  end
29
31
 
30
32
  prefixes.to_a.map do |prefix|
33
+ next if prefix.skip?
34
+
31
35
  prefix.actions.to_a.map do |action|
32
36
  action.responses.to_a.map do |response|
33
37
  response.combinations.join(response.tests)
34
38
  end
35
- end unless prefix.skip?
39
+ end
36
40
  end
37
41
 
38
42
  report = JSON.pretty_generate(
39
- {
40
- tests_without_prefixes: tests.without_prefixes,
41
- prefixes_details: prefixes.to_a.map { |p| p.details }
42
- }
43
+ {
44
+ tests_without_prefixes: tests.without_prefixes,
45
+ prefixes_details: prefixes.to_a.map(&:details)
46
+ }
43
47
  )
44
48
 
45
49
  destination = 'fitting'
46
50
  FileUtils.mkdir_p(destination)
47
- FileUtils.rm_r Dir.glob("#{destination}/*"), :force => true
51
+ FileUtils.rm_r Dir.glob("#{destination}/*"), force: true
48
52
  File.open('fitting/report.json', 'w') { |file| file.write(report) }
49
53
 
50
54
  gem_path = $LOAD_PATH.find { |i| i.include?('fitting') }
@@ -54,6 +58,8 @@ namespace :fitting do
54
58
  json_schemas = {}
55
59
  combinations = {}
56
60
  prefixes.to_a.map do |prefix|
61
+ next if prefix.skip?
62
+
57
63
  prefix.actions.to_a.map do |action|
58
64
  action.responses.to_a.map do |response|
59
65
  json_schemas.merge!(response.id => response.body)
@@ -61,24 +67,24 @@ namespace :fitting do
61
67
  combinations.merge!(combination.id => combination.json_schema)
62
68
  end
63
69
  end
64
- end unless prefix.skip?
70
+ end
65
71
  end
66
72
  File.open('fitting/json_schemas.json', 'w') { |file| file.write(JSON.pretty_generate(json_schemas)) }
67
73
  File.open('fitting/combinations.json', 'w') { |file| file.write(JSON.pretty_generate(combinations)) }
68
74
  File.open('fitting/tests.json', 'w') { |file| file.write(JSON.pretty_generate(tests.to_h)) }
69
75
 
70
- js_path = Dir["#{destination}/js/*"].find { |f| f[0..14] == 'fitting/js/app.' and f[-3..-1] == '.js' }
76
+ js_path = Dir["#{destination}/js/*"].find { |f| f[0..14] == 'fitting/js/app.' and f[-3..] == '.js' }
71
77
  js_file = File.read(js_path)
72
- new_js_file = js_file.gsub("{stub:\"prefixes report\"}", report)
73
- new_js_file = new_js_file.gsub("{stub:\"for action page\"}", report)
74
- new_js_file = new_js_file.gsub("{stub:\"json-schemas\"}", JSON.pretty_generate(json_schemas))
75
- new_js_file = new_js_file.gsub("{stub:\"combinations\"}", JSON.pretty_generate(combinations))
76
- new_js_file = new_js_file.gsub("{stub:\"tests\"}", JSON.pretty_generate(tests.to_h))
78
+ new_js_file = js_file.gsub('{stub:"prefixes report"}', report)
79
+ new_js_file = new_js_file.gsub('{stub:"for action page"}', report)
80
+ new_js_file = new_js_file.gsub('{stub:"json-schemas"}', JSON.pretty_generate(json_schemas))
81
+ new_js_file = new_js_file.gsub('{stub:"combinations"}', JSON.pretty_generate(combinations))
82
+ new_js_file = new_js_file.gsub('{stub:"tests"}', JSON.pretty_generate(tests.to_h))
77
83
  File.open(js_path, 'w') { |file| file.write(new_js_file) }
78
84
 
79
85
  console = Fitting::Report::Console.new(
80
- tests.without_prefixes,
81
- prefixes.to_a.map { |p| p.details }
86
+ tests.without_prefixes,
87
+ prefixes.to_a.map(&:details)
82
88
  )
83
89
 
84
90
  puts console.output
@@ -88,53 +94,53 @@ namespace :fitting do
88
94
  exit 0
89
95
 
90
96
  actions.map do |action|
91
- action.to_hash["responses"].map do |response|
97
+ action.to_hash['responses'].map do |response|
92
98
  response['combination'] ||= []
93
- combinations = Fitting::Cover::JSONSchema.new(response['body']).combi + Fitting::Cover::JSONSchemaEnum.new(response['body']).combi + Fitting::Cover::JSONSchemaOneOf.new(response['body']).combi
94
- if combinations != []
95
- combinations.map do |combination|
96
- response['combination'].push(
97
- {
98
- 'json_schema' => combination[0],
99
- 'type' => combination[1][0],
100
- 'combination' => combination[1][1],
101
- 'tests' => [],
102
- 'error' => []
103
- }
104
- )
105
- end
99
+ combinations = Fitting::Cover::JSONSchema.new(response['body']).combi +
100
+ Fitting::Cover::JSONSchemaEnum.new(response['body']).combi +
101
+ Fitting::Cover::JSONSchemaOneOf.new(response['body']).combi
102
+ next unless combinations != []
103
+
104
+ combinations.map do |combination|
105
+ response['combination'].push(
106
+ {
107
+ 'json_schema' => combination[0],
108
+ 'type' => combination[1][0],
109
+ 'combination' => combination[1][1],
110
+ 'tests' => [],
111
+ 'error' => []
112
+ }
113
+ )
106
114
  end
107
115
  end
108
116
  end
109
117
 
110
118
  actions.map do |action|
111
- action.to_hash["responses"].map do |response|
119
+ action.to_hash['responses'].map do |response|
112
120
  response['tests'] ||= []
113
121
  response['tests'].map do |test|
114
- if response['combination'][0]
115
- response['combination'].map do |combination|
116
- begin
117
- res = JSON::Validator.fully_validate(combination['json_schema'], test['response']['body'])
118
- if res == []
119
- combination['tests'].push(test)
120
- response['tests'] = response['tests'] - [test]
121
- next
122
- else
123
- combination['error'].push({test: test, error: res})
124
- end
125
- rescue JSON::Schema::SchemaError => error
126
- combination['error'].push({test: test, error: error})
127
- end
122
+ next unless response['combination'][0]
123
+
124
+ response['combination'].map do |combination|
125
+ res = JSON::Validator.fully_validate(combination['json_schema'], test['response']['body'])
126
+ if res == []
127
+ combination['tests'].push(test)
128
+ response['tests'] = response['tests'] - [test]
129
+ next
130
+ else
131
+ combination['error'].push({ test: test, error: res })
128
132
  end
133
+ rescue JSON::Schema::SchemaError => e
134
+ combination['error'].push({ test: test, error: e })
129
135
  end
130
136
  end
131
137
  end
132
138
  end
133
139
 
134
- actions_test = {actions: actions, tests: tests}
140
+ actions_test = { actions: actions, tests: tests }
135
141
 
136
142
  makedirs('fitting')
137
- File.open('fitting/old_report.json', 'w') { |file| file.write(MultiJson.dump(actions_test)) }
143
+ File.open('fitting/old_report.json', 'w') { |file| file.write(JSON.dump(actions_test)) }
138
144
  end
139
145
 
140
146
  # deprecated
@@ -154,7 +160,8 @@ namespace :fitting do
154
160
 
155
161
  desc 'Fitting documentation responses cover'
156
162
  task :documentation_responses, [:size] => :environment do |_, args|
157
- if args.size == 'xs'
163
+ case args.size
164
+ when 'xs'
158
165
  documented_unit = Fitting::Statistics::Template.new(
159
166
  Fitting::Records::Spherical::Requests.new,
160
167
  Fitting.configuration
@@ -165,7 +172,7 @@ namespace :fitting do
165
172
  puts 'Not all responses from the whitelist are covered!'
166
173
  exit 1
167
174
  end
168
- elsif args.size == 's'
175
+ when 's'
169
176
  documented_unit = Fitting::Statistics::Template.new(
170
177
  Fitting::Records::Spherical::Requests.new,
171
178
  Fitting.configuration,
@@ -177,7 +184,7 @@ namespace :fitting do
177
184
  puts 'Not all responses from the whitelist are covered!'
178
185
  exit 1
179
186
  end
180
- elsif args.size == 'm'
187
+ when 'm'
181
188
  documented_unit = Fitting::Statistics::Template.new(
182
189
  Fitting::Records::Spherical::Requests.new,
183
190
  Fitting.configuration,
@@ -189,7 +196,7 @@ namespace :fitting do
189
196
  puts 'Not all responses from the whitelist are covered!'
190
197
  exit 1
191
198
  end
192
- elsif args.size == 'l'
199
+ when 'l'
193
200
  documented_unit = Fitting::Statistics::Template.new(
194
201
  Fitting::Records::Spherical::Requests.new,
195
202
  Fitting.configuration,
@@ -208,19 +215,20 @@ namespace :fitting do
208
215
 
209
216
  desc 'Fitting documentation responses cover error'
210
217
  task :documentation_responses_error, [:size] => :environment do |_, args|
211
- if args.size == 's'
218
+ case args.size
219
+ when 's'
212
220
  documented_unit = Fitting::Statistics::TemplateCoverError.new(
213
221
  Fitting::Records::Spherical::Requests.new,
214
222
  Fitting.configuration
215
223
  )
216
224
  puts documented_unit.stats
217
- elsif args.size == 'm'
225
+ when 'm'
218
226
  documented_unit = Fitting::Statistics::TemplateCoverErrorEnum.new(
219
227
  Fitting::Records::Spherical::Requests.new,
220
228
  Fitting.configuration
221
229
  )
222
230
  puts documented_unit.stats
223
- elsif args.size == 'l'
231
+ when 'l'
224
232
  documented_unit = Fitting::Statistics::TemplateCoverErrorOneOf.new(
225
233
  Fitting::Records::Spherical::Requests.new,
226
234
  Fitting.configuration
@@ -1185,15 +1185,48 @@
1185
1185
  }
1186
1186
  },
1187
1187
  "browserslist": {
1188
- "version": "4.12.2",
1189
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.2.tgz",
1190
- "integrity": "sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==",
1188
+ "version": "4.16.6",
1189
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
1190
+ "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
1191
1191
  "dev": true,
1192
1192
  "requires": {
1193
- "caniuse-lite": "^1.0.30001088",
1194
- "electron-to-chromium": "^1.3.483",
1195
- "escalade": "^3.0.1",
1196
- "node-releases": "^1.1.58"
1193
+ "caniuse-lite": "^1.0.30001219",
1194
+ "colorette": "^1.2.2",
1195
+ "electron-to-chromium": "^1.3.723",
1196
+ "escalade": "^3.1.1",
1197
+ "node-releases": "^1.1.71"
1198
+ },
1199
+ "dependencies": {
1200
+ "caniuse-lite": {
1201
+ "version": "1.0.30001230",
1202
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz",
1203
+ "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==",
1204
+ "dev": true
1205
+ },
1206
+ "colorette": {
1207
+ "version": "1.2.2",
1208
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
1209
+ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
1210
+ "dev": true
1211
+ },
1212
+ "electron-to-chromium": {
1213
+ "version": "1.3.739",
1214
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz",
1215
+ "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==",
1216
+ "dev": true
1217
+ },
1218
+ "escalade": {
1219
+ "version": "3.1.1",
1220
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1221
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1222
+ "dev": true
1223
+ },
1224
+ "node-releases": {
1225
+ "version": "1.1.72",
1226
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz",
1227
+ "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==",
1228
+ "dev": true
1229
+ }
1197
1230
  }
1198
1231
  },
1199
1232
  "buffer": {
@@ -1267,9 +1300,9 @@
1267
1300
  },
1268
1301
  "dependencies": {
1269
1302
  "ssri": {
1270
- "version": "6.0.1",
1271
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
1272
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
1303
+ "version": "6.0.2",
1304
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
1305
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
1273
1306
  "dev": true,
1274
1307
  "requires": {
1275
1308
  "figgy-pudding": "^3.5.1"
@@ -1722,9 +1755,9 @@
1722
1755
  "dev": true
1723
1756
  },
1724
1757
  "color-string": {
1725
- "version": "1.5.3",
1726
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
1727
- "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
1758
+ "version": "1.6.0",
1759
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz",
1760
+ "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==",
1728
1761
  "dev": true,
1729
1762
  "requires": {
1730
1763
  "color-name": "^1.0.0",
@@ -2693,9 +2726,9 @@
2693
2726
  "dev": true
2694
2727
  },
2695
2728
  "dns-packet": {
2696
- "version": "1.3.1",
2697
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
2698
- "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
2729
+ "version": "1.3.4",
2730
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
2731
+ "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
2699
2732
  "dev": true,
2700
2733
  "requires": {
2701
2734
  "ip": "^1.1.0",
@@ -2836,31 +2869,25 @@
2836
2869
  "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
2837
2870
  "dev": true
2838
2871
  },
2839
- "electron-to-chromium": {
2840
- "version": "1.3.483",
2841
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz",
2842
- "integrity": "sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg==",
2843
- "dev": true
2844
- },
2845
2872
  "elliptic": {
2846
- "version": "6.5.3",
2847
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
2848
- "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
2873
+ "version": "6.5.4",
2874
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
2875
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
2849
2876
  "dev": true,
2850
2877
  "requires": {
2851
- "bn.js": "^4.4.0",
2852
- "brorand": "^1.0.1",
2878
+ "bn.js": "^4.11.9",
2879
+ "brorand": "^1.1.0",
2853
2880
  "hash.js": "^1.0.0",
2854
- "hmac-drbg": "^1.0.0",
2855
- "inherits": "^2.0.1",
2856
- "minimalistic-assert": "^1.0.0",
2857
- "minimalistic-crypto-utils": "^1.0.0"
2881
+ "hmac-drbg": "^1.0.1",
2882
+ "inherits": "^2.0.4",
2883
+ "minimalistic-assert": "^1.0.1",
2884
+ "minimalistic-crypto-utils": "^1.0.1"
2858
2885
  },
2859
2886
  "dependencies": {
2860
2887
  "bn.js": {
2861
- "version": "4.11.9",
2862
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
2863
- "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
2888
+ "version": "4.12.0",
2889
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
2890
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
2864
2891
  "dev": true
2865
2892
  }
2866
2893
  }
@@ -2978,12 +3005,6 @@
2978
3005
  "is-symbol": "^1.0.2"
2979
3006
  }
2980
3007
  },
2981
- "escalade": {
2982
- "version": "3.0.1",
2983
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz",
2984
- "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==",
2985
- "dev": true
2986
- },
2987
3008
  "escape-html": {
2988
3009
  "version": "1.0.3",
2989
3010
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -3846,9 +3867,9 @@
3846
3867
  "dev": true
3847
3868
  },
3848
3869
  "hosted-git-info": {
3849
- "version": "2.8.8",
3850
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
3851
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
3870
+ "version": "2.8.9",
3871
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
3872
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
3852
3873
  "dev": true
3853
3874
  },
3854
3875
  "hpack.js": {
@@ -4762,9 +4783,9 @@
4762
4783
  }
4763
4784
  },
4764
4785
  "lodash": {
4765
- "version": "4.17.19",
4766
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
4767
- "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
4786
+ "version": "4.17.21",
4787
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
4788
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
4768
4789
  "dev": true
4769
4790
  },
4770
4791
  "lodash.defaultsdeep": {
@@ -5295,12 +5316,6 @@
5295
5316
  }
5296
5317
  }
5297
5318
  },
5298
- "node-releases": {
5299
- "version": "1.1.58",
5300
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz",
5301
- "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==",
5302
- "dev": true
5303
- },
5304
5319
  "normalize-package-data": {
5305
5320
  "version": "2.5.0",
5306
5321
  "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -5747,9 +5762,9 @@
5747
5762
  "dev": true
5748
5763
  },
5749
5764
  "path-parse": {
5750
- "version": "1.0.6",
5751
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
5752
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
5765
+ "version": "1.0.7",
5766
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5767
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
5753
5768
  "dev": true
5754
5769
  },
5755
5770
  "path-to-regexp": {
@@ -5869,9 +5884,9 @@
5869
5884
  "dev": true
5870
5885
  },
5871
5886
  "postcss": {
5872
- "version": "7.0.32",
5873
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
5874
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
5887
+ "version": "7.0.36",
5888
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
5889
+ "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
5875
5890
  "dev": true,
5876
5891
  "requires": {
5877
5892
  "chalk": "^2.4.2",
@@ -8248,9 +8263,9 @@
8248
8263
  }
8249
8264
  },
8250
8265
  "url-parse": {
8251
- "version": "1.4.7",
8252
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
8253
- "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
8266
+ "version": "1.5.3",
8267
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
8268
+ "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
8254
8269
  "dev": true,
8255
8270
  "requires": {
8256
8271
  "querystringify": "^2.1.1",
@@ -9199,9 +9214,9 @@
9199
9214
  "dev": true
9200
9215
  },
9201
9216
  "ws": {
9202
- "version": "6.2.1",
9203
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
9204
- "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
9217
+ "version": "6.2.2",
9218
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
9219
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
9205
9220
  "dev": true,
9206
9221
  "requires": {
9207
9222
  "async-limiter": "~1.0.0"
@@ -9214,9 +9229,9 @@
9214
9229
  "dev": true
9215
9230
  },
9216
9231
  "y18n": {
9217
- "version": "4.0.0",
9218
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
9219
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
9232
+ "version": "4.0.1",
9233
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
9234
+ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
9220
9235
  "dev": true
9221
9236
  },
9222
9237
  "yallist": {
@@ -53,6 +53,9 @@
53
53
  {{ responses_details.method }}
54
54
  </div>
55
55
  </div>
56
+ <div style="color: #b94283;" v-if="action_details.responses.tests_without_responses.length != 0">
57
+ &#9888;
58
+ </div>
56
59
  </router-link>
57
60
  </div>
58
61
  </div>