webspicy 0.15.2 → 0.15.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/examples/restful/Gemfile.lock +1 -1
- data/lib/webspicy/configuration.rb +10 -10
- data/lib/webspicy/resource/service.rb +3 -4
- data/lib/webspicy/resource/service/invocation.rb +26 -0
- data/lib/webspicy/resource/service/test_case.rb +13 -1
- data/lib/webspicy/scope.rb +4 -5
- data/lib/webspicy/tester.rb +7 -22
- data/lib/webspicy/version.rb +1 -1
- 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: d510f36443e5ef38eaabf4c09c6286c1e1aa556a9bb67fd5f5b67303b1faef4c
|
4
|
+
data.tar.gz: bb8b064c714f10bef673d6e61fa0fe71037d8b0e0f8479a4bdb874bbce5484e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dce79c2eba1d8fa74408280cabc8d06eee163fc4f1e8d5b8dfbfb1d4f167063dba68c54a0b1f18d4a72ac2ae88baa5f1a169f9f54b9073cce2c1174efd0b02a8
|
7
|
+
data.tar.gz: b0665863864804a9977c73f25eb22d12930cf623e0db3bf67ea07a15d81162434ecf0e5cf1c12007abba6a6d1ea37f8fdb91cb99afa82893fd4e0b15c7d98ec6
|
@@ -249,36 +249,36 @@ module Webspicy
|
|
249
249
|
# Installs a listener that will be called before all tests
|
250
250
|
#
|
251
251
|
# The `listener` must respond to `call`.
|
252
|
-
def before_all(&listener)
|
253
|
-
register_listener(:before_all, listener)
|
252
|
+
def before_all(l = nil, &listener)
|
253
|
+
register_listener(:before_all, l || listener)
|
254
254
|
end
|
255
255
|
|
256
256
|
# Installs a listener that will be called before each web service invocation.
|
257
257
|
#
|
258
258
|
# The `listener` must respond to `call`.
|
259
|
-
def before_each(&listener)
|
260
|
-
register_listener(:before_each, listener)
|
259
|
+
def before_each(l = nil, &listener)
|
260
|
+
register_listener(:before_each, l || listener)
|
261
261
|
end
|
262
262
|
|
263
263
|
# Installs a listener that will be called after all tests
|
264
264
|
#
|
265
265
|
# The `listener` must respond to `call`.
|
266
|
-
def after_all(&listener)
|
267
|
-
register_listener(:after_all, listener)
|
266
|
+
def after_all(l = nil, &listener)
|
267
|
+
register_listener(:after_all, l || listener)
|
268
268
|
end
|
269
269
|
|
270
270
|
# Installs a listener that will be called after each web service invocation.
|
271
271
|
#
|
272
272
|
# The `listener` must respond to `call`.
|
273
|
-
def after_each(&listener)
|
274
|
-
register_listener(:after_each, listener)
|
273
|
+
def after_each(l = nil, &listener)
|
274
|
+
register_listener(:after_each, l || listener)
|
275
275
|
end
|
276
276
|
|
277
277
|
# Installs a listener that will be called around each web service invocation.
|
278
278
|
#
|
279
279
|
# The `listener` must respond to `call`.
|
280
|
-
def around_each(&listener)
|
281
|
-
register_listener(:around_each, listener)
|
280
|
+
def around_each(l = nil, &listener)
|
281
|
+
register_listener(:around_each, l || listener)
|
282
282
|
end
|
283
283
|
|
284
284
|
# Installs a listener that will be called right after all precondition
|
@@ -51,8 +51,7 @@ module Webspicy
|
|
51
51
|
preconditions.map{|pre|
|
52
52
|
pre.counterexamples(self).map{|tc|
|
53
53
|
tc = Webspicy.test_case(tc, Webspicy.current_scope)
|
54
|
-
tc.
|
55
|
-
tc
|
54
|
+
tc.bind(self, true)
|
56
55
|
}
|
57
56
|
}.flatten
|
58
57
|
end
|
@@ -107,13 +106,13 @@ module Webspicy
|
|
107
106
|
|
108
107
|
def bind_examples
|
109
108
|
(@raw[:examples] ||= []).each do |ex|
|
110
|
-
ex.
|
109
|
+
ex.bind(self, false)
|
111
110
|
end
|
112
111
|
end
|
113
112
|
|
114
113
|
def bind_counterexamples
|
115
114
|
(@raw[:counterexamples] ||= []).each do |ex|
|
116
|
-
ex.
|
115
|
+
ex.bind(self, true)
|
117
116
|
end
|
118
117
|
end
|
119
118
|
|
@@ -12,6 +12,32 @@ module Webspicy
|
|
12
12
|
|
13
13
|
attr_reader :service, :test_case, :response, :client
|
14
14
|
|
15
|
+
def errors
|
16
|
+
@errors ||= begin
|
17
|
+
errs = [
|
18
|
+
[:expected_status_unmet, true],
|
19
|
+
[:expected_content_type_unmet, !test_case.is_expected_status?(204)],
|
20
|
+
[:expected_headers_unmet, test_case.has_expected_headers?],
|
21
|
+
[:expected_schema_unmet, !test_case.is_expected_status?(204)],
|
22
|
+
[:assertions_unmet, test_case.has_assertions?],
|
23
|
+
[:postconditions_unmet, test_case.service.has_postconditions? && !test_case.counterexample?],
|
24
|
+
[:expected_error_unmet, test_case.has_expected_error?]
|
25
|
+
].map do |(expectation,only_if)|
|
26
|
+
next unless only_if
|
27
|
+
begin
|
28
|
+
self.send(expectation)
|
29
|
+
rescue => ex
|
30
|
+
ex.message
|
31
|
+
end
|
32
|
+
end
|
33
|
+
errs.compact
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def has_error?
|
38
|
+
!errors.empty?
|
39
|
+
end
|
40
|
+
|
15
41
|
### Getters on response
|
16
42
|
|
17
43
|
def response_code
|
@@ -5,8 +5,20 @@ module Webspicy
|
|
5
5
|
|
6
6
|
def initialize(raw)
|
7
7
|
@raw = raw
|
8
|
+
@counterexample = nil
|
9
|
+
end
|
10
|
+
attr_reader :service
|
11
|
+
attr_reader :counterexample
|
12
|
+
|
13
|
+
def bind(service, counterexample)
|
14
|
+
@service = service
|
15
|
+
@counterexample = counterexample
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
def counterexample?
|
20
|
+
!!@counterexample
|
8
21
|
end
|
9
|
-
attr_accessor :service
|
10
22
|
|
11
23
|
def resource
|
12
24
|
service.resource
|
data/lib/webspicy/scope.rb
CHANGED
@@ -48,20 +48,20 @@ module Webspicy
|
|
48
48
|
|
49
49
|
def each_example(service)
|
50
50
|
service.examples.select(&to_filter_proc(config.test_case_filter)).each{|e|
|
51
|
-
yield(expand_example(service, e)
|
51
|
+
yield(expand_example(service, e))
|
52
52
|
}
|
53
53
|
end
|
54
54
|
|
55
55
|
def each_counterexamples(service, &bl)
|
56
56
|
service.counterexamples.select(&to_filter_proc(config.test_case_filter)).each{|e|
|
57
|
-
yield(expand_example(service, e)
|
57
|
+
yield(expand_example(service, e))
|
58
58
|
} if config.run_counterexamples?
|
59
59
|
end
|
60
60
|
|
61
61
|
def each_generated_counterexamples(service, &bl)
|
62
62
|
Webspicy.with_scope(self) do
|
63
63
|
service.generated_counterexamples.select(&to_filter_proc(config.test_case_filter)).each{|e|
|
64
|
-
yield(expand_example(service, e)
|
64
|
+
yield(expand_example(service, e))
|
65
65
|
}
|
66
66
|
end if config.run_counterexamples?
|
67
67
|
end
|
@@ -128,8 +128,7 @@ module Webspicy
|
|
128
128
|
h1 = service.default_example.to_info
|
129
129
|
h2 = example.to_info
|
130
130
|
ex = Resource::Service::TestCase.new(merge_maps(h1, h2))
|
131
|
-
ex.service
|
132
|
-
ex
|
131
|
+
ex.bind(service, example.counterexample?)
|
133
132
|
end
|
134
133
|
|
135
134
|
def merge_maps(h1, h2)
|
data/lib/webspicy/tester.rb
CHANGED
@@ -45,16 +45,16 @@ module Webspicy
|
|
45
45
|
|
46
46
|
def rspec_service!(on, service, client, scope)
|
47
47
|
on.describe service do
|
48
|
-
scope.each_testcase(service) do |test_case
|
48
|
+
scope.each_testcase(service) do |test_case|
|
49
49
|
describe test_case do
|
50
|
-
include_examples 'a successful test case invocation', client, test_case
|
50
|
+
include_examples 'a successful test case invocation', client, test_case
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
def rspec_config!
|
57
|
-
RSpec.shared_examples "a successful test case invocation" do |client, test_case
|
57
|
+
RSpec.shared_examples "a successful test case invocation" do |client, test_case|
|
58
58
|
|
59
59
|
around(:each) do |example|
|
60
60
|
client.around(test_case) do
|
@@ -63,7 +63,8 @@ module Webspicy
|
|
63
63
|
client.instrument(test_case)
|
64
64
|
@invocation = client.call(test_case)
|
65
65
|
example.run
|
66
|
-
client.after(test_case)
|
66
|
+
client.after(test_case, @invocation)
|
67
|
+
@invocation
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
@@ -73,24 +74,8 @@ module Webspicy
|
|
73
74
|
|
74
75
|
it 'works' do
|
75
76
|
raise "Test not ran" unless invocation.done?
|
76
|
-
|
77
|
-
|
78
|
-
[:expected_content_type_unmet, !test_case.is_expected_status?(204)],
|
79
|
-
[:expected_headers_unmet, test_case.has_expected_headers?],
|
80
|
-
[:expected_schema_unmet, !test_case.is_expected_status?(204)],
|
81
|
-
[:assertions_unmet, test_case.has_assertions?],
|
82
|
-
[:postconditions_unmet, test_case.service.has_postconditions? && !counterexample],
|
83
|
-
[:expected_error_unmet, test_case.has_expected_error?]
|
84
|
-
].map do |(expectation,only_if)|
|
85
|
-
next unless only_if
|
86
|
-
begin
|
87
|
-
invocation.send(expectation)
|
88
|
-
rescue => ex
|
89
|
-
ex.message
|
90
|
-
end
|
91
|
-
end
|
92
|
-
fails = fails.compact
|
93
|
-
raise "\n* " + fails.join("\n* ") + "\n" unless fails.empty?
|
77
|
+
errors = invocation.errors
|
78
|
+
raise "\n* " + errors.join("\n* ") + "\n" unless errors.empty?
|
94
79
|
end
|
95
80
|
end
|
96
81
|
end
|
data/lib/webspicy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webspicy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernard Lambeau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|