pact_broker 1.3.1 → 1.3.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/README.md +12 -0
  4. data/db/migrations/07_increase_json_content_length.rb +3 -7
  5. data/db/migrations/15_add_value_to_tag.rb.wip +5 -0
  6. data/db/migrations/15_create_pact_version_content.rb +13 -0
  7. data/db/migrations/16_add_pact_content_foreign_key_to_pacts.rb +10 -0
  8. data/db/migrations/17_migrate_json_content_to_pact_version_content_table.rb +14 -0
  9. data/db/migrations/18_drop_json_content_column_from_pacts.rb +14 -0
  10. data/db/migrations/19_make_pact_version_content_sha_not_nullable.rb +10 -0
  11. data/db/migrations/20_add_pact_version_content_sha_to_all_pacts_view.rb +18 -0
  12. data/db/migrations/21_recreate_latest_pacts_view.rb +21 -0
  13. data/db/migrations/migration_helper.rb +15 -0
  14. data/db/pact_broker_database.sqlite3 +0 -0
  15. data/example/config.ru +5 -1
  16. data/example/pact_broker_database.sqlite3 +0 -0
  17. data/lib/pact_broker/api/decorators/pact_collection_decorator.rb +1 -1
  18. data/lib/pact_broker/api/decorators/pact_pacticipant_decorator.rb +1 -1
  19. data/lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb +1 -1
  20. data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +1 -1
  21. data/lib/pact_broker/api/decorators/relationships_csv_decorator.rb +1 -1
  22. data/lib/pact_broker/api/decorators/webhook_decorator.rb +2 -2
  23. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +1 -1
  24. data/lib/pact_broker/api/resources/pact.rb +8 -1
  25. data/lib/pact_broker/api/resources/pact_webhooks.rb +1 -1
  26. data/lib/pact_broker/api/resources/pacticipants.rb +2 -2
  27. data/lib/pact_broker/db/validate_encoding.rb +22 -0
  28. data/lib/pact_broker/doc/views/pacticipants.markdown +3 -1
  29. data/lib/pact_broker/domain.rb +5 -0
  30. data/lib/pact_broker/{models → domain}/group.rb +1 -1
  31. data/lib/pact_broker/{models → domain}/order_versions.rb +2 -2
  32. data/lib/pact_broker/{models → domain}/pact.rb +1 -1
  33. data/lib/pact_broker/{models → domain}/pacticipant.rb +1 -1
  34. data/lib/pact_broker/{models → domain}/relationship.rb +1 -1
  35. data/lib/pact_broker/{models → domain}/tag.rb +2 -2
  36. data/lib/pact_broker/{models → domain}/version.rb +3 -3
  37. data/lib/pact_broker/{models → domain}/webhook.rb +2 -2
  38. data/lib/pact_broker/{models → domain}/webhook_execution_result.rb +1 -1
  39. data/lib/pact_broker/{models → domain}/webhook_request.rb +3 -3
  40. data/lib/pact_broker/{models → domain}/webhook_request_header.rb +1 -1
  41. data/lib/pact_broker/functions/find_potential_duplicate_pacticipant_names.rb +1 -1
  42. data/lib/pact_broker/functions/groupify.rb +2 -2
  43. data/lib/pact_broker/locale/en.yml +1 -0
  44. data/lib/pact_broker/pacts/all_pacts.rb +82 -0
  45. data/lib/pact_broker/pacts/database_model.rb +35 -0
  46. data/lib/pact_broker/pacts/latest_pacts.rb +11 -0
  47. data/lib/pact_broker/pacts/pact_version_content.rb +11 -0
  48. data/lib/pact_broker/pacts/repository.rb +106 -0
  49. data/lib/pact_broker/repositories.rb +3 -3
  50. data/lib/pact_broker/repositories/pacticipant_repository.rb +6 -6
  51. data/lib/pact_broker/repositories/tag_repository.rb +3 -3
  52. data/lib/pact_broker/repositories/version_repository.rb +5 -5
  53. data/lib/pact_broker/repositories/webhook.rb +89 -0
  54. data/lib/pact_broker/repositories/webhook_repository.rb +9 -94
  55. data/lib/pact_broker/services/pact_service.rb +4 -0
  56. data/lib/pact_broker/services/pacticipant_service.rb +3 -3
  57. data/lib/pact_broker/ui.rb +7 -0
  58. data/lib/pact_broker/ui/controllers/clusters.rb +1 -1
  59. data/lib/pact_broker/ui/controllers/relationships.rb +1 -1
  60. data/lib/pact_broker/ui/view_models/relationship.rb +1 -1
  61. data/lib/pact_broker/ui/view_models/relationships.rb +12 -3
  62. data/lib/pact_broker/ui/views/relationships/show.haml +2 -0
  63. data/lib/pact_broker/version.rb +1 -1
  64. data/public/stylesheets/relationships.css +5 -0
  65. data/spec/features/create_webhook_spec.rb +77 -0
  66. data/spec/features/delete_pact_spec.rb +28 -0
  67. data/spec/features/publish_pact_spec.rb +58 -0
  68. data/spec/features/update_pacticipant_spec.rb +26 -0
  69. data/spec/fixtures/update_pacticipant.json +5 -0
  70. data/spec/fixtures/updated_pacticipant.json +11 -0
  71. data/spec/integration/app_spec.rb +1 -4
  72. data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +1 -1
  73. data/spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb +5 -5
  74. data/spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb +3 -3
  75. data/spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb +3 -3
  76. data/spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb +2 -2
  77. data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +6 -6
  78. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +2 -2
  79. data/spec/lib/pact_broker/api/decorators/webhook_request_decorator_spec.rb +2 -2
  80. data/spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb +1 -1
  81. data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +1 -1
  82. data/spec/lib/pact_broker/api/resources/pact_spec.rb +34 -1
  83. data/spec/lib/pact_broker/api/resources/pact_webhooks_spec.rb +3 -3
  84. data/spec/lib/pact_broker/api/resources/pacticipants_spec.rb +1 -1
  85. data/spec/lib/pact_broker/api/resources/tag_spec.rb +1 -1
  86. data/spec/lib/pact_broker/db/validate_encoding_spec.rb +66 -0
  87. data/spec/lib/pact_broker/{models → domain}/group_spec.rb +5 -5
  88. data/spec/lib/pact_broker/{models → domain}/order_versions_spec.rb +4 -4
  89. data/spec/lib/pact_broker/{models → domain}/pacticipant_spec.rb +2 -2
  90. data/spec/lib/pact_broker/{models → domain}/webhook_request_spec.rb +2 -2
  91. data/spec/lib/pact_broker/{models → domain}/webhook_spec.rb +3 -3
  92. data/spec/lib/pact_broker/functions/groupify_spec.rb +10 -10
  93. data/spec/lib/pact_broker/{repositories/pact_repository_spec.rb → pacts/repository_spec.rb} +128 -28
  94. data/spec/lib/pact_broker/repositories/webhook_repository_spec.rb +3 -3
  95. data/spec/lib/pact_broker/services/group_service_spec.rb +4 -4
  96. data/spec/lib/pact_broker/services/pact_service_spec.rb +4 -4
  97. data/spec/lib/pact_broker/services/pacticipant_service_spec.rb +11 -11
  98. data/spec/lib/pact_broker/services/webhook_service_spec.rb +5 -5
  99. data/spec/lib/pact_broker/ui/controllers/relationships_spec.rb +3 -3
  100. data/spec/lib/pact_broker/ui/view_models/relationship_spec.rb +8 -8
  101. data/spec/lib/pact_broker/ui/view_models/relationships_spec.rb +28 -5
  102. data/spec/support/provider_state_builder.rb +17 -17
  103. data/tasks/db.rake +1 -2
  104. metadata +59 -35
  105. data/lib/pact_broker/jobs/after_pact_save.rb +0 -13
  106. data/lib/pact_broker/models.rb +0 -5
  107. data/lib/pact_broker/repositories/pact.rb +0 -29
  108. data/lib/pact_broker/repositories/pact_repository.rb +0 -140
  109. data/spec/integration/endpoints/pact_put_spec.rb +0 -59
  110. data/spec/integration/endpoints/pact_webhooks_spec.rb +0 -96
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
- require 'pact_broker/models/group'
3
- require 'pact_broker/models/relationship'
2
+ require 'pact_broker/domain/group'
3
+ require 'pact_broker/domain/relationship'
4
4
 
5
5
  module PactBroker
6
- module Models
6
+ module Domain
7
7
  describe Group do
8
8
 
9
9
 
@@ -15,8 +15,8 @@ module PactBroker
15
15
  let(:provider_x) { double('provider x') }
16
16
  let(:provider_y) { double('provider y') }
17
17
 
18
- let(:relationship_1) { Models::Relationship.new(consumer_a, provider_x)}
19
- let(:relationship_2) { Models::Relationship.new(consumer_b, provider_y)}
18
+ let(:relationship_1) { Domain::Relationship.new(consumer_a, provider_x)}
19
+ let(:relationship_2) { Domain::Relationship.new(consumer_b, provider_y)}
20
20
 
21
21
  subject { Group.new(relatio)}
22
22
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
  require 'spec/support/provider_state_builder'
3
- require 'pact_broker/models/order_versions.rb'
3
+ require 'pact_broker/domain/order_versions.rb'
4
4
 
5
- describe PactBroker::Models::OrderVersions do
5
+ describe PactBroker::Domain::OrderVersions do
6
6
 
7
7
 
8
8
  before do
@@ -13,8 +13,8 @@ describe PactBroker::Models::OrderVersions do
13
13
  .create_condor_version('1.4.0')
14
14
  end
15
15
 
16
- let(:ordered_versions) { PactBroker::Models::Version.order(:order).all.collect(&:number) }
17
- let(:condor) { PactBroker::Models::Pacticipant.where(name: 'Condor').single_record }
16
+ let(:ordered_versions) { PactBroker::Domain::Version.order(:order).all.collect(&:number) }
17
+ let(:condor) { PactBroker::Domain::Pacticipant.where(name: 'Condor').single_record }
18
18
 
19
19
  it "orders the versions so they can be loaded from the database in order" do
20
20
  expect(ordered_versions).to eq(['1.3.0','1.4.0', '1.5.0'])
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
- require 'pact_broker/models/pacticipant'
2
+ require 'pact_broker/domain/pacticipant'
3
3
 
4
4
  module PactBroker
5
5
 
6
- module Models
6
+ module Domain
7
7
 
8
8
  describe Pacticipant do
9
9
 
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'pact_broker/models/webhook_request'
2
+ require 'pact_broker/domain/webhook_request'
3
3
  require 'webmock/rspec'
4
4
 
5
5
  module PactBroker
6
6
 
7
- module Models
7
+ module Domain
8
8
 
9
9
  describe WebhookRequest do
10
10
 
@@ -1,15 +1,15 @@
1
1
  require 'spec_helper'
2
- require 'pact_broker/models/webhook'
2
+ require 'pact_broker/domain/webhook'
3
3
 
4
4
  module PactBroker
5
5
 
6
- module Models
6
+ module Domain
7
7
 
8
8
  describe Webhook do
9
9
 
10
10
  let(:consumer) { Pacticipant.new(name: 'Consumer')}
11
11
  let(:provider) { Pacticipant.new(name: 'Provider')}
12
- let(:request) { instance_double(PactBroker::Models::WebhookRequest, execute: nil)}
12
+ let(:request) { instance_double(PactBroker::Domain::WebhookRequest, execute: nil)}
13
13
  subject { Webhook.new(request: request, consumer: consumer, provider: provider,) }
14
14
 
15
15
  describe "description" do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'pact_broker/functions/groupify'
3
- require 'pact_broker/models/relationship'
3
+ require 'pact_broker/domain/relationship'
4
4
 
5
5
  module PactBroker
6
6
 
@@ -24,23 +24,23 @@ module PactBroker
24
24
  let(:provider_z) { double('provider z', name: 'provider z') }
25
25
 
26
26
 
27
- let(:relationship_1) { Models::Relationship.new(consumer_a, provider_x) }
28
- let(:relationship_4) { Models::Relationship.new(consumer_a, provider_y) }
29
- let(:relationship_2) { Models::Relationship.new(consumer_b, provider_y) }
27
+ let(:relationship_1) { Domain::Relationship.new(consumer_a, provider_x) }
28
+ let(:relationship_4) { Domain::Relationship.new(consumer_a, provider_y) }
29
+ let(:relationship_2) { Domain::Relationship.new(consumer_b, provider_y) }
30
30
 
31
- let(:relationship_3) { Models::Relationship.new(consumer_c, provider_z) }
31
+ let(:relationship_3) { Domain::Relationship.new(consumer_c, provider_z) }
32
32
 
33
33
 
34
- let(:relationship_5) { Models::Relationship.new(consumer_l, provider_p) }
35
- let(:relationship_6) { Models::Relationship.new(consumer_m, provider_p) }
34
+ let(:relationship_5) { Domain::Relationship.new(consumer_l, provider_p) }
35
+ let(:relationship_6) { Domain::Relationship.new(consumer_m, provider_p) }
36
36
 
37
37
  let(:relationships) { [relationship_1, relationship_2, relationship_3, relationship_4, relationship_5, relationship_6 ]}
38
38
 
39
39
  it "separates the relationships into isolated groups" do
40
40
  groups = Groupify.call(relationships)
41
- expect(groups[0]).to eq(Models::Group.new(relationship_1, relationship_4, relationship_2))
42
- expect(groups[1]).to eq(Models::Group.new(relationship_3))
43
- expect(groups[2]).to eq(Models::Group.new(relationship_5, relationship_6))
41
+ expect(groups[0]).to eq(Domain::Group.new(relationship_1, relationship_4, relationship_2))
42
+ expect(groups[1]).to eq(Domain::Group.new(relationship_3))
43
+ expect(groups[2]).to eq(Domain::Group.new(relationship_5, relationship_6))
44
44
  end
45
45
 
46
46
  end
@@ -1,41 +1,77 @@
1
- require 'spec_helper'
1
+ require 'pact_broker/pacts/repository'
2
2
  require 'spec/support/provider_state_builder'
3
+ require 'pact_broker/pacts/pact_params'
3
4
 
4
5
  module PactBroker
5
- module Repositories
6
- describe PactRepository do
6
+ module Pacts
7
+ describe Repository do
8
+
9
+ let(:consumer_name) { 'Consumer' }
10
+ let(:provider_name) { 'Provider' }
7
11
 
8
12
  describe "create" do
9
- let(:consumer) { PacticipantRepository.new.create name: 'Consumer' }
10
- let(:provider) { PacticipantRepository.new.create name: 'Provider' }
11
- let(:version) { VersionRepository.new.create number: '1.2.3', pacticipant_id: consumer.id }
13
+ let(:consumer) { Repositories::PacticipantRepository.new.create name: 'Consumer' }
14
+ let(:provider) { Repositories::PacticipantRepository.new.create name: 'Provider' }
15
+ let(:version) { Repositories::VersionRepository.new.create number: '1.2.3', pacticipant_id: consumer.id }
12
16
  let(:json_content) { {some: 'json'}.to_json }
13
17
 
14
- subject { PactRepository.new.create version_id: version.id, provider_id: provider.id, json_content: json_content}
18
+ subject { Repository.new.create version_id: version.id, provider_id: provider.id, json_content: json_content }
15
19
 
16
20
  it "saves the pact" do
17
- expect{subject}.to change{ Pact.count }.by(1)
21
+ expect{subject}.to change{ DatabaseModel.count }.by(1)
18
22
  end
19
23
 
20
24
  it "returns a Pact::Model" do
21
- expect(subject).to be_instance_of(PactBroker::Models::Pact)
25
+ expect(subject).to be_instance_of(PactBroker::Domain::Pact)
22
26
  end
23
27
 
24
28
  it "sets all the Pact::Model attributes" do
25
29
  expect(subject.consumer).to eq consumer
26
30
  expect(subject.provider).to eq provider
27
31
  expect(subject.consumer_version_number).to eq '1.2.3'
28
- expect(subject.consumer_version).to eq version
32
+ expect(subject.consumer_version.number).to eq '1.2.3'
29
33
  expect(subject.json_content).to eq json_content
30
34
  expect(subject.created_at).to be_instance_of(DateTime)
31
35
  expect(subject.updated_at).to be_instance_of(DateTime)
32
36
  end
37
+
38
+ context "when a pact already exists with the same content" do
39
+ let(:another_version) { Repositories::VersionRepository.new.create number: '2.0.0', pacticipant_id: consumer.id }
40
+
41
+ before do
42
+ Repository.new.create version_id: version.id, provider_id: provider.id, json_content: json_content
43
+ end
44
+
45
+ subject do
46
+ Repository.new.create version_id: another_version.id, provider_id: provider.id, json_content: json_content
47
+ end
48
+
49
+ it "reuses the same PactVersionContent to save room" do
50
+ expect { subject }.to change{ PactVersionContent.count }.by(0)
51
+ end
52
+ end
53
+
54
+ context "when a pact already exists with different content" do
55
+ let(:another_version) { Repositories::VersionRepository.new.create number: '2.0.0', pacticipant_id: consumer.id }
56
+
57
+ before do
58
+ Repository.new.create version_id: version.id, provider_id: provider.id, json_content: {some_other: 'json_content'}.to_json
59
+ end
60
+
61
+ subject do
62
+ Repository.new.create version_id: another_version.id, provider_id: provider.id, json_content: json_content
63
+ end
64
+
65
+ it "creates a new PactVersionContent" do
66
+ expect { subject }.to change{ PactVersionContent.count }.by(1)
67
+ end
68
+ end
33
69
  end
34
70
 
35
71
  describe "update" do
36
72
 
37
73
  let(:existing_pact) do
38
- ProviderStateBuilder.new.create_pact_with_hierarchy "A Consumer", "1.2.3", "A Provider"
74
+ ProviderStateBuilder.new.create_pact_with_hierarchy "A Consumer", "1.2.3", "A Provider", original_json_content
39
75
  end
40
76
 
41
77
  before do
@@ -44,17 +80,23 @@ module PactBroker
44
80
  .update(
45
81
  created_at: created_at,
46
82
  updated_at: updated_at)
83
+ ::DB::PACT_BROKER_DB[:pact_version_contents]
84
+ .update(
85
+ created_at: created_at,
86
+ updated_at: updated_at)
47
87
  end
48
88
 
49
89
  let(:created_at) { DateTime.new(2014, 3, 2) }
50
90
  let(:updated_at) { DateTime.new(2014, 3, 4) }
51
91
 
52
- let(:json_content) { {some: 'json'}.to_json }
92
+ let(:original_json_content) { {some: 'json'}.to_json }
93
+ let(:json_content) { {some_other: 'json'}.to_json }
53
94
 
54
- subject { PactRepository.new.update existing_pact.id, json_content: json_content }
55
95
 
56
96
  context "when the attributes have changed" do
57
97
 
98
+ subject { Repository.new.update existing_pact.id, json_content: json_content }
99
+
58
100
  it "updates the existing content" do
59
101
  expect(subject.json_content).to eq json_content
60
102
  end
@@ -69,29 +111,52 @@ module PactBroker
69
111
 
70
112
  end
71
113
 
72
- context "when the attributes have not changed" do
73
- before do
74
- ::DB::PACT_BROKER_DB[:pacts]
75
- .where(id: existing_pact.id)
76
- .update(
77
- json_content: json_content)
114
+ context "when the content has not changed" do
115
+
116
+ subject { Repository.new.update existing_pact.id, json_content: original_json_content }
117
+
118
+ it "the json_content is the same" do
119
+ expect(subject.json_content).to eq original_json_content
78
120
  end
79
121
 
80
- it "does not update the updated_at timestamp" do
122
+ it "does not update the timestamp" do
81
123
  expect(subject.updated_at).to eq updated_at
82
124
  end
83
125
 
84
126
  it "does not update the created_at timestamp" do
85
127
  expect(subject.created_at).to eq created_at
86
128
  end
129
+ end
130
+ end
131
+
132
+ describe "delete" do
133
+ before do
134
+ ProviderStateBuilder.new
135
+ .create_consumer(consumer_name)
136
+ .create_consumer_version("1.2.3")
137
+ .create_provider(provider_name)
138
+ .create_pact
139
+ .create_consumer_version("2.3.4")
140
+ .create_pact
141
+ .create_provider("Another Provider")
142
+ .create_pact
143
+ end
144
+
145
+ let(:pact_params) { PactBroker::Pacts::PactParams.new(consumer_name: consumer_name, provider_name: provider_name, consumer_version_number: '1.2.3') }
87
146
 
147
+ subject { Repository.new.delete pact_params }
148
+
149
+ it "deletes the Pact" do
150
+ expect { subject }.to change { DatabaseModel.count }.by(-1)
151
+ end
152
+
153
+ it "does not delete the content because it may be used by another pact" do
154
+ expect { subject }.to change { PactVersionContent.count }.by(0)
88
155
  end
89
156
 
90
157
  end
91
158
 
92
159
  describe "#find_all_pacts_between" do
93
- let(:consumer_name) { 'Consumer' }
94
- let(:provider_name) { 'Provider' }
95
160
 
96
161
  before do
97
162
  ProviderStateBuilder.new
@@ -101,12 +166,13 @@ module PactBroker
101
166
  .create_pact
102
167
  .create_consumer_version("2.3.4")
103
168
  .create_consumer_version_tag("prod")
169
+ .create_consumer_version_tag("branch")
104
170
  .create_pact
105
171
  .create_provider("Another Provider")
106
172
  .create_pact
107
173
  end
108
174
 
109
- subject { PactRepository.new.find_all_pacts_between consumer_name, :and => provider_name }
175
+ subject { Repository.new.find_all_pacts_between consumer_name, :and => provider_name }
110
176
 
111
177
  it "returns the pacts between the specified consumer and provider" do
112
178
  expect(subject.size).to eq 2
@@ -114,8 +180,38 @@ module PactBroker
114
180
  expect(subject.first.provider.name).to eq provider_name
115
181
  expect(subject.first.consumer_version.number).to eq "2.3.4"
116
182
  expect(subject.first.consumer_version.tags.first.name).to eq "prod"
183
+ expect(subject.first.consumer_version.tags.last.name).to eq "branch"
184
+ end
185
+
186
+ end
187
+
188
+ describe "find_pact" do
189
+ before do
190
+ ProviderStateBuilder.new
191
+ .create_consumer("Consumer")
192
+ .create_consumer_version("1.2.2")
193
+ .create_provider("Provider")
194
+ .create_pact
195
+ .create_consumer_version("1.2.4")
196
+ .create_consumer_version_tag("prod")
197
+ .create_pact
198
+ .create_consumer_version("1.2.6")
199
+ .create_pact
200
+ .create_provider("Another Provider")
201
+ .create_consumer_version("1.2.5")
202
+ .create_pact
117
203
  end
118
204
 
205
+ subject { Repository.new.find_pact "Consumer", "1.2.4", "Provider" }
206
+
207
+ it "finds the pact with the given version" do
208
+ expect(subject.consumer.name).to eq "Consumer"
209
+ expect(subject.provider.name).to eq "Provider"
210
+ expect(subject.consumer_version_number).to eq "1.2.4"
211
+ expect(subject.consumer_version.number).to eq "1.2.4"
212
+ expect(subject.consumer_version.tags.first.name).to eq "prod"
213
+ expect(subject.json_content).to_not be_nil
214
+ end
119
215
  end
120
216
 
121
217
  describe "find_previous_pact" do
@@ -134,9 +230,9 @@ module PactBroker
134
230
  .create_pact
135
231
  end
136
232
 
137
- let(:pact) { PactRepository.new.find_latest_pact "Consumer", "Provider" }
233
+ let(:pact) { Repository.new.find_latest_pact "Consumer", "Provider" }
138
234
 
139
- subject { PactRepository.new.find_previous_pact pact }
235
+ subject { Repository.new.find_previous_pact pact }
140
236
 
141
237
  it "finds the previous pact" do
142
238
  expect(subject.consumer_version_number).to eq "1.2.4"
@@ -159,12 +255,16 @@ module PactBroker
159
255
  .create_pact
160
256
  end
161
257
 
162
- let(:latest_prod_pact) { PactRepository.new.find_latest_pact("Consumer", "Provider", "prod") }
258
+ let(:latest_prod_pact) { Repository.new.find_latest_pact("Consumer", "Provider", "prod") }
163
259
 
164
260
  it "returns the pact for the latest tagged version" do
165
261
  expect(latest_prod_pact.consumer_version.number).to eq("1.2.3")
166
262
  end
167
263
 
264
+ it "has JSON content" do
265
+ expect(latest_prod_pact.json_content).to_not be nil
266
+ end
267
+
168
268
  it "has timestamps" do
169
269
  expect(latest_prod_pact.created_at).to be_instance_of(DateTime)
170
270
  expect(latest_prod_pact.updated_at).to be_instance_of(DateTime)
@@ -193,7 +293,7 @@ module PactBroker
193
293
  end
194
294
 
195
295
  it "finds the latest pact for each consumer/provider pair" do
196
- pacts = PactRepository.new.find_latest_pacts
296
+ pacts = Repository.new.find_latest_pacts
197
297
 
198
298
  expect(pacts[0].consumer_version.pacticipant.name).to eq("Condor")
199
299
  expect(pacts[0].consumer.name).to eq("Condor")
@@ -209,7 +309,7 @@ module PactBroker
209
309
  end
210
310
 
211
311
  it "includes the timestamps - need to update view" do
212
- pacts = PactRepository.new.find_latest_pacts
312
+ pacts = Repository.new.find_latest_pacts
213
313
 
214
314
  expect(pacts[0].updated_at).to be_instance_of DateTime
215
315
  expect(pacts[0].created_at).to be_instance_of DateTime
@@ -9,7 +9,7 @@ module PactBroker
9
9
  let(:body) { {'some' => 'json' } }
10
10
  let(:headers) { {'Content-Type' => 'application/json', 'Accept' => 'application/json'} }
11
11
  let(:request) do
12
- Models::WebhookRequest.new(
12
+ Domain::WebhookRequest.new(
13
13
  method: 'post',
14
14
  url: url,
15
15
  headers: headers,
@@ -17,7 +17,7 @@ module PactBroker
17
17
  password: 'password',
18
18
  body: body)
19
19
  end
20
- let(:webhook) { Models::Webhook.new(request: request)}
20
+ let(:webhook) { Domain::Webhook.new(request: request)}
21
21
  let(:test_data_builder) { ProviderStateBuilder.new }
22
22
  let(:consumer) { test_data_builder.create_pacticipant 'Consumer'; test_data_builder.pacticipant}
23
23
  let(:provider) { test_data_builder.create_pacticipant 'Provider'; test_data_builder.pacticipant}
@@ -198,7 +198,7 @@ module PactBroker
198
198
 
199
199
  it "returns a list of webhooks" do
200
200
  expect(subject.size).to be 2
201
- expect(subject.first).to be_instance_of Models::Webhook
201
+ expect(subject.first).to be_instance_of Domain::Webhook
202
202
  end
203
203
  end
204
204
 
@@ -15,11 +15,11 @@ module PactBroker
15
15
  let(:provider_x) { double('provider x', name: 'provider x', id: 3)}
16
16
  let(:provider_y) { double('provider y', name: 'provider y', id: 4)}
17
17
 
18
- let(:relationship_1) { Models::Relationship.new(consumer_a, provider_x) }
19
- let(:relationship_2) { Models::Relationship.new(consumer_b, provider_y) }
18
+ let(:relationship_1) { Domain::Relationship.new(consumer_a, provider_x) }
19
+ let(:relationship_2) { Domain::Relationship.new(consumer_b, provider_y) }
20
20
 
21
- let(:group_1) { Models::Group.new(relationship_1) }
22
- let(:group_2) { Models::Group.new(relationship_2) }
21
+ let(:group_1) { Domain::Group.new(relationship_1) }
22
+ let(:group_2) { Domain::Group.new(relationship_2) }
23
23
 
24
24
  let(:relationship_list) { double('relationship list') }
25
25
  let(:groups) { [group_1, group_2]}