Skip to content

Commit 93839cf

Browse files
committed
feat: add request and response to message
1 parent 6573bd4 commit 93839cf

File tree

4 files changed

+50
-2
lines changed

4 files changed

+50
-2
lines changed

lib/pact/consumer_contract/consumer_contract.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def self.from_hash(hash)
3737
elsif hash[:messages]
3838
hash[:messages].collect { |hash| Message.from_hash(hash)}
3939
else
40-
[]
40+
[] # or raise an error?
4141
end
4242

4343
new(

lib/pact/consumer_contract/interaction.rb

+8
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ def to_hash
3636
}
3737
end
3838

39+
def http?
40+
true
41+
end
42+
43+
def message?
44+
false
45+
end
46+
3947
def validate!
4048
raise Pact::InvalidInteractionError.new(self) unless description && request && response
4149
end

lib/pact/consumer_contract/message.rb

+38-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
require 'pact/shared/active_support_support'
44
require 'pact/matching_rules'
55
require 'pact/errors'
6+
require 'pact/consumer/request'
7+
require 'pact/consumer_contract/response'
68

79
module Pact
810
class Message
@@ -13,8 +15,8 @@ class Message
1315

1416
def initialize attributes = {}
1517
@description = attributes[:description]
16-
@request = attributes[:content]
1718
@provider_state = attributes[:provider_state] || attributes[:providerState]
19+
@content = attributes[:content]
1820
end
1921

2022
def self.from_hash hash
@@ -31,6 +33,41 @@ def to_hash
3133
}
3234
end
3335

36+
37+
def request
38+
@request ||= Pact::Consumer::Request::Actual.from_hash(
39+
path: '/',
40+
method: 'POST',
41+
query: nil,
42+
headers: {'Content-Type' => 'application/json'},
43+
body: {
44+
description: description,
45+
providerStates: [{
46+
name: provider_state
47+
}]
48+
}
49+
)
50+
end
51+
52+
# custom media type?
53+
def response
54+
@response ||= Pact::Response.new(
55+
status: 200,
56+
headers: {'Content-Type' => 'application/json'},
57+
body: {
58+
content: content
59+
}
60+
)
61+
end
62+
63+
def http?
64+
false
65+
end
66+
67+
def message?
68+
true
69+
end
70+
3471
def validate!
3572
raise Pact::InvalidMessageError.new(self) unless description && content
3673
end

lib/pact/consumer_contract/message/content.rb

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ class Content < Hash
44
include ActiveSupportSupport
55
include SymbolizeKeys
66

7+
def initialize hash
8+
merge!(hash)
9+
end
710
end
811
end
912
end

0 commit comments

Comments
 (0)