fitting 2.5.0 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/fitting.rb +33 -1
- data/lib/fitting/railtie.rb +9 -0
- data/lib/fitting/records/realized_unit.rb +54 -0
- data/lib/fitting/records/spherical/request.rb +49 -0
- data/lib/fitting/records/spherical/requests.rb +19 -0
- data/lib/fitting/records/spherical/response.rb +38 -0
- data/lib/fitting/records/test_unit/request.rb +96 -0
- data/lib/fitting/records/tested/request.rb +22 -1
- data/lib/fitting/records/tested/response.rb +9 -0
- data/lib/fitting/records/unit/request.rb +1 -1
- data/lib/fitting/storage/responses.rb +7 -2
- data/lib/fitting/templates/realized_template.rb +49 -0
- data/lib/fitting/tests.rb +23 -0
- data/lib/fitting/version.rb +1 -1
- data/lib/tasks/fitting.rake +34 -0
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f803f26bbe2cb7472a2ca8077aa7a00754ec755
|
4
|
+
data.tar.gz: 38f77aec3f07b3aed3f82ebcae34549a953d45f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a3619063602e165398a68ea20e4630be7d3877119f11cbead7fdc05a38b4f436e2d06039b75c3d09a55b069498e0f2e043d7acb14151342a90c7282378cc580
|
7
|
+
data.tar.gz: 7c2ec1512bc655dbd816b3ba9665ec6af4bbf7e9c68deb8f3d1f608396ac1e24389bb5099621c732aeb0f895c019cd7e54725e825015bfe8d94829dda00586f1
|
data/CHANGELOG.md
CHANGED
data/lib/fitting.rb
CHANGED
@@ -3,6 +3,7 @@ require 'fitting/configuration'
|
|
3
3
|
require 'fitting/matchers/response_matcher'
|
4
4
|
require 'fitting/documentation'
|
5
5
|
require 'fitting/storage/responses'
|
6
|
+
require 'fitting/railtie' if defined?(Rails)
|
6
7
|
|
7
8
|
module Fitting
|
8
9
|
class << self
|
@@ -19,7 +20,7 @@ module Fitting
|
|
19
20
|
|
20
21
|
RSpec.configure do |config|
|
21
22
|
config.after(:each, type: :controller) do
|
22
|
-
responses.add(response)
|
23
|
+
responses.add(response, self.inspect)
|
23
24
|
end
|
24
25
|
|
25
26
|
config.after(:suite) do
|
@@ -27,5 +28,36 @@ module Fitting
|
|
27
28
|
end
|
28
29
|
end
|
29
30
|
end
|
31
|
+
|
32
|
+
def save_test_data
|
33
|
+
responses = Fitting::Storage::Responses.new
|
34
|
+
|
35
|
+
RSpec.configure do |config|
|
36
|
+
config.after(:each, type: :controller) do
|
37
|
+
responses.add(response, self.inspect)
|
38
|
+
end
|
39
|
+
|
40
|
+
config.after(:suite) do
|
41
|
+
responses.tests.save
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.loaded_tasks=(val)
|
48
|
+
@loaded_tasks = val
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.loaded_tasks
|
52
|
+
@loaded_tasks
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.load_tasks
|
56
|
+
return if loaded_tasks
|
57
|
+
self.loaded_tasks = true
|
58
|
+
|
59
|
+
Dir[File.join(File.dirname(__FILE__), 'tasks', '**/*.rake')].each do |rake|
|
60
|
+
load rake
|
61
|
+
end
|
30
62
|
end
|
31
63
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'fitting/records/test_unit/request'
|
2
|
+
|
3
|
+
module Fitting
|
4
|
+
class Records
|
5
|
+
class RealizedUnit
|
6
|
+
def initialize(realized_requests, documented_requests)
|
7
|
+
@realized_requests = realized_requests
|
8
|
+
@documented_requests = documented_requests
|
9
|
+
end
|
10
|
+
|
11
|
+
def fully_covered?
|
12
|
+
test_file_paths.each do |key, requests|
|
13
|
+
all_good = requests.all? { |request| request.documented? }
|
14
|
+
return false unless all_good
|
15
|
+
end
|
16
|
+
test_file_paths.each do |key, requests|
|
17
|
+
all_good = requests.all? { |request| request.response_documented? }
|
18
|
+
return false unless all_good
|
19
|
+
end
|
20
|
+
test_file_paths.each do |key, requests|
|
21
|
+
all_good = requests.all? { |request| request.response_json_schemas? }
|
22
|
+
return false unless all_good
|
23
|
+
end
|
24
|
+
test_file_paths.each do |key, requests|
|
25
|
+
all_good = requests.all? { |request| request.valid_json_schemas? }
|
26
|
+
return false unless all_good
|
27
|
+
end
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_file_paths
|
32
|
+
return @test_file_paths if @test_file_paths
|
33
|
+
@test_file_paths = {}
|
34
|
+
white_unit.map do |request|
|
35
|
+
@test_file_paths[request.test_file_path] ||= []
|
36
|
+
@test_file_paths[request.test_file_path].push(request)
|
37
|
+
end
|
38
|
+
@test_file_paths
|
39
|
+
end
|
40
|
+
|
41
|
+
def all_documented_requests
|
42
|
+
@all_documented_requests ||= @documented_requests.to_a.inject([]) do |res, tomogram_request|
|
43
|
+
res.push(Fitting::Records::Documented::Request.new(tomogram_request, nil))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def white_unit
|
48
|
+
@white_unit_requests ||= @realized_requests.to_a.inject([]) do |res, tested_request|
|
49
|
+
res.push(Fitting::Records::TestUnit::Request.new(tested_request, all_documented_requests))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'fitting/records/spherical/response'
|
3
|
+
|
4
|
+
module Fitting
|
5
|
+
class Records
|
6
|
+
class Spherical
|
7
|
+
class Request
|
8
|
+
attr_reader :method, :path, :body, :response, :title, :group
|
9
|
+
|
10
|
+
def initialize(method:, path:, body:, response:, title:, group:)
|
11
|
+
@method = method
|
12
|
+
@path = path
|
13
|
+
@body = body
|
14
|
+
@response = response
|
15
|
+
@title = title
|
16
|
+
@group = group
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_hash
|
20
|
+
{
|
21
|
+
method: method,
|
22
|
+
path: path.to_s,
|
23
|
+
body: body,
|
24
|
+
response: response.to_hash,
|
25
|
+
title: title,
|
26
|
+
group: group
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_json
|
31
|
+
JSON.dump(to_hash)
|
32
|
+
end
|
33
|
+
|
34
|
+
class << self
|
35
|
+
def load(hash)
|
36
|
+
new(
|
37
|
+
method: hash["method"],
|
38
|
+
path: hash["path"],
|
39
|
+
body: hash["body"],
|
40
|
+
response: Fitting::Records::Spherical::Response.load(hash["response"]),
|
41
|
+
title: hash["title"],
|
42
|
+
group: hash["group"]
|
43
|
+
)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'fitting/records/spherical/request'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Fitting
|
5
|
+
class Records
|
6
|
+
class Spherical
|
7
|
+
class Requests
|
8
|
+
def to_a
|
9
|
+
return @to_a if @to_a
|
10
|
+
|
11
|
+
array = JSON.load(File.read('tests.json'))
|
12
|
+
@to_a = array.inject([]) do |res, tested_request|
|
13
|
+
res.push(Fitting::Records::Spherical::Request.load(tested_request))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Fitting
|
4
|
+
class Records
|
5
|
+
class Spherical
|
6
|
+
class Response
|
7
|
+
attr_reader :status, :body
|
8
|
+
|
9
|
+
def initialize(status:, body:)
|
10
|
+
@status = status
|
11
|
+
@body = body
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_hash
|
15
|
+
{
|
16
|
+
status: status,
|
17
|
+
body: JSON.load(body)
|
18
|
+
}
|
19
|
+
rescue JSON::ParserError
|
20
|
+
{
|
21
|
+
status: status,
|
22
|
+
body: {}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_json
|
27
|
+
JSON.dump(to_hash)
|
28
|
+
end
|
29
|
+
|
30
|
+
class << self
|
31
|
+
def load(hash)
|
32
|
+
new(status: hash["status"], body: hash["body"])
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'json-schema'
|
2
|
+
|
3
|
+
module Fitting
|
4
|
+
class Records
|
5
|
+
class TestUnit
|
6
|
+
class Request
|
7
|
+
def initialize(tested_request, all_documented_requests)
|
8
|
+
@tested_request = tested_request
|
9
|
+
@all_documented_requests = all_documented_requests
|
10
|
+
end
|
11
|
+
|
12
|
+
def method
|
13
|
+
@method ||= @tested_request.method
|
14
|
+
end
|
15
|
+
|
16
|
+
def path
|
17
|
+
@path ||= @tested_request.path
|
18
|
+
end
|
19
|
+
|
20
|
+
def body
|
21
|
+
@body ||= @tested_request.body
|
22
|
+
end
|
23
|
+
|
24
|
+
def response
|
25
|
+
@response ||= @tested_request.response
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_path
|
29
|
+
@test_path ||= @tested_request.title
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_file_path
|
33
|
+
@test_file_path ||= @tested_request.group
|
34
|
+
end
|
35
|
+
|
36
|
+
def documented_requests
|
37
|
+
@documented_requests ||= @all_documented_requests.inject([]) do |res, documented_request|
|
38
|
+
next res unless @tested_request.method == documented_request.method &&
|
39
|
+
documented_request.path.match(@tested_request.path.to_s)
|
40
|
+
res.push(documented_request)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def documented?
|
45
|
+
@documented ||= documented_requests.present?
|
46
|
+
end
|
47
|
+
|
48
|
+
def documented_responses
|
49
|
+
@documented_responses ||= documented_requests.inject([]) do |res, documented_request|
|
50
|
+
documented_request.responses.map do |documented_response|
|
51
|
+
next unless documented_response["status"] == response.status.to_s
|
52
|
+
res.push(documented_response)
|
53
|
+
end
|
54
|
+
end.flatten.compact
|
55
|
+
end
|
56
|
+
|
57
|
+
def response_documented?
|
58
|
+
@response_documented ||= documented_responses.present?
|
59
|
+
end
|
60
|
+
|
61
|
+
def response_json_schemas
|
62
|
+
@response_json_schemas ||= documented_responses.inject([]) do |res, documented_response|
|
63
|
+
res.push(documented_response["json_schemas"])
|
64
|
+
end.flatten
|
65
|
+
end
|
66
|
+
|
67
|
+
def response_json_schemas?
|
68
|
+
@response_json_schemas_present ||= response_json_schemas.present?
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_json_schemas
|
72
|
+
@valid_json_schemas ||= response_json_schemas.inject([]) do |res, json_schema|
|
73
|
+
next res unless JSON::Validator.validate(json_schema, response.body)
|
74
|
+
res.push(json_schema)
|
75
|
+
end.flatten
|
76
|
+
end
|
77
|
+
|
78
|
+
def invalid_json_schemas
|
79
|
+
@invalid_json_schemas ||= response_json_schemas.inject([]) do |res, json_schema|
|
80
|
+
next res if JSON::Validator.validate(json_schema, response.body)
|
81
|
+
res.push(
|
82
|
+
{
|
83
|
+
json_schema: json_schema,
|
84
|
+
fully_validate: JSON::Validator.fully_validate(json_schema, response.body)
|
85
|
+
}
|
86
|
+
)
|
87
|
+
end.flatten
|
88
|
+
end
|
89
|
+
|
90
|
+
def valid_json_schemas?
|
91
|
+
@valid_json_schemas_present ||= valid_json_schemas.present?
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
require 'tomograph/path'
|
2
2
|
require 'fitting/records/tested/response'
|
3
|
+
require 'fitting/records/spherical/request'
|
3
4
|
|
4
5
|
module Fitting
|
5
6
|
class Records
|
6
7
|
class Tested
|
7
8
|
class Request
|
8
|
-
def initialize(env_response)
|
9
|
+
def initialize(env_response, test_title)
|
9
10
|
@env_response = env_response
|
11
|
+
@test_title = test_title
|
10
12
|
end
|
11
13
|
|
12
14
|
def method
|
@@ -24,6 +26,25 @@ module Fitting
|
|
24
26
|
def response
|
25
27
|
@response ||= Fitting::Records::Tested::Response.new(@env_response)
|
26
28
|
end
|
29
|
+
|
30
|
+
def test_path
|
31
|
+
@test_path ||= @test_title[/#{'\(\.'}(.*?)#{'\)'}/m, 1] || @test_title[/#{'\.'}(.*?)#{'\"'}/m, 1]
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_file_path
|
35
|
+
@test_file_path ||= test_path.split(':').first
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_spherical
|
39
|
+
Fitting::Records::Spherical::Request.new(
|
40
|
+
method: method,
|
41
|
+
path: path,
|
42
|
+
body: body,
|
43
|
+
response: response.to_spherical,
|
44
|
+
title: test_path,
|
45
|
+
group: test_file_path
|
46
|
+
)
|
47
|
+
end
|
27
48
|
end
|
28
49
|
end
|
29
50
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fitting/records/spherical/response'
|
2
|
+
|
1
3
|
module Fitting
|
2
4
|
class Records
|
3
5
|
class Tested
|
@@ -13,6 +15,13 @@ module Fitting
|
|
13
15
|
def body
|
14
16
|
@body ||= @env_response.body
|
15
17
|
end
|
18
|
+
|
19
|
+
def to_spherical
|
20
|
+
Fitting::Records::Spherical::Response.new(
|
21
|
+
status: status,
|
22
|
+
body: body
|
23
|
+
)
|
24
|
+
end
|
16
25
|
end
|
17
26
|
end
|
18
27
|
end
|
@@ -24,7 +24,7 @@ module Fitting
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def tested_responses
|
27
|
-
@tested_responses ||= @tested_requests.inject([]) do |res, tested_request|
|
27
|
+
@tested_responses ||= @tested_requests.to_a.inject([]) do |res, tested_request|
|
28
28
|
next res unless @documented_request.method == tested_request.method &&
|
29
29
|
@documented_request.path.match(tested_request.path.to_s)
|
30
30
|
res.push(tested_request.response)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'fitting/statistics'
|
2
|
+
require 'fitting/tests'
|
2
3
|
require 'fitting/records/tested/request'
|
3
4
|
|
4
5
|
module Fitting
|
@@ -8,13 +9,17 @@ module Fitting
|
|
8
9
|
@tested_requests = []
|
9
10
|
end
|
10
11
|
|
11
|
-
def add(env_response)
|
12
|
-
@tested_requests.push(Fitting::Records::Tested::Request.new(env_response))
|
12
|
+
def add(env_response, test_title = '')
|
13
|
+
@tested_requests.push(Fitting::Records::Tested::Request.new(env_response, test_title))
|
13
14
|
end
|
14
15
|
|
15
16
|
def statistics
|
16
17
|
Fitting::Statistics.new(@tested_requests)
|
17
18
|
end
|
19
|
+
|
20
|
+
def tests
|
21
|
+
Fitting::Tests.new(@tested_requests)
|
22
|
+
end
|
18
23
|
end
|
19
24
|
end
|
20
25
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fitting
|
2
|
+
class Templates
|
3
|
+
class RealizedTemplate
|
4
|
+
def initialize(realized_unit)
|
5
|
+
@realized_unit = realized_unit
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_s
|
9
|
+
res = ''
|
10
|
+
res += "1. Find request method and path:\n"
|
11
|
+
@realized_unit.test_file_paths.each do |key, requests|
|
12
|
+
all_good = requests.all? { |request| request.documented? }
|
13
|
+
res += "file: #{key} #{all_good ? '✔' : '✖'}\n"
|
14
|
+
end
|
15
|
+
res += "\n2. Find response status code:\n"
|
16
|
+
@realized_unit.test_file_paths.each do |key, requests|
|
17
|
+
all_good = requests.all? { |request| request.response_documented? }
|
18
|
+
res += "file: #{key} #{all_good ? '✔' : '✖'}\n"
|
19
|
+
end
|
20
|
+
res += "\n3. Find response json-schemas:\n"
|
21
|
+
@realized_unit.test_file_paths.each do |key, requests|
|
22
|
+
all_good = requests.all? { |request| request.response_json_schemas? }
|
23
|
+
res += "file: #{key} #{all_good ? '✔' : '✖'}\n"
|
24
|
+
end
|
25
|
+
res += "\n4. Check valid json-schemas:\n"
|
26
|
+
@realized_unit.test_file_paths.each do |key, requests|
|
27
|
+
all_good = requests.all? { |request| request.valid_json_schemas? }
|
28
|
+
res += "path: #{key} #{all_good ? '✔' : '✖'}\n"
|
29
|
+
unless all_good
|
30
|
+
requests.map do |request|
|
31
|
+
unless request.valid_json_schemas?
|
32
|
+
res += " full path: #{request.test_path} ✖\n"
|
33
|
+
res += " request.method #{request.method}\n"
|
34
|
+
res += " request.path #{request.path}\n"
|
35
|
+
res += " request.response.status #{request.response.status}\n"
|
36
|
+
res += " request.response.body #{request.response.body}\n\n"
|
37
|
+
request.invalid_json_schemas.map do |schema|
|
38
|
+
res += " json_schemas: #{schema[:json_schema]}\n"
|
39
|
+
res += " fully_validate: #{schema[:fully_validate]}\n\n"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
res
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fitting/statistics/template'
|
2
|
+
|
3
|
+
module Fitting
|
4
|
+
class Tests
|
5
|
+
def initialize(tested_requests)
|
6
|
+
@tested_requests = tested_requests
|
7
|
+
end
|
8
|
+
|
9
|
+
def save
|
10
|
+
array = @tested_requests.inject([]) do |res, request|
|
11
|
+
next res unless request.path.to_s.start_with?(Fitting.configuration.prefix)
|
12
|
+
res.push(request.to_spherical.to_hash)
|
13
|
+
end
|
14
|
+
json = JSON.dump(array)
|
15
|
+
File.open("tests.json", 'w') { |file| file.write(json) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def make_dir(dir_name)
|
19
|
+
FileUtils.mkdir_p(dir_name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
data/lib/fitting/version.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'fitting/records/spherical/requests'
|
2
|
+
require 'fitting/configuration'
|
3
|
+
require 'fitting/records/realized_unit'
|
4
|
+
require 'fitting/templates/realized_template'
|
5
|
+
|
6
|
+
namespace :fitting do
|
7
|
+
desc 'Fitting documentation'
|
8
|
+
task :documentation do
|
9
|
+
documented_unit = Fitting::Statistics::Template.new(
|
10
|
+
Fitting::Records::Spherical::Requests.new,
|
11
|
+
Fitting.configuration
|
12
|
+
)
|
13
|
+
puts documented_unit.stats
|
14
|
+
|
15
|
+
unless documented_unit.not_covered == "\n"
|
16
|
+
puts 'Not all responses from the whitelist are covered!'
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'Fitting tests'
|
22
|
+
task :tests do
|
23
|
+
realized_unit = Fitting::Records::RealizedUnit.new(
|
24
|
+
Fitting::Records::Spherical::Requests.new,
|
25
|
+
Fitting.configuration.tomogram
|
26
|
+
)
|
27
|
+
puts Fitting::Templates::RealizedTemplate.new(realized_unit).to_s
|
28
|
+
|
29
|
+
unless realized_unit.fully_covered?
|
30
|
+
puts 'Not all responses from the whitelist are covered!'
|
31
|
+
exit 1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fitting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.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-
|
11
|
+
date: 2018-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json-schema
|
@@ -197,7 +197,13 @@ files:
|
|
197
197
|
- lib/fitting/configuration/yaml.rb
|
198
198
|
- lib/fitting/documentation.rb
|
199
199
|
- lib/fitting/matchers/response_matcher.rb
|
200
|
+
- lib/fitting/railtie.rb
|
200
201
|
- lib/fitting/records/documented/request.rb
|
202
|
+
- lib/fitting/records/realized_unit.rb
|
203
|
+
- lib/fitting/records/spherical/request.rb
|
204
|
+
- lib/fitting/records/spherical/requests.rb
|
205
|
+
- lib/fitting/records/spherical/response.rb
|
206
|
+
- lib/fitting/records/test_unit/request.rb
|
201
207
|
- lib/fitting/records/tested/request.rb
|
202
208
|
- lib/fitting/records/tested/response.rb
|
203
209
|
- lib/fitting/records/unit/json_schema.rb
|
@@ -219,7 +225,10 @@ files:
|
|
219
225
|
- lib/fitting/statistics/template.rb
|
220
226
|
- lib/fitting/storage/responses.rb
|
221
227
|
- lib/fitting/storage/white_list.rb
|
228
|
+
- lib/fitting/templates/realized_template.rb
|
229
|
+
- lib/fitting/tests.rb
|
222
230
|
- lib/fitting/version.rb
|
231
|
+
- lib/tasks/fitting.rake
|
223
232
|
homepage: https://github.com/funbox/fitting
|
224
233
|
licenses:
|
225
234
|
- MIT
|