pact 1.0.36 → 1.0.37

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.
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@ Do this to generate your change history
2
2
 
3
3
  git log --date=relative --pretty=format:' * %h - %s (%an, %ad)'
4
4
 
5
+ ### 1.0.37 (19 March 2014)
6
+
7
+ * 0e8b80e - Cleaned up pact:verify rspec matcher lines so the output makes more sense to the reader (bethesque, 3 minutes ago)
8
+ * 03e5ea3 - Fixed config.include to ensure ordering of config and provider state declarations does not matter (bethesque, 20 minutes ago)
9
+
5
10
  ### 1.0.36 (19 March 2014)
6
11
 
7
12
  * c28de11 - Added patch level to pactSpecificationVersion (bethesque, 37 seconds ago)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pact (1.0.36)
4
+ pact (1.0.37)
5
5
  awesome_print (~> 1.1)
6
6
  find_a_port (~> 1.0.1)
7
7
  json
@@ -83,28 +83,36 @@ module Pact
83
83
 
84
84
  end
85
85
 
86
- def describe_response response, interaction_context
87
- # TODO : Hide the interaction_context from the output line as it is confusing
86
+ def describe_response expected_response, interaction_context
87
+
88
88
  describe "returns a response which" do
89
- if response['status']
90
- it "has status code #{response['status']}" do
91
- expect(interaction_context.last_response.status).to eql response['status']
89
+
90
+ let(:expected_response_status) { expected_response['status'] }
91
+ let(:expected_response_body) { expected_response['body'] }
92
+ let(:response) { interaction_context.last_response }
93
+ let(:response_status) { response.status }
94
+ let(:response_body) { parse_body_from_response(response) }
95
+
96
+ if expected_response['status']
97
+ it "has status code #{expected_response['status']}" do
98
+ expect(response_status).to eql expected_response_status
92
99
  end
93
100
  end
94
101
 
95
- if response['headers']
102
+ if expected_response['headers']
96
103
  describe "includes headers" do
97
- response['headers'].each do |name, value|
98
- it "\"#{name}\" with value \"#{value}\"" do
99
- expect(interaction_context.last_response.headers[name]).to match_term value
104
+ expected_response['headers'].each do |name, expected_header_value|
105
+ it "\"#{name}\" with value \"#{expected_header_value}\"" do
106
+ header_value = response.headers[name]
107
+ expect(header_value).to match_term expected_header_value
100
108
  end
101
109
  end
102
110
  end
103
111
  end
104
112
 
105
- if response['body']
113
+ if expected_response['body']
106
114
  it "has a matching body" do
107
- expect(parse_body_from_response(interaction_context.last_response)).to match_term response['body']
115
+ expect(response_body).to match_term expected_response_body
108
116
  end
109
117
  end
110
118
  end
@@ -135,10 +143,10 @@ module Pact
135
143
  @already_run = []
136
144
  end
137
145
 
138
- def run_once id
139
- unless @already_run.include?(id)
146
+ def run_once hook
147
+ unless @already_run.include?(hook)
140
148
  yield
141
- @already_run << id
149
+ @already_run << hook
142
150
  end
143
151
  end
144
152
 
@@ -77,8 +77,6 @@ module Pact
77
77
  @set_up_defined = false
78
78
  @tear_down_defined = false
79
79
  @no_op_defined = false
80
- #not sure why but using include doesn't bring in the configured module methods
81
- self.extend ProviderStateConfiguredModules
82
80
  end
83
81
 
84
82
  dsl do
@@ -120,12 +118,14 @@ module Pact
120
118
 
121
119
  def set_up
122
120
  if @set_up_block
121
+ include_provider_state_configured_modules
123
122
  instance_eval &@set_up_block
124
123
  end
125
124
  end
126
125
 
127
126
  def tear_down
128
127
  if @tear_down_block
128
+ include_provider_state_configured_modules
129
129
  instance_eval &@tear_down_block
130
130
  end
131
131
  end
@@ -155,6 +155,15 @@ module Pact
155
155
  "#{namespace}.#{name}"
156
156
  end
157
157
  end
158
+
159
+ def include_provider_state_configured_modules
160
+ # Doing this at runtime means the order of the Pact configuration block
161
+ # and the provider state declarations doesn't matter.
162
+ # Using include ProviderStateConfiguredModules on the class doesn't seem to work -
163
+ # modules dynamically added to ProviderStateConfiguredModules don't seem to be
164
+ # included in the including class.
165
+ self.extend(ProviderStateConfiguredModules) unless self.singleton_class.ancestors.include?(ProviderStateConfiguredModules)
166
+ end
158
167
  end
159
168
 
160
169
  class NoOpProviderState
data/lib/pact/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pact
2
- VERSION = "1.0.36"
2
+ VERSION = "1.0.37"
3
3
  end
@@ -12,10 +12,6 @@ class App
12
12
  end
13
13
  end
14
14
 
15
- Pact.configure do | config |
16
- config.include RSpec::Mocks::ExampleMethods
17
- end
18
-
19
15
  Pact.provider_states_for 'Consumer' do
20
16
  provider_state 'something is stubbed' do
21
17
  set_up do
@@ -24,6 +20,13 @@ Pact.provider_states_for 'Consumer' do
24
20
  end
25
21
  end
26
22
 
23
+ # Include the ExampleMethods module after the provider states are declared
24
+ # to ensure the ordering doesn't matter
25
+
26
+ Pact.configure do | config |
27
+ config.include RSpec::Mocks::ExampleMethods
28
+ end
29
+
27
30
  Pact.service_provider 'Provider' do
28
31
  app { App }
29
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.36
4
+ version: 1.0.37
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -455,7 +455,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
455
455
  version: '0'
456
456
  segments:
457
457
  - 0
458
- hash: -1828348959629147928
458
+ hash: 1047822279614111936
459
459
  required_rubygems_version: !ruby/object:Gem::Requirement
460
460
  none: false
461
461
  requirements:
@@ -464,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
464
464
  version: '0'
465
465
  segments:
466
466
  - 0
467
- hash: -1828348959629147928
467
+ hash: 1047822279614111936
468
468
  requirements: []
469
469
  rubyforge_project:
470
470
  rubygems_version: 1.8.23