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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efdf4060daab47d3319dd29b48ecd26013621e30f6c1d4f1c25b4f518ea7529c
4
- data.tar.gz: 52841690093e5d2c6aa109fb9713ed8b61aad46b692372bd2bef4bc9eeb13c33
3
+ metadata.gz: d510f36443e5ef38eaabf4c09c6286c1e1aa556a9bb67fd5f5b67303b1faef4c
4
+ data.tar.gz: bb8b064c714f10bef673d6e61fa0fe71037d8b0e0f8479a4bdb874bbce5484e6
5
5
  SHA512:
6
- metadata.gz: e6a7c5fae819129306949642fdb8dab129a490750988fd6ea5b7b65e1f54baec03736f5691487ee8d0008eee3688bd98a094260ef4dfa3f0538ca5fbcafda1e1
7
- data.tar.gz: 06e2831456be2cd7fb2dd3ac3cf9135bef1e8ae8aa683977d9670a5724b090d2104b1e8d57b6f3f3d20b88ca72e4e7077d0c99fb47a1123e9c6d1634290beb3c
6
+ metadata.gz: dce79c2eba1d8fa74408280cabc8d06eee163fc4f1e8d5b8dfbfb1d4f167063dba68c54a0b1f18d4a72ac2ae88baa5f1a169f9f54b9073cce2c1174efd0b02a8
7
+ data.tar.gz: b0665863864804a9977c73f25eb22d12930cf623e0db3bf67ea07a15d81162434ecf0e5cf1c12007abba6a6d1ea37f8fdb91cb99afa82893fd4e0b15c7d98ec6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- webspicy (0.15.2)
4
+ webspicy (0.15.3)
5
5
  finitio (>= 0.8.0)
6
6
  http (>= 2)
7
7
  mustermann (~> 1.0)
@@ -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.service = self
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.service = self
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.service = self
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
@@ -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), false)
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), true)
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), true)
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 = service
132
- ex
131
+ ex.bind(service, example.counterexample?)
133
132
  end
134
133
 
135
134
  def merge_maps(h1, h2)
@@ -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, counterexample|
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, counterexample
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, counterexample|
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
- fails = [
77
- [:expected_status_unmet, true],
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
@@ -2,7 +2,7 @@ module Webspicy
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 15
5
- TINY = 2
5
+ TINY = 3
6
6
  end
7
7
  VERSION = "#{Version::MAJOR}.#{Version::MINOR}.#{Version::TINY}"
8
8
  end
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.2
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-04-28 00:00:00.000000000 Z
11
+ date: 2020-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake