6
6
require 'pact_broker/domain/webhook_execution_result'
7
7
require 'pact_broker/pacts/repository'
8
8
require 'pact_broker/pacts/service'
9
+ require 'pact_broker/pacts/content'
9
10
require 'pact_broker/pacticipants/repository'
10
11
require 'pact_broker/pacticipants/service'
11
12
require 'pact_broker/versions/repository'
@@ -52,64 +53,22 @@ def comment *args
52
53
end
53
54
54
55
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' )
56
57
self
57
58
end
58
59
59
60
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' )
66
62
self
67
63
end
68
64
69
65
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' )
87
67
self
88
68
end
89
69
90
70
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" )
113
72
self
114
73
end
115
74
@@ -136,13 +95,13 @@ def create_tag_with_hierarchy pacticipant_name, pacticipant_version, tag_name
136
95
137
96
def create_pacticipant pacticipant_name , params = { }
138
97
params . delete ( :comment )
139
- @pacticipant = PactBroker ::Domain ::Pacticipant . create ( :name => pacticipant_name )
98
+ @pacticipant = PactBroker ::Domain ::Pacticipant . create ( { :name => pacticipant_name } . merge ( params ) )
140
99
self
141
100
end
142
101
143
102
def create_consumer consumer_name = "Consumer #{ model_counter } " , params = { }
144
103
params . delete ( :comment )
145
- create_pacticipant consumer_name
104
+ create_pacticipant consumer_name , params
146
105
@consumer = @pacticipant
147
106
self
148
107
end
@@ -155,7 +114,7 @@ def use_consumer consumer_name, params = {}
155
114
156
115
def create_provider provider_name = "Provider #{ model_counter } " , params = { }
157
116
params . delete ( :comment )
158
- create_pacticipant provider_name
117
+ create_pacticipant provider_name , params
159
118
@provider = @pacticipant
160
119
self
161
120
end
@@ -227,13 +186,13 @@ def create_label label_name
227
186
def create_pact params = { }
228
187
params . delete ( :comment )
229
188
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 )
231
190
@pact = PactBroker ::Pacts ::Repository . new . create (
232
191
version_id : @consumer_version . id ,
233
192
consumer_id : @consumer . id ,
234
193
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 ) ,
237
196
)
238
197
set_created_at_if_set params [ :created_at ] , :pact_publications , { id : @pact . id }
239
198
set_created_at_if_set params [ :created_at ] , :pact_versions , { sha : @pact . pact_version_sha }
@@ -250,9 +209,9 @@ def republish_same_pact params = {}
250
209
251
210
def revise_pact json_content = nil
252
211
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 )
254
213
@pact = PactBroker ::Pacts ::Repository . new . update ( @pact . id ,
255
- json_content : json_content ,
214
+ json_content : prepare_json_content ( json_content ) ,
256
215
pact_version_sha : pact_version_sha
257
216
)
258
217
self
@@ -362,6 +321,15 @@ def and_return instance_variable_name
362
321
363
322
private
364
323
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
+
365
333
def set_created_at_if_set created_at , table_name , selector
366
334
if created_at
367
335
Sequel ::Model . db [ table_name ] . where ( selector . keys . first => selector . values . first ) . update ( created_at : created_at )
0 commit comments