pact_broker 2.24.0 → 2.25.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +38 -0
- data/CONTRIBUTING.md +2 -2
- data/DEVELOPER_DOCUMENTATION.md +31 -27
- data/DEVELOPER_SETUP.md +3 -2
- data/config/database.yml +10 -0
- data/db/ddl_statements.rb +3 -0
- data/db/ddl_statements/head_matrix_v001.rb +31 -0
- data/db/ddl_statements/head_matrix_v002.rb +31 -0
- data/db/ddl_statements/latest_verification_ids_for_pact_versions_v001.rb +4 -0
- data/db/migrations/000028_create_all_pact_publications.rb +4 -1
- data/db/migrations/20180311_optimise_head_matrix.rb +5 -34
- data/db/migrations/20180523_create_latest_verifications_for_consumer_version_tags.rb +2 -0
- data/db/migrations/20180612_add_pacticipant_ids_to_verifications.rb +17 -0
- data/db/migrations/20180613_migrate_pacticipant_ids_for_verifications.rb +7 -0
- data/db/migrations/20180614_update_latest_verification_ids_for_consumer_and_provider.rb +27 -0
- data/db/migrations/20180615_add_consumer_id_to_pact_publications.rb +13 -0
- data/db/migrations/20180616_migrate_consumer_ids_for_pact_publications.rb +11 -0
- data/db/migrations/20180720_create_latest_pact_publication_ids.rb +25 -0
- data/db/migrations/20180721_migrate_latest_pact_publication_ids.rb +11 -0
- data/db/migrations/20180722_recreate_views.rb +43 -0
- data/db/migrations/20180723_create_latest_verification_ids.rb +23 -0
- data/db/migrations/20180724_migrate_latest_verification_ids.rb +18 -0
- data/db/migrations/20180726_recreate_views.rb +29 -0
- data/db/migrations/20180727_recreate_latest_verification_ids_for_consumer_version_tags.rb +34 -0
- data/db/migrations/20180728_truncate_materialized_matrix_tables.rb +20 -0
- data/db/migrations/20180729_create_latest_verification_ids_for_provider_versions.rb +8 -0
- data/db/migrations/20180730_create_latest_verifications_for_provider_versions.rb +33 -0
- data/db/migrations/20180731_update_head_matrix.rb +11 -0
- data/db/pact_broker_database.sqlite3 +0 -0
- data/lib/pact_broker/api.rb +3 -3
- data/lib/pact_broker/api/decorators/dashboard_text_decorator.rb +2 -2
- data/lib/pact_broker/api/pact_broker_urls.rb +1 -1
- data/lib/pact_broker/api/resources/base_resource.rb +0 -7
- data/lib/pact_broker/api/resources/index.rb +11 -9
- data/lib/pact_broker/api/resources/pact.rb +1 -3
- data/lib/pact_broker/api/resources/pacticipant.rb +1 -3
- data/lib/pact_broker/api/resources/tag.rb +1 -4
- data/lib/pact_broker/api/resources/verification.rb +2 -0
- data/lib/pact_broker/api/resources/version.rb +1 -3
- data/lib/pact_broker/app.rb +8 -0
- data/lib/pact_broker/certificates/certificate.rb +12 -0
- data/lib/pact_broker/config/setting.rb +12 -0
- data/lib/pact_broker/configuration.rb +2 -1
- data/lib/pact_broker/db.rb +6 -0
- data/lib/pact_broker/db/clean.rb +2 -7
- data/lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications.rb +29 -0
- data/lib/pact_broker/db/data_migrations/set_pacticipant_ids_for_verifications.rb +35 -0
- data/lib/pact_broker/db/migrate_data.rb +14 -0
- data/lib/pact_broker/doc/views/wip-provider-pacts.markdown +3 -0
- data/lib/pact_broker/domain/label.rb +12 -0
- data/lib/pact_broker/domain/pacticipant.rb +32 -1
- data/lib/pact_broker/domain/tag.rb +14 -1
- data/lib/pact_broker/domain/verification.rb +29 -0
- data/lib/pact_broker/domain/version.rb +25 -1
- data/lib/pact_broker/feature_toggle.rb +23 -0
- data/lib/pact_broker/index/service.rb +1 -0
- data/lib/pact_broker/matrix/head_row.rb +25 -20
- data/lib/pact_broker/matrix/repository.rb +0 -18
- data/lib/pact_broker/matrix/row.rb +24 -27
- data/lib/pact_broker/matrix/service.rb +0 -8
- data/lib/pact_broker/pacts/all_pact_publications.rb +15 -0
- data/lib/pact_broker/pacts/latest_pact_publication_id_by_consumer_version.rb +34 -0
- data/lib/pact_broker/pacts/latest_pact_publications.rb +15 -0
- data/lib/pact_broker/pacts/latest_pact_publications_by_consumer_version.rb +15 -0
- data/lib/pact_broker/pacts/latest_tagged_pact_publications.rb +16 -0
- data/lib/pact_broker/pacts/pact_publication.rb +24 -0
- data/lib/pact_broker/pacts/pact_version.rb +20 -0
- data/lib/pact_broker/pacts/repository.rb +37 -11
- data/lib/pact_broker/pacts/service.rb +9 -2
- data/lib/pact_broker/repositories/helpers.rb +20 -0
- data/lib/pact_broker/tags/tag_with_latest_flag.rb +8 -0
- data/lib/pact_broker/ui/view_models/index_item.rb +5 -1
- data/lib/pact_broker/ui/views/index/show.haml +1 -1
- data/lib/pact_broker/verifications/all_verifications.rb +13 -0
- data/lib/pact_broker/verifications/latest_verification_for_consumer_and_provider.rb +18 -0
- data/lib/pact_broker/verifications/latest_verification_for_consumer_version_tag.rb +19 -0
- data/lib/pact_broker/verifications/latest_verification_for_pact_version.rb +22 -0
- data/lib/pact_broker/verifications/latest_verification_id_for_pact_version_and_provider_version.rb +36 -0
- data/lib/pact_broker/verifications/repository.rb +23 -5
- data/lib/pact_broker/verifications/sequence.rb +4 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/execution.rb +16 -0
- data/lib/pact_broker/webhooks/latest_triggered_webhook.rb +14 -0
- data/lib/pact_broker/webhooks/triggered_webhook.rb +27 -0
- data/lib/pact_broker/webhooks/webhook.rb +26 -0
- data/lib/pact_broker/webhooks/webhook_event.rb +13 -0
- data/pact_broker.gemspec +1 -0
- data/script/recreate-docker-pg-db.sh +20 -0
- data/script/recreate-mysql-db.sh +1 -0
- data/spec/integration/webhooks/certificate_spec.rb +1 -1
- data/spec/lib/pact_broker/db/clean_spec.rb +1 -1
- data/spec/lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications_spec.rb +40 -0
- data/spec/lib/pact_broker/feature_toggle_spec.rb +74 -0
- data/spec/lib/pact_broker/matrix/head_row_spec.rb +0 -44
- data/spec/lib/pact_broker/matrix/repository_spec.rb +0 -20
- data/spec/lib/pact_broker/matrix/row_spec.rb +0 -56
- data/spec/lib/pact_broker/pacts/repository_spec.rb +61 -9
- data/spec/lib/pact_broker/pacts/service_spec.rb +65 -17
- data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +3 -2
- data/spec/migrations/44_add_provider_version_to_verification_spec.rb +0 -1
- data/spec/service_consumers/provider_states_for_pact_ruby.rb +14 -0
- data/spec/support/test_data_builder.rb +0 -18
- data/tasks/database/annotate.rb +40 -0
- data/tasks/db.rake +12 -0
- metadata +50 -3
- data/lib/pact_broker/verifications/latest_verifications_by_consumer_version.rb +0 -15
@@ -10,14 +10,6 @@ module PactBroker
|
|
10
10
|
extend PactBroker::Repositories
|
11
11
|
extend PactBroker::Services
|
12
12
|
|
13
|
-
def refresh params, &block
|
14
|
-
matrix_repository.refresh(params, &block)
|
15
|
-
end
|
16
|
-
|
17
|
-
def refresh_tags params, &block
|
18
|
-
matrix_repository.refresh_tags(params, &block)
|
19
|
-
end
|
20
|
-
|
21
13
|
def find selectors, options = {}
|
22
14
|
query_results = matrix_repository.find selectors, options
|
23
15
|
pacticipant_names = selectors.collect{ | s| s[:pacticipant_name] }
|
@@ -120,3 +120,18 @@ module PactBroker
|
|
120
120
|
|
121
121
|
end
|
122
122
|
end
|
123
|
+
|
124
|
+
# Table: all_pact_publications
|
125
|
+
# Columns:
|
126
|
+
# id | integer |
|
127
|
+
# consumer_id | integer |
|
128
|
+
# consumer_name | text |
|
129
|
+
# consumer_version_id | integer |
|
130
|
+
# consumer_version_number | text |
|
131
|
+
# consumer_version_order | integer |
|
132
|
+
# provider_id | integer |
|
133
|
+
# provider_name | text |
|
134
|
+
# revision_number | integer |
|
135
|
+
# pact_version_id | integer |
|
136
|
+
# pact_version_sha | text |
|
137
|
+
# created_at | timestamp without time zone |
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'pact_broker/pacts/all_pact_publications'
|
2
|
+
require 'pact_broker/repositories/helpers'
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Pacts
|
6
|
+
class LatestPactPublicationIdForConsumerVersion < Sequel::Model(:latest_pact_publication_ids_for_consumer_versions)
|
7
|
+
|
8
|
+
unrestrict_primary_key
|
9
|
+
|
10
|
+
dataset_module do
|
11
|
+
include PactBroker::Repositories::Helpers
|
12
|
+
end
|
13
|
+
|
14
|
+
def upsert
|
15
|
+
self.class.upsert(to_hash, [:provider_id, :consumer_version_id])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Table: latest_pact_publications_by_consumer_versions
|
22
|
+
# Columns:
|
23
|
+
# id | integer |
|
24
|
+
# consumer_id | integer |
|
25
|
+
# consumer_name | text |
|
26
|
+
# consumer_version_id | integer |
|
27
|
+
# consumer_version_number | text |
|
28
|
+
# consumer_version_order | integer |
|
29
|
+
# provider_id | integer |
|
30
|
+
# provider_name | text |
|
31
|
+
# revision_number | integer |
|
32
|
+
# pact_version_id | integer |
|
33
|
+
# pact_version_sha | text |
|
34
|
+
# created_at | timestamp without time zone |
|
@@ -9,3 +9,18 @@ module PactBroker
|
|
9
9
|
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
# Table: latest_pact_publications
|
14
|
+
# Columns:
|
15
|
+
# id | integer |
|
16
|
+
# consumer_id | integer |
|
17
|
+
# consumer_name | text |
|
18
|
+
# consumer_version_id | integer |
|
19
|
+
# consumer_version_number | text |
|
20
|
+
# consumer_version_order | integer |
|
21
|
+
# provider_id | integer |
|
22
|
+
# provider_name | text |
|
23
|
+
# revision_number | integer |
|
24
|
+
# pact_version_id | integer |
|
25
|
+
# pact_version_sha | text |
|
26
|
+
# created_at | timestamp without time zone |
|
@@ -9,3 +9,18 @@ module PactBroker
|
|
9
9
|
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
# Table: latest_pact_publications_by_consumer_versions
|
14
|
+
# Columns:
|
15
|
+
# id | integer |
|
16
|
+
# consumer_id | integer |
|
17
|
+
# consumer_name | text |
|
18
|
+
# consumer_version_id | integer |
|
19
|
+
# consumer_version_number | text |
|
20
|
+
# consumer_version_order | integer |
|
21
|
+
# provider_id | integer |
|
22
|
+
# provider_name | text |
|
23
|
+
# revision_number | integer |
|
24
|
+
# pact_version_id | integer |
|
25
|
+
# pact_version_sha | text |
|
26
|
+
# created_at | timestamp without time zone |
|
@@ -9,3 +9,19 @@ module PactBroker
|
|
9
9
|
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
# Table: latest_tagged_pact_publications
|
14
|
+
# Columns:
|
15
|
+
# id | integer |
|
16
|
+
# consumer_id | integer |
|
17
|
+
# consumer_name | text |
|
18
|
+
# consumer_version_id | integer |
|
19
|
+
# consumer_version_number | text |
|
20
|
+
# consumer_version_order | integer |
|
21
|
+
# provider_id | integer |
|
22
|
+
# provider_name | text |
|
23
|
+
# revision_number | integer |
|
24
|
+
# pact_version_id | integer |
|
25
|
+
# pact_version_sha | text |
|
26
|
+
# created_at | timestamp without time zone |
|
27
|
+
# tag_name | text |
|
@@ -61,3 +61,27 @@ module PactBroker
|
|
61
61
|
PactPublication.plugin :timestamps, update_on_create: true
|
62
62
|
end
|
63
63
|
end
|
64
|
+
|
65
|
+
# Table: pact_publications
|
66
|
+
# Columns:
|
67
|
+
# id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
|
68
|
+
# consumer_version_id | integer | NOT NULL
|
69
|
+
# provider_id | integer | NOT NULL
|
70
|
+
# revision_number | integer | NOT NULL
|
71
|
+
# pact_version_id | integer | NOT NULL
|
72
|
+
# created_at | timestamp without time zone | NOT NULL
|
73
|
+
# consumer_id | integer |
|
74
|
+
# Indexes:
|
75
|
+
# pact_publications_pkey | PRIMARY KEY btree (id)
|
76
|
+
# cv_prov_revision_unq | UNIQUE btree (consumer_version_id, provider_id, revision_number)
|
77
|
+
# cv_prov_id_ndx | btree (consumer_version_id, provider_id, id)
|
78
|
+
# pact_publications_consumer_id_index | btree (consumer_id)
|
79
|
+
# Foreign key constraints:
|
80
|
+
# pact_publications_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id)
|
81
|
+
# pact_publications_consumer_version_id_fkey | (consumer_version_id) REFERENCES versions(id)
|
82
|
+
# pact_publications_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id)
|
83
|
+
# pact_publications_provider_id_fkey | (provider_id) REFERENCES pacticipants(id)
|
84
|
+
# Referenced By:
|
85
|
+
# webhook_executions | webhook_executions_pact_publication_id_fkey | (pact_publication_id) REFERENCES pact_publications(id)
|
86
|
+
# triggered_webhooks | triggered_webhooks_pact_publication_id_fkey | (pact_publication_id) REFERENCES pact_publications(id)
|
87
|
+
# latest_pact_publication_ids_for_consumer_versions | latest_pact_publication_ids_for_consum_pact_publication_id_fkey | (pact_publication_id) REFERENCES pact_publications(id) ON DELETE CASCADE
|
@@ -48,3 +48,23 @@ module PactBroker
|
|
48
48
|
PactVersion.plugin :timestamps
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
# Table: pact_versions
|
53
|
+
# Columns:
|
54
|
+
# id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
|
55
|
+
# consumer_id | integer | NOT NULL
|
56
|
+
# provider_id | integer | NOT NULL
|
57
|
+
# sha | text | NOT NULL
|
58
|
+
# content | text |
|
59
|
+
# created_at | timestamp without time zone | NOT NULL
|
60
|
+
# Indexes:
|
61
|
+
# pact_versions_pkey | PRIMARY KEY btree (id)
|
62
|
+
# unq_pvc_con_prov_sha | UNIQUE btree (consumer_id, provider_id, sha)
|
63
|
+
# Foreign key constraints:
|
64
|
+
# pact_versions_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id)
|
65
|
+
# pact_versions_provider_id_fkey | (provider_id) REFERENCES pacticipants(id)
|
66
|
+
# Referenced By:
|
67
|
+
# pact_publications | pact_publications_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id)
|
68
|
+
# verifications | verifications_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id)
|
69
|
+
# latest_pact_publication_ids_for_consumer_versions | latest_pact_publication_ids_for_consumer_v_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id) ON DELETE CASCADE
|
70
|
+
# latest_verification_id_for_pact_version_and_provider_version | latest_v_id_for_pv_and_pv_pact_version_id_fk | (pact_version_id) REFERENCES pact_versions(id) ON DELETE CASCADE
|
@@ -11,6 +11,7 @@ require 'pact/shared/json_differ'
|
|
11
11
|
require 'pact_broker/domain'
|
12
12
|
require 'pact_broker/pacts/parse'
|
13
13
|
require 'pact_broker/matrix/head_row'
|
14
|
+
require 'pact_broker/pacts/latest_pact_publication_id_by_consumer_version'
|
14
15
|
|
15
16
|
module PactBroker
|
16
17
|
module Pacts
|
@@ -20,28 +21,46 @@ module PactBroker
|
|
20
21
|
include PactBroker::Repositories
|
21
22
|
|
22
23
|
def create params
|
23
|
-
PactPublication.new(
|
24
|
+
pact_publication = PactPublication.new(
|
24
25
|
consumer_version_id: params[:version_id],
|
25
26
|
provider_id: params[:provider_id],
|
27
|
+
consumer_id: params[:consumer_id],
|
26
28
|
pact_version: find_or_create_pact_version(params.fetch(:consumer_id), params.fetch(:provider_id), params[:json_content]),
|
27
|
-
).save
|
29
|
+
).save
|
30
|
+
update_latest_pact_publication_ids(pact_publication)
|
31
|
+
pact_publication.to_domain
|
28
32
|
end
|
29
33
|
|
30
34
|
def update id, params
|
31
35
|
existing_model = PactPublication.find(id: id)
|
32
36
|
pact_version = find_or_create_pact_version(existing_model.consumer_version.pacticipant_id, existing_model.provider_id, params[:json_content])
|
33
37
|
if existing_model.pact_version_id != pact_version.id
|
34
|
-
PactPublication.new(
|
38
|
+
pact_publication = PactPublication.new(
|
35
39
|
consumer_version_id: existing_model.consumer_version_id,
|
40
|
+
consumer_id: existing_model.consumer_id,
|
36
41
|
provider_id: existing_model.provider_id,
|
37
42
|
revision_number: (existing_model.revision_number + 1),
|
38
43
|
pact_version: pact_version,
|
39
|
-
).save
|
44
|
+
).save
|
45
|
+
update_latest_pact_publication_ids(pact_publication)
|
46
|
+
pact_publication.to_domain
|
40
47
|
else
|
41
48
|
existing_model.to_domain
|
42
49
|
end
|
43
50
|
end
|
44
51
|
|
52
|
+
def update_latest_pact_publication_ids(pact_publication)
|
53
|
+
params = {
|
54
|
+
consumer_version_id: pact_publication.consumer_version_id,
|
55
|
+
provider_id: pact_publication.provider_id,
|
56
|
+
pact_publication_id: pact_publication.id,
|
57
|
+
consumer_id: pact_publication.consumer_id,
|
58
|
+
pact_version_id: pact_publication.pact_version_id
|
59
|
+
}
|
60
|
+
|
61
|
+
LatestPactPublicationIdForConsumerVersion.new(params).upsert
|
62
|
+
end
|
63
|
+
|
45
64
|
def delete params
|
46
65
|
id = AllPactPublications
|
47
66
|
.consumer(params.consumer_name)
|
@@ -168,13 +187,20 @@ module PactBroker
|
|
168
187
|
.order(:consumer_version_order, :revision_number).collect(&:to_domain_with_content)
|
169
188
|
end
|
170
189
|
|
171
|
-
def find_previous_pact pact
|
172
|
-
LatestPactPublicationsByConsumerVersion
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
190
|
+
def find_previous_pact pact, tag = nil
|
191
|
+
query = LatestPactPublicationsByConsumerVersion
|
192
|
+
.eager(:tags)
|
193
|
+
.consumer(pact.consumer.name)
|
194
|
+
.provider(pact.provider.name)
|
195
|
+
|
196
|
+
if tag == :untagged
|
197
|
+
query = query.untagged
|
198
|
+
elsif tag
|
199
|
+
query = query.tag(tag)
|
200
|
+
end
|
201
|
+
|
202
|
+
query.consumer_version_order_before(pact.consumer_version.order)
|
203
|
+
.latest.collect(&:to_domain_with_content)[0]
|
178
204
|
end
|
179
205
|
|
180
206
|
def find_next_pact pact
|
@@ -104,8 +104,7 @@ module PactBroker
|
|
104
104
|
|
105
105
|
# TODO also take into account overridden revisions
|
106
106
|
def pact_is_new_or_pact_has_changed_since_previous_version? pact
|
107
|
-
previous_pact
|
108
|
-
previous_pact.nil? || pact.json_content != previous_pact.json_content
|
107
|
+
find_previous_pacts(pact).any? { |previous_pact| previous_pact.nil? || pact.json_content != previous_pact.json_content}
|
109
108
|
end
|
110
109
|
|
111
110
|
private
|
@@ -140,6 +139,14 @@ module PactBroker
|
|
140
139
|
logger.debug "Pact has not changed since previous version, not triggering webhooks"
|
141
140
|
end
|
142
141
|
end
|
142
|
+
|
143
|
+
def find_previous_pacts pact
|
144
|
+
if pact.consumer_version_tag_names.any?
|
145
|
+
pact.consumer_version_tag_names.map { |tag| pact_repository.find_previous_pact(pact, tag) }
|
146
|
+
else
|
147
|
+
[pact_repository.find_previous_pact(pact, :untagged)]
|
148
|
+
end
|
149
|
+
end
|
143
150
|
end
|
144
151
|
end
|
145
152
|
end
|
@@ -20,6 +20,10 @@ module PactBroker
|
|
20
20
|
Sequel::Model.db.adapter_scheme.to_s =~ /mysql/
|
21
21
|
end
|
22
22
|
|
23
|
+
def postgres?
|
24
|
+
Sequel::Model.db.adapter_scheme.to_s == "postgres"
|
25
|
+
end
|
26
|
+
|
23
27
|
def select_all_qualified
|
24
28
|
select(Sequel[model.table_name].*)
|
25
29
|
end
|
@@ -31,6 +35,22 @@ module PactBroker
|
|
31
35
|
select(column)
|
32
36
|
end
|
33
37
|
end
|
38
|
+
|
39
|
+
def upsert row, key_names
|
40
|
+
if postgres?
|
41
|
+
insert_conflict(update: row, target: key_names).insert(row)
|
42
|
+
elsif mysql?
|
43
|
+
on_duplicate_key_update.insert(row)
|
44
|
+
else
|
45
|
+
# Sqlite
|
46
|
+
key = row.reject{ |k, v| !key_names.include?(k) }
|
47
|
+
if where(key).count == 0
|
48
|
+
insert(row)
|
49
|
+
else
|
50
|
+
where(key).update(row)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
34
54
|
end
|
35
55
|
end
|
36
56
|
end
|
@@ -16,3 +16,11 @@ module PactBroker
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
# Table: tags_with_latest_flag
|
21
|
+
# Columns:
|
22
|
+
# name | text |
|
23
|
+
# version_id | integer |
|
24
|
+
# created_at | timestamp without time zone |
|
25
|
+
# updated_at | timestamp without time zone |
|
26
|
+
# latest | integer |
|
@@ -50,10 +50,14 @@ module PactBroker
|
|
50
50
|
Helpers::URLHelper.group_url provider_name
|
51
51
|
end
|
52
52
|
|
53
|
-
def
|
53
|
+
def latest_pact_url
|
54
54
|
"#{pactigration_base_url('', @relationship)}/latest"
|
55
55
|
end
|
56
56
|
|
57
|
+
def pact_url
|
58
|
+
PactBroker::Api::PactBrokerUrls.pact_url('', @relationship)
|
59
|
+
end
|
60
|
+
|
57
61
|
def pact_matrix_url
|
58
62
|
Helpers::URLHelper.matrix_url consumer_name, provider_name
|
59
63
|
end
|
@@ -44,7 +44,7 @@
|
|
44
44
|
= index_item.consumer_name
|
45
45
|
%td.pact
|
46
46
|
%span.pact
|
47
|
-
%a{ href: index_item.
|
47
|
+
%a{ href: index_item.latest_pact_url, :title => "View pact" }
|
48
48
|
%span.pact-matrix
|
49
49
|
%a{ href: index_item.pact_matrix_url, title: "View pact matrix" }
|
50
50
|
%td.provider
|
@@ -10,3 +10,16 @@ module PactBroker
|
|
10
10
|
|
11
11
|
end
|
12
12
|
end
|
13
|
+
|
14
|
+
# Table: all_verifications
|
15
|
+
# Columns:
|
16
|
+
# id | integer |
|
17
|
+
# number | integer |
|
18
|
+
# success | boolean |
|
19
|
+
# provider_version_id | integer |
|
20
|
+
# provider_version_number | text |
|
21
|
+
# provider_version_order | integer |
|
22
|
+
# build_url | text |
|
23
|
+
# pact_version_id | integer |
|
24
|
+
# execution_date | timestamp without time zone |
|
25
|
+
# created_at | timestamp without time zone |
|
@@ -24,3 +24,21 @@ module PactBroker
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
# Table: latest_verifications_for_consumer_and_provider
|
29
|
+
# Columns:
|
30
|
+
# consumer_id | integer |
|
31
|
+
# provider_id | integer |
|
32
|
+
# pact_version_sha | text |
|
33
|
+
# provider_version_number | text |
|
34
|
+
# provider_version_order | integer |
|
35
|
+
# id | integer |
|
36
|
+
# number | integer |
|
37
|
+
# success | boolean |
|
38
|
+
# provider_version | text |
|
39
|
+
# build_url | text |
|
40
|
+
# pact_version_id | integer |
|
41
|
+
# execution_date | timestamp without time zone |
|
42
|
+
# created_at | timestamp without time zone |
|
43
|
+
# provider_version_id | integer |
|
44
|
+
# test_results | text |
|
@@ -21,3 +21,22 @@ module PactBroker
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
# Table: latest_verifications_for_consumer_version_tags
|
26
|
+
# Columns:
|
27
|
+
# consumer_id | integer |
|
28
|
+
# provider_id | integer |
|
29
|
+
# consumer_version_tag_name | text |
|
30
|
+
# pact_version_sha | text |
|
31
|
+
# provider_version_number | text |
|
32
|
+
# provider_version_order | integer |
|
33
|
+
# id | integer |
|
34
|
+
# number | integer |
|
35
|
+
# success | boolean |
|
36
|
+
# provider_version | text |
|
37
|
+
# build_url | text |
|
38
|
+
# pact_version_id | integer |
|
39
|
+
# execution_date | timestamp without time zone |
|
40
|
+
# created_at | timestamp without time zone |
|
41
|
+
# provider_version_id | integer |
|
42
|
+
# test_results | text |
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'pact_broker/domain/verification'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Verifications
|
5
|
+
class LatestVerificationForPactVersion < PactBroker::Domain::Verification
|
6
|
+
set_dataset(:latest_verifications_for_pact_versions)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# Table: latest_verifications_for_pact_versions
|
12
|
+
# Columns:
|
13
|
+
# id | integer |
|
14
|
+
# number | integer |
|
15
|
+
# success | boolean |
|
16
|
+
# build_url | text |
|
17
|
+
# pact_version_id | integer |
|
18
|
+
# execution_date | timestamp without time zone |
|
19
|
+
# created_at | timestamp without time zone |
|
20
|
+
# provider_version_id | integer |
|
21
|
+
# provider_version_number | text |
|
22
|
+
# provider_version_order | integer |
|