diff --git a/lib/pact/consumer_contract/message.rb b/lib/pact/consumer_contract/message.rb index b461af1..49d81b8 100644 --- a/lib/pact/consumer_contract/message.rb +++ b/lib/pact/consumer_contract/message.rb @@ -13,13 +13,15 @@ class Message include Pact::ActiveSupportSupport include Pact::SymbolizeKeys - attr_accessor :description, :contents, :provider_state, :provider_states, :metadata, :_id, :index + attr_accessor :description, :descriptions, :contents, :events, :provider_state, :provider_states, :metadata, :_id, :index def initialize attributes = {} @description = attributes[:description] + @descriptions = [] @provider_state = attributes[:provider_state] || attributes[:providerState] @provider_states = attributes[:provider_states] || [] @contents = attributes[:contents] + @events = [] @metadata = attributes[:metadata] @_id = attributes[:_id] @index = attributes[:index] diff --git a/lib/pact/message/consumer/interaction_builder.rb b/lib/pact/message/consumer/interaction_builder.rb index 13122fe..87db1c7 100644 --- a/lib/pact/message/consumer/interaction_builder.rb +++ b/lib/pact/message/consumer/interaction_builder.rb @@ -13,6 +13,7 @@ def initialize &block end def is_expected_to_send description + @interaction.descriptions << description @interaction.description = description self end @@ -32,7 +33,9 @@ def with_metadata(object) end def with_content(object) - interaction.contents = Pact::Message::Contents.from_hash(object) + message_content = Pact::Message::Contents.from_hash(object) + interaction.events << message_content + interaction.contents = message_content @callback.call interaction self end diff --git a/lib/pact/message/consumer/interaction_decorator.rb b/lib/pact/message/consumer/interaction_decorator.rb index ecea610..a531164 100644 --- a/lib/pact/message/consumer/interaction_decorator.rb +++ b/lib/pact/message/consumer/interaction_decorator.rb @@ -13,7 +13,7 @@ def initialize message, decorator_options = {} end def as_json options = {} - hash = { :description => message.description } + hash = { :description => message.descriptions.join(';') } hash[:providerStates] = provider_states hash[:contents] = extract_contents hash[:matchingRules] = extract_matching_rules @@ -36,7 +36,9 @@ def decorate_contents end def extract_contents - Pact::Reification.from_term(message.contents.contents) + message.events.map do |message_content| + Pact::Reification.from_term(message_content.contents) + end end def provider_states