Skip to content

Commit d21e709

Browse files
committed
feat: add _ids to interactions added via the TestDataBuilder
1 parent 2b2a3f8 commit d21e709

File tree

3 files changed

+32
-64
lines changed

3 files changed

+32
-64
lines changed

lib/pact_broker/test/test_data_builder.rb

+22-54
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require 'pact_broker/domain/webhook_execution_result'
77
require 'pact_broker/pacts/repository'
88
require 'pact_broker/pacts/service'
9+
require 'pact_broker/pacts/content'
910
require 'pact_broker/pacticipants/repository'
1011
require 'pact_broker/pacticipants/service'
1112
require 'pact_broker/versions/repository'
@@ -52,64 +53,22 @@ def comment *args
5253
end
5354

5455
def create_pricing_service
55-
@pricing_service_id = pacticipant_repository.create(:name => 'Pricing Service', :repository_url => 'git@git.realestate.com.au:business-systems/pricing-service').save(raise_on_save_failure: true).id
56+
create_provider("Pricing Service", :repository_url => 'git@git.realestate.com.au:business-systems/pricing-service')
5657
self
5758
end
5859

5960
def create_contract_proposal_service
60-
@contract_proposal_service_id = pacticipant_repository.create(:name => 'Contract Proposal Service', :repository_url => 'git@git.realestate.com.au:business-systems/contract-proposal-service').save(raise_on_save_failure: true).id
61-
self
62-
end
63-
64-
def create_contract_proposal_service_version number
65-
@contract_proposal_service_version_id = version_repository.create(number: number, pacticipant_id: @contract_proposal_service_id).id
61+
create_provider("Contract Proposal Service", :repository_url => 'git@git.realestate.com.au:business-systems/contract-proposal-service')
6662
self
6763
end
6864

6965
def create_contract_email_service
70-
@contract_email_service_id = pacticipant_repository.create(:name => 'Contract Email Service', :repository_url => 'git@git.realestate.com.au:business-systems/contract-email-service').save(raise_on_save_failure: true).id
71-
self
72-
end
73-
74-
def create_contract_email_service_version number
75-
@contract_email_service_version_id = version_repository.create(number: number, pacticipant_id: @contract_email_service_id).id
76-
self
77-
end
78-
79-
def create_ces_cps_pact
80-
@pact_id = pact_repository.create(
81-
version_id: @contract_email_service_version_id,
82-
consumer_id: @contract_email_service_id,
83-
provider_id: @contract_proposal_service_id,
84-
json_content: default_json_content,
85-
pact_version_sha: PactBroker.configuration.sha_generator.call(default_json_content)
86-
).id
66+
create_consumer("Contract Email Service", :repository_url => 'git@git.realestate.com.au:business-systems/contract-email-service')
8767
self
8868
end
8969

9070
def create_condor
91-
@condor_id = pacticipant_repository.create(:name => 'Condor').save(raise_on_save_failure: true).id
92-
self
93-
end
94-
95-
def create_condor_version number
96-
@condor_version_id = version_repository.create(number: number, pacticipant_id: @condor_id).id
97-
self
98-
end
99-
100-
def create_pricing_service_version number
101-
@pricing_service_version_id = version_repository.create(number: number, pacticipant_id: @pricing_service_id).id
102-
self
103-
end
104-
105-
def create_condor_pricing_service_pact
106-
@pact_id = pact_repository.create(
107-
version_id: @condor_version_id,
108-
consumer_id: @condor_id,
109-
provider_id: @pricing_service_id,
110-
json_content: default_json_content,
111-
pact_version_sha: PactBroker.configuration.sha_generator.call(default_json_content)
112-
).id
71+
create_consumer("Condor")
11372
self
11473
end
11574

@@ -136,13 +95,13 @@ def create_tag_with_hierarchy pacticipant_name, pacticipant_version, tag_name
13695

13796
def create_pacticipant pacticipant_name, params = {}
13897
params.delete(:comment)
139-
@pacticipant = PactBroker::Domain::Pacticipant.create(:name => pacticipant_name)
98+
@pacticipant = PactBroker::Domain::Pacticipant.create({ :name => pacticipant_name }.merge(params))
14099
self
141100
end
142101

143102
def create_consumer consumer_name = "Consumer #{model_counter}", params = {}
144103
params.delete(:comment)
145-
create_pacticipant consumer_name
104+
create_pacticipant consumer_name, params
146105
@consumer = @pacticipant
147106
self
148107
end
@@ -155,7 +114,7 @@ def use_consumer consumer_name, params = {}
155114

156115
def create_provider provider_name = "Provider #{model_counter}", params = {}
157116
params.delete(:comment)
158-
create_pacticipant provider_name
117+
create_pacticipant provider_name, params
159118
@provider = @pacticipant
160119
self
161120
end
@@ -227,13 +186,13 @@ def create_label label_name
227186
def create_pact params = {}
228187
params.delete(:comment)
229188
json_content = params[:json_content] || default_json_content
230-
pact_version_sha = params[:pact_version_sha] || PactBroker.configuration.sha_generator.call(json_content)
189+
pact_version_sha = params[:pact_version_sha] || generate_pact_version_sha(json_content)
231190
@pact = PactBroker::Pacts::Repository.new.create(
232191
version_id: @consumer_version.id,
233192
consumer_id: @consumer.id,
234193
provider_id: @provider.id,
235-
json_content: json_content,
236-
pact_version_sha: pact_version_sha
194+
pact_version_sha: pact_version_sha,
195+
json_content: prepare_json_content(json_content),
237196
)
238197
set_created_at_if_set params[:created_at], :pact_publications, {id: @pact.id}
239198
set_created_at_if_set params[:created_at], :pact_versions, {sha: @pact.pact_version_sha}
@@ -250,9 +209,9 @@ def republish_same_pact params = {}
250209

251210
def revise_pact json_content = nil
252211
json_content = json_content ? json_content : {random: rand}.to_json
253-
pact_version_sha = PactBroker.configuration.sha_generator.call(json_content)
212+
pact_version_sha = generate_pact_version_sha(json_content)
254213
@pact = PactBroker::Pacts::Repository.new.update(@pact.id,
255-
json_content: json_content,
214+
json_content: prepare_json_content(json_content),
256215
pact_version_sha: pact_version_sha
257216
)
258217
self
@@ -362,6 +321,15 @@ def and_return instance_variable_name
362321

363322
private
364323

324+
# Remember! This must be called before adding the IDs
325+
def generate_pact_version_sha json_content
326+
PactBroker.configuration.sha_generator.call(json_content)
327+
end
328+
329+
def prepare_json_content(json_content)
330+
PactBroker::Pacts::Content.from_json(json_content).with_ids.to_json
331+
end
332+
365333
def set_created_at_if_set created_at, table_name, selector
366334
if created_at
367335
Sequel::Model.db[table_name].where(selector.keys.first => selector.values.first).update(created_at: created_at)

spec/lib/pact_broker/domain/order_versions_spec.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
before do
1212
TestDataBuilder.new
1313
.create_condor
14-
.create_condor_version('1.5.0')
15-
.create_condor_version('1.4.0')
16-
.create_condor_version('1.3.0')
17-
.create_condor_version('1.6.0')
14+
.create_consumer_version('1.5.0')
15+
.create_consumer_version('1.4.0')
16+
.create_consumer_version('1.3.0')
17+
.create_consumer_version('1.6.0')
1818
end
1919

2020
let(:ordered_versions) { PactBroker::Domain::Version.order(:order).all.collect(&:number) }

spec/service_consumers/provider_states_for_pact_broker_client.rb

+6-6
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@
134134

135135
provider_state "the 'Pricing Service' already exists in the pact-broker" do
136136
set_up do
137-
TestDataBuilder.new.create_pricing_service.create_pricing_service_version("1.3.0")
137+
TestDataBuilder.new.create_pricing_service.create_provider_version("1.3.0")
138138
end
139139
end
140140

@@ -149,9 +149,9 @@
149149
set_up do
150150
TestDataBuilder.new
151151
.create_condor
152-
.create_condor_version('1.3.0')
152+
.create_consumer_version('1.3.0')
153153
.create_pricing_service
154-
.create_condor_pricing_service_pact
154+
.create_pact
155155
end
156156
end
157157

@@ -163,9 +163,9 @@
163163
set_up do
164164
TestDataBuilder.new
165165
.create_condor
166-
.create_condor_version('1.3.0')
166+
.create_consumer_version('1.3.0')
167167
.create_pricing_service
168-
.create_condor_pricing_service_pact
168+
.create_pact
169169
end
170170
end
171171

@@ -177,7 +177,7 @@
177177

178178
provider_state "'Condor' exists in the pact-broker" do
179179
set_up do
180-
TestDataBuilder.new.create_condor.create_condor_version('1.3.0')
180+
TestDataBuilder.new.create_condor.create_consumer_version('1.3.0')
181181
end
182182
end
183183

0 commit comments

Comments
 (0)