pact_broker 1.1.0 → 1.2.0

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +8 -11
  4. data/lib/pact_broker/api.rb +2 -0
  5. data/lib/pact_broker/api/decorators/decorator_context.rb +8 -1
  6. data/lib/pact_broker/api/decorators/pact_decorator.rb +18 -3
  7. data/lib/pact_broker/api/decorators/pact_version_decorator.rb +39 -0
  8. data/lib/pact_broker/api/decorators/pact_versions_decorator.rb +48 -0
  9. data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +3 -3
  10. data/lib/pact_broker/api/decorators/webhook_decorator.rb +1 -1
  11. data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +1 -1
  12. data/lib/pact_broker/api/decorators/webhooks_decorator.rb +1 -1
  13. data/lib/pact_broker/api/pact_broker_urls.rb +16 -6
  14. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +35 -6
  15. data/lib/pact_broker/api/resources/base_resource.rb +80 -33
  16. data/lib/pact_broker/api/resources/group.rb +26 -24
  17. data/lib/pact_broker/api/resources/index.rb +52 -51
  18. data/lib/pact_broker/api/resources/latest_pact.rb +22 -22
  19. data/lib/pact_broker/api/resources/latest_pacts.rb +18 -17
  20. data/lib/pact_broker/api/resources/pact.rb +34 -39
  21. data/lib/pact_broker/api/resources/pact_versions.rb +35 -0
  22. data/lib/pact_broker/api/resources/pact_webhooks.rb +54 -61
  23. data/lib/pact_broker/api/resources/pacticipant.rb +40 -39
  24. data/lib/pact_broker/api/resources/pacticipant_resource_methods.rb +19 -0
  25. data/lib/pact_broker/api/resources/pacticipants.rb +52 -17
  26. data/lib/pact_broker/api/resources/relationships.rb +18 -17
  27. data/lib/pact_broker/api/resources/tag.rb +30 -29
  28. data/lib/pact_broker/api/resources/webhook.rb +29 -28
  29. data/lib/pact_broker/api/resources/webhook_execution.rb +0 -1
  30. data/lib/pact_broker/api/resources/webhook_resource_methods.rb +24 -0
  31. data/lib/pact_broker/api/resources/webhooks.rb +18 -17
  32. data/lib/pact_broker/app.rb +1 -0
  33. data/lib/pact_broker/configuration.rb +2 -2
  34. data/lib/pact_broker/doc/views/webhooks.markdown +1 -1
  35. data/lib/pact_broker/functions/find_potential_duplicate_pacticipant_names.rb +43 -0
  36. data/lib/pact_broker/locale/en.yml +7 -0
  37. data/lib/pact_broker/messages.rb +20 -1
  38. data/lib/pact_broker/models/pact.rb +8 -0
  39. data/lib/pact_broker/models/pacticipant.rb +9 -0
  40. data/lib/pact_broker/models/version.rb +1 -0
  41. data/lib/pact_broker/repositories/pact_repository.rb +6 -0
  42. data/lib/pact_broker/repositories/pacticipant_repository.rb +4 -0
  43. data/lib/pact_broker/repositories/webhook_repository.rb +2 -3
  44. data/lib/pact_broker/services/pact_service.rb +20 -0
  45. data/lib/pact_broker/services/pacticipant_service.rb +28 -0
  46. data/lib/pact_broker/services/webhook_service.rb +7 -2
  47. data/lib/pact_broker/version.rb +1 -1
  48. data/pact_broker.gemspec +1 -1
  49. data/public/stylesheets/github.css +1 -1
  50. data/public/stylesheets/pact.css +12 -0
  51. data/spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb +10 -0
  52. data/spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb +49 -0
  53. data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +9 -1
  54. data/spec/lib/pact_broker/api/resources/group_spec.rb +1 -1
  55. data/spec/lib/pact_broker/api/resources/latest_pact_spec.rb +1 -1
  56. data/spec/lib/pact_broker/api/resources/pact_spec.rb +35 -6
  57. data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +6 -4
  58. data/spec/lib/pact_broker/api/resources/pacticipants_spec.rb +91 -0
  59. data/spec/lib/pact_broker/configuration_spec.rb +3 -3
  60. data/spec/lib/pact_broker/functions/find_potential_duplicate_pacticipant_names_spec.rb +82 -0
  61. data/spec/lib/pact_broker/messages_spec.rb +31 -0
  62. data/spec/lib/pact_broker/models/pacticipant_spec.rb +32 -0
  63. data/spec/lib/pact_broker/repositories/pact_repository_spec.rb +29 -0
  64. data/spec/lib/pact_broker/repositories/pacticipant_repository_spec.rb +29 -0
  65. data/spec/lib/pact_broker/repositories/webhook_repository_spec.rb +7 -18
  66. data/spec/lib/pact_broker/services/pact_service_spec.rb +20 -0
  67. data/spec/lib/pact_broker/services/pacticipant_service_spec.rb +87 -2
  68. data/spec/support/provider_state_builder.rb +7 -7
  69. data/tasks/rspec.rake +1 -1
  70. metadata +27 -2
@@ -34,19 +34,10 @@ module PactBroker
34
34
  :consumer_id=> consumer.id,
35
35
  :provider_id=> provider.id } }
36
36
 
37
- before do
38
- allow(SecureRandom).to receive(:urlsafe_base64).and_return(uuid)
39
- end
40
-
41
37
  describe "#create" do
42
38
 
43
- subject { WebhookRepository.new.create webhook, consumer, provider }
44
-
39
+ subject { WebhookRepository.new.create uuid, webhook, consumer, provider }
45
40
 
46
- it "generates a UUID" do
47
- expect(SecureRandom).to receive(:urlsafe_base64)
48
- subject
49
- end
50
41
 
51
42
  it "saves webhook" do
52
43
  subject
@@ -67,9 +58,8 @@ module PactBroker
67
58
  describe "delete_by_uuid" do
68
59
 
69
60
  before do
70
- allow(SecureRandom).to receive(:urlsafe_base64).and_return(uuid, 'another-uuid')
71
- WebhookRepository.new.create webhook, consumer, provider
72
- WebhookRepository.new.create webhook, consumer, provider
61
+ WebhookRepository.new.create uuid, webhook, consumer, provider
62
+ WebhookRepository.new.create 'another-uuid', webhook, consumer, provider
73
63
  end
74
64
 
75
65
  subject { WebhookRepository.new.delete_by_uuid uuid }
@@ -91,7 +81,7 @@ module PactBroker
91
81
 
92
82
  before do
93
83
  allow(SecureRandom).to receive(:urlsafe_base64).and_return(uuid, 'another-uuid')
94
- WebhookRepository.new.create webhook, consumer, provider
84
+ WebhookRepository.new.create uuid, webhook, consumer, provider
95
85
  end
96
86
 
97
87
  context "when the pacticipant is the consumer" do
@@ -125,7 +115,7 @@ module PactBroker
125
115
 
126
116
  context "when a webhook is found" do
127
117
  before do
128
- WebhookRepository.new.create webhook, consumer, provider
118
+ WebhookRepository.new.create uuid, webhook, consumer, provider
129
119
  end
130
120
 
131
121
  it "returns a webhook with the consumer set" do
@@ -200,9 +190,8 @@ module PactBroker
200
190
 
201
191
  describe "find_all" do
202
192
  before do
203
- allow(SecureRandom).to receive(:urlsafe_base64).and_return(uuid, 'some-other-uuid')
204
- WebhookRepository.new.create webhook, consumer, provider
205
- WebhookRepository.new.create webhook, consumer, provider
193
+ WebhookRepository.new.create uuid, webhook, consumer, provider
194
+ WebhookRepository.new.create 'some-other-uuid', webhook, consumer, provider
206
195
  end
207
196
 
208
197
  subject { WebhookRepository.new.find_all }
@@ -6,6 +6,26 @@ module PactBroker
6
6
  module Services
7
7
  module PactService
8
8
 
9
+ describe "find_distinct_pacts_between" do
10
+ let(:pact_1) { double('pact 1', json_content: 'content 1')}
11
+ let(:pact_2) { double('pact 2', json_content: 'content 2')}
12
+ let(:pact_3) { double('pact 3', json_content: 'content 2')}
13
+ let(:pact_4) { double('pact 4', json_content: 'content 3')}
14
+
15
+ let(:all_pacts) { [pact_4, pact_3, pact_2, pact_1]}
16
+
17
+ before do
18
+ allow_any_instance_of(Repositories::PactRepository).to receive(:find_all_pacts_between).and_return(all_pacts)
19
+ end
20
+
21
+ subject { PactService.find_distinct_pacts_between 'consumer', :and => 'provider' }
22
+
23
+ it "returns the distinct pacts" do
24
+ expect(subject).to eq [pact_4, pact_2, pact_1]
25
+ end
26
+
27
+ end
28
+
9
29
  describe "#pact_has_changed_since_previous_version?" do
10
30
 
11
31
  let(:json_content) { { 'some' => 'json'}.to_json }
@@ -11,10 +11,95 @@ module PactBroker
11
11
 
12
12
  subject{ PacticipantService }
13
13
 
14
+ describe ".messages_for_potential_duplicate_pacticipants" do
15
+
16
+ let(:base_url) { 'http://example.org' }
17
+ let(:fred_duplicates) { [double('Frederich pacticipant')] }
18
+ let(:mary_dulicates) { [double('Marta pacticipant')] }
19
+
20
+ before do
21
+ allow(PacticipantService).to receive(:find_potential_duplicate_pacticipants).with("Fred").and_return(fred_duplicates)
22
+ allow(PacticipantService).to receive(:find_potential_duplicate_pacticipants).with("Mary").and_return(mary_dulicates)
23
+ allow(Messages).to receive(:potential_duplicate_pacticipant_message).and_return("message1", "message2")
24
+ end
25
+
26
+ subject { PacticipantService.messages_for_potential_duplicate_pacticipants ["Fred", "Mary"], base_url }
27
+
28
+ it "finds the potential duplicates for each name" do
29
+ expect(PacticipantService).to receive(:find_potential_duplicate_pacticipants).with("Fred")
30
+ expect(PacticipantService).to receive(:find_potential_duplicate_pacticipants).with("Mary")
31
+ subject
32
+ end
33
+
34
+ context "when there are potential duplicates" do
35
+
36
+ it "creates a message for each dupliate" do
37
+ expect(Messages).to receive(:potential_duplicate_pacticipant_message).with("Fred", fred_duplicates, base_url)
38
+ expect(Messages).to receive(:potential_duplicate_pacticipant_message).with("Mary", mary_dulicates, base_url)
39
+ subject
40
+ end
41
+
42
+ it "returns an array of messages" do
43
+ expect(subject).to eq ["message1", "message2"]
44
+ end
45
+ end
46
+
47
+ context "when there are no potential duplicates" do
48
+ let(:fred_duplicates) { [] }
49
+ let(:mary_dulicates) { [] }
50
+
51
+ it "returns an empty array" do
52
+ expect(subject).to eq []
53
+ end
54
+ end
55
+ end
56
+
57
+ describe ".find_potential_duplicate_pacticipants" do
58
+ let(:pacticipant_name) { 'pacticipant_name' }
59
+ let(:duplicates) { ["Fred", "Mary"] }
60
+ let(:pacticipant_names) { double("pacticipant_names") }
61
+ let(:fred) { double('fred pacticipant')}
62
+ let(:mary) { double('mary pacticipant')}
63
+ let(:pacticipant_repository) { instance_double(PactBroker::Repositories::PacticipantRepository)}
64
+
65
+ before do
66
+ allow(PactBroker::Functions::FindPotentialDuplicatePacticipantNames).to receive(:call).and_return(duplicates)
67
+ allow(PactBroker::Repositories::PacticipantRepository).to receive(:new).and_return(pacticipant_repository)
68
+ allow(pacticipant_repository).to receive(:pacticipant_names).and_return(pacticipant_names)
69
+ allow(pacticipant_repository).to receive(:find_by_name).with("Fred").and_return(fred)
70
+ allow(pacticipant_repository).to receive(:find_by_name).with("Mary").and_return(mary)
71
+ end
72
+
73
+ it "finds all the pacticipant names" do
74
+ expect(pacticipant_repository).to receive(:pacticipant_names)
75
+ subject.find_potential_duplicate_pacticipants pacticipant_name
76
+ end
77
+
78
+ it "calculates the duplicates" do
79
+ expect(PactBroker::Functions::FindPotentialDuplicatePacticipantNames).to receive(:call).with(pacticipant_name, pacticipant_names)
80
+ subject.find_potential_duplicate_pacticipants pacticipant_name
81
+ end
82
+
83
+ it "retrieves the pacticipants by name" do
84
+ expect(pacticipant_repository).to receive(:find_by_name).with("Fred")
85
+ expect(pacticipant_repository).to receive(:find_by_name).with("Mary")
86
+ subject.find_potential_duplicate_pacticipants pacticipant_name
87
+ end
88
+
89
+ it "returns the duplicate pacticipants" do
90
+ expect(subject.find_potential_duplicate_pacticipants(pacticipant_name)).to eq [fred, mary]
91
+ end
92
+
93
+ it "logs the names" do
94
+ expect(PactBroker.logger).to receive(:info).with(/pacticipant_name.*Fred, Mary/)
95
+ subject.find_potential_duplicate_pacticipants pacticipant_name
96
+ end
97
+ end
98
+
14
99
  describe ".find_relationships" do
15
100
 
16
- let(:consumer) { instance_double("PactBroker::Models::Pacticpant")}
17
- let(:provider) { instance_double("PactBroker::Models::Pacticpant")}
101
+ let(:consumer) { instance_double("PactBroker::Models::Pacticipant")}
102
+ let(:provider) { instance_double("PactBroker::Models::Pacticipant")}
18
103
  let(:pact) { instance_double("PactBroker::Models::Pact", consumer: consumer, provider: provider)}
19
104
  let(:pacts) { [pact]}
20
105
 
@@ -36,7 +36,7 @@ class ProviderStateBuilder
36
36
  end
37
37
 
38
38
  def create_ces_cps_pact
39
- @pact_id = pact_repository.create(version_id: @contract_email_service_version_id, provider_id: @contract_proposal_service_id, json_content: json_content).id
39
+ @pact_id = pact_repository.create(version_id: @contract_email_service_version_id, provider_id: @contract_proposal_service_id, json_content: default_json_content).id
40
40
  self
41
41
  end
42
42
 
@@ -56,7 +56,7 @@ class ProviderStateBuilder
56
56
  end
57
57
 
58
58
  def create_condor_pricing_service_pact
59
- @pact_id = pact_repository.create(version_id: @condor_version_id, provider_id: @pricing_service_id, json_content: json_content).id
59
+ @pact_id = pact_repository.create(version_id: @condor_version_id, provider_id: @pricing_service_id, json_content: default_json_content).id
60
60
  self
61
61
  end
62
62
 
@@ -114,14 +114,14 @@ class ProviderStateBuilder
114
114
  self
115
115
  end
116
116
 
117
- def create_pact
117
+ def create_pact json_content = default_json_content
118
118
  @pact = PactBroker::Models::Pact.create(consumer_version: @consumer_version, provider: @provider, json_content: json_content)
119
119
  self
120
120
  end
121
121
 
122
122
  def create_webhook
123
123
  request = PactBroker::Models::WebhookRequest.new(method: 'POST', url: 'http://example.org', headers: {'Content-Type' => 'application/json'})
124
- @webhook = WebhookRepository.new.create PactBroker::Models::Webhook.new(request: request), @consumer, @provider
124
+ @webhook = WebhookRepository.new.create PactBroker::Services::WebhookService.next_uuid, PactBroker::Models::Webhook.new(request: request), @consumer, @provider
125
125
  self
126
126
  end
127
127
 
@@ -136,11 +136,11 @@ class ProviderStateBuilder
136
136
  # end
137
137
 
138
138
  # def create_condor_pricing_service_pact version, provider
139
- # pact_repository.create(consumer_version: version, provider: provider, json_content: json_content)
139
+ # pact_repository.create(consumer_version: version, provider: provider, json_content: default_json_content)
140
140
  # end
141
141
 
142
- def json_content
143
- json_content = {
142
+ def default_json_content
143
+ {
144
144
  "consumer" => {
145
145
  "name" => "Condor"
146
146
  },
data/tasks/rspec.rake CHANGED
@@ -2,5 +2,5 @@ require 'rspec/core'
2
2
  require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec) do |task|
5
- task.pattern = FileList['spec/**/*_spec.rb']
5
+ task.pattern = 'spec/**/*_spec.rb'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-20 00:00:00.000000000 Z
13
+ date: 2014-09-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -131,6 +131,9 @@ dependencies:
131
131
  - - "~>"
132
132
  - !ruby/object:Gem::Version
133
133
  version: '1.3'
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 1.3.2
134
137
  type: :runtime
135
138
  prerelease: false
136
139
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,6 +141,9 @@ dependencies:
138
141
  - - "~>"
139
142
  - !ruby/object:Gem::Version
140
143
  version: '1.3'
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 1.3.2
141
147
  - !ruby/object:Gem::Dependency
142
148
  name: padrino
143
149
  requirement: !ruby/object:Gem::Requirement
@@ -326,6 +332,8 @@ files:
326
332
  - lib/pact_broker/api/decorators/pact_decorator.rb
327
333
  - lib/pact_broker/api/decorators/pact_details_decorator.rb
328
334
  - lib/pact_broker/api/decorators/pact_pacticipant_decorator.rb
335
+ - lib/pact_broker/api/decorators/pact_version_decorator.rb
336
+ - lib/pact_broker/api/decorators/pact_versions_decorator.rb
329
337
  - lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
330
338
  - lib/pact_broker/api/decorators/pacticipant_decorator.rb
331
339
  - lib/pact_broker/api/decorators/relationships_csv_decorator.rb
@@ -344,13 +352,16 @@ files:
344
352
  - lib/pact_broker/api/resources/latest_pact.rb
345
353
  - lib/pact_broker/api/resources/latest_pacts.rb
346
354
  - lib/pact_broker/api/resources/pact.rb
355
+ - lib/pact_broker/api/resources/pact_versions.rb
347
356
  - lib/pact_broker/api/resources/pact_webhooks.rb
348
357
  - lib/pact_broker/api/resources/pacticipant.rb
358
+ - lib/pact_broker/api/resources/pacticipant_resource_methods.rb
349
359
  - lib/pact_broker/api/resources/pacticipants.rb
350
360
  - lib/pact_broker/api/resources/relationships.rb
351
361
  - lib/pact_broker/api/resources/tag.rb
352
362
  - lib/pact_broker/api/resources/webhook.rb
353
363
  - lib/pact_broker/api/resources/webhook_execution.rb
364
+ - lib/pact_broker/api/resources/webhook_resource_methods.rb
354
365
  - lib/pact_broker/api/resources/webhooks.rb
355
366
  - lib/pact_broker/app.rb
356
367
  - lib/pact_broker/configuration.rb
@@ -361,6 +372,7 @@ files:
361
372
  - lib/pact_broker/doc/views/pacticipants.markdown
362
373
  - lib/pact_broker/doc/views/self.markdown
363
374
  - lib/pact_broker/doc/views/webhooks.markdown
375
+ - lib/pact_broker/functions/find_potential_duplicate_pacticipant_names.rb
364
376
  - lib/pact_broker/functions/groupify.rb
365
377
  - lib/pact_broker/jobs/after_pact_save.rb
366
378
  - lib/pact_broker/json.rb
@@ -431,12 +443,14 @@ files:
431
443
  - public/js/bootstrap.js
432
444
  - public/js/bootstrap.min.js
433
445
  - public/stylesheets/github.css
446
+ - public/stylesheets/pact.css
434
447
  - public/stylesheets/relationships.css
435
448
  - script/update-hal-browser
436
449
  - spec/fixtures/renderer_pact.json
437
450
  - spec/integration/endpoints/group.rb
438
451
  - spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
439
452
  - spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb
453
+ - spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb
440
454
  - spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb
441
455
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
442
456
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
@@ -450,18 +464,23 @@ files:
450
464
  - spec/lib/pact_broker/api/resources/pact_spec.rb
451
465
  - spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb
452
466
  - spec/lib/pact_broker/api/resources/pacticipant_spec.rb
467
+ - spec/lib/pact_broker/api/resources/pacticipants_spec.rb
453
468
  - spec/lib/pact_broker/api/resources/tag_spec.rb
454
469
  - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
455
470
  - spec/lib/pact_broker/api/resources/webhook_spec.rb
456
471
  - spec/lib/pact_broker/api/resources/webhooks_spec.rb
457
472
  - spec/lib/pact_broker/configuration_spec.rb
458
473
  - spec/lib/pact_broker/doc/controllers/app_spec.rb
474
+ - spec/lib/pact_broker/functions/find_potential_duplicate_pacticipant_names_spec.rb
459
475
  - spec/lib/pact_broker/functions/groupify_spec.rb
476
+ - spec/lib/pact_broker/messages_spec.rb
460
477
  - spec/lib/pact_broker/models/group_spec.rb
461
478
  - spec/lib/pact_broker/models/order_versions_spec.rb
479
+ - spec/lib/pact_broker/models/pacticipant_spec.rb
462
480
  - spec/lib/pact_broker/models/webhook_request_spec.rb
463
481
  - spec/lib/pact_broker/models/webhook_spec.rb
464
482
  - spec/lib/pact_broker/repositories/pact_repository_spec.rb
483
+ - spec/lib/pact_broker/repositories/pacticipant_repository_spec.rb
465
484
  - spec/lib/pact_broker/repositories/tag_repository_spec.rb
466
485
  - spec/lib/pact_broker/repositories/version_repository_spec.rb
467
486
  - spec/lib/pact_broker/repositories/webhook_repository_spec.rb
@@ -549,6 +568,7 @@ test_files:
549
568
  - spec/integration/endpoints/group.rb
550
569
  - spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
551
570
  - spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb
571
+ - spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb
552
572
  - spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb
553
573
  - spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb
554
574
  - spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
@@ -562,18 +582,23 @@ test_files:
562
582
  - spec/lib/pact_broker/api/resources/pact_spec.rb
563
583
  - spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb
564
584
  - spec/lib/pact_broker/api/resources/pacticipant_spec.rb
585
+ - spec/lib/pact_broker/api/resources/pacticipants_spec.rb
565
586
  - spec/lib/pact_broker/api/resources/tag_spec.rb
566
587
  - spec/lib/pact_broker/api/resources/webhook_execution_spec.rb
567
588
  - spec/lib/pact_broker/api/resources/webhook_spec.rb
568
589
  - spec/lib/pact_broker/api/resources/webhooks_spec.rb
569
590
  - spec/lib/pact_broker/configuration_spec.rb
570
591
  - spec/lib/pact_broker/doc/controllers/app_spec.rb
592
+ - spec/lib/pact_broker/functions/find_potential_duplicate_pacticipant_names_spec.rb
571
593
  - spec/lib/pact_broker/functions/groupify_spec.rb
594
+ - spec/lib/pact_broker/messages_spec.rb
572
595
  - spec/lib/pact_broker/models/group_spec.rb
573
596
  - spec/lib/pact_broker/models/order_versions_spec.rb
597
+ - spec/lib/pact_broker/models/pacticipant_spec.rb
574
598
  - spec/lib/pact_broker/models/webhook_request_spec.rb
575
599
  - spec/lib/pact_broker/models/webhook_spec.rb
576
600
  - spec/lib/pact_broker/repositories/pact_repository_spec.rb
601
+ - spec/lib/pact_broker/repositories/pacticipant_repository_spec.rb
577
602
  - spec/lib/pact_broker/repositories/tag_repository_spec.rb
578
603
  - spec/lib/pact_broker/repositories/version_repository_spec.rb
579
604
  - spec/lib/pact_broker/repositories/webhook_repository_spec.rb