pact_broker 2.65.0 → 2.66.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/db/ddl_statements/latest_triggered_webhooks.rb +66 -0
  4. data/db/migrations/20180119_update_latest_triggered_webhooks.rb +5 -39
  5. data/db/migrations/20200930_update_latest_triggered_webhooks.rb +15 -0
  6. data/db/migrations/migration_helper.rb +10 -2
  7. data/lib/pact_broker/api/decorators/decorator_context.rb +2 -2
  8. data/lib/pact_broker/api/decorators/pagination_links.rb +34 -0
  9. data/lib/pact_broker/api/decorators/versions_decorator.rb +5 -1
  10. data/lib/pact_broker/api/pact_broker_urls.rb +8 -0
  11. data/lib/pact_broker/api/resources/index.rb +1 -1
  12. data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +11 -1
  13. data/lib/pact_broker/api/resources/versions.rb +12 -1
  14. data/lib/pact_broker/db/clean.rb +100 -43
  15. data/lib/pact_broker/doc/views/pacticipant/versions.markdown +9 -0
  16. data/lib/pact_broker/domain/pacticipant.rb +4 -0
  17. data/lib/pact_broker/domain/tag.rb +2 -0
  18. data/lib/pact_broker/domain/version.rb +1 -0
  19. data/lib/pact_broker/feature_toggle.rb +8 -4
  20. data/lib/pact_broker/matrix/service.rb +3 -0
  21. data/lib/pact_broker/pacticipants/repository.rb +6 -5
  22. data/lib/pact_broker/pacticipants/service.rb +5 -18
  23. data/lib/pact_broker/pacts/latest_tagged_pact_publications.rb +15 -1
  24. data/lib/pact_broker/tags/repository.rb +2 -5
  25. data/lib/pact_broker/test/test_data_builder.rb +22 -2
  26. data/lib/pact_broker/ui/views/matrix/show.haml +8 -0
  27. data/lib/pact_broker/version.rb +1 -1
  28. data/spec/features/get_versions_spec.rb +8 -0
  29. data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +14 -9
  30. data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +10 -4
  31. data/spec/lib/pact_broker/db/clean_spec.rb +72 -4
  32. data/spec/lib/pact_broker/feature_toggle_spec.rb +9 -1
  33. data/spec/lib/pact_broker/pacticipants/repository_spec.rb +8 -1
  34. data/spec/lib/pact_broker/pacts/latest_tagged_pact_publications_spec.rb +99 -0
  35. data/spec/lib/pact_broker/webhooks/repository_spec.rb +20 -0
  36. metadata +8 -2
@@ -7,7 +7,9 @@ module PactBroker
7
7
  allow(ENV).to receive(:[]).and_call_original
8
8
  end
9
9
 
10
- subject { FeatureToggle.enabled?(:foo) }
10
+ let(:ignore_env) { false }
11
+
12
+ subject { FeatureToggle.enabled?(:foo, ignore_env) }
11
13
 
12
14
  context "when RACK_ENV is not production" do
13
15
  before do
@@ -28,6 +30,12 @@ module PactBroker
28
30
  end
29
31
 
30
32
  it { is_expected.to be true }
33
+
34
+ context "when ignore env is set" do
35
+ let(:ignore_env) { true }
36
+
37
+ it { is_expected.to be false }
38
+ end
31
39
  end
32
40
  end
33
41
 
@@ -154,8 +154,15 @@ module PactBroker
154
154
  it "returns all the application versions for the given consumer" do
155
155
  expect(subject.collect(&:number)).to eq ["4.5.6", "1.2.3"]
156
156
  end
157
- end
158
157
 
158
+ context "with pagination options" do
159
+ subject { Repository.new.find_all_pacticipant_versions_in_reverse_order "Foo", page_number: 1, page_size: 1 }
160
+
161
+ it "paginates the query" do
162
+ expect(subject.collect(&:number)).to eq ["4.5.6"]
163
+ end
164
+ end
165
+ end
159
166
  end
160
167
  end
161
168
  end
@@ -0,0 +1,99 @@
1
+ require 'pact_broker/pacts/latest_tagged_pact_publications'
2
+
3
+ module PactBroker
4
+ module Pacts
5
+ describe LatestTaggedPactPublications do
6
+ subject { LatestTaggedPactPublications.for_selector(selector).order(:consumer_name, :consumer_version_order) }
7
+
8
+ context "for latest for a specified tag" do
9
+ before do
10
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
11
+ .create_consumer_version_tag("dev")
12
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
13
+ .create_consumer_version_tag("dev")
14
+ .create_pact_with_hierarchy("Foo", "3", "Bar")
15
+ .create_consumer_version_tag("prod")
16
+ end
17
+
18
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: "dev", latest: true) }
19
+
20
+ it "returns matching rows" do
21
+ expect(subject.count).to eq 1
22
+ expect(subject.first.consumer_version_number).to eq "2"
23
+ end
24
+ end
25
+
26
+ context "for latest for a specified tag and consumer" do
27
+ before do
28
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
29
+ .create_consumer_version_tag("dev")
30
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
31
+ .create_consumer_version_tag("dev")
32
+ .create_pact_with_hierarchy("Foo2", "3", "Bar")
33
+ .create_consumer_version_tag("dev")
34
+ end
35
+
36
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: "dev", latest: true, pacticipant_name: "Foo") }
37
+
38
+ it "returns matching rows" do
39
+ expect(subject.count).to eq 1
40
+ expect(subject.first.consumer_version_number).to eq "2"
41
+ end
42
+ end
43
+
44
+ context "for all for a specified tag" do
45
+ before do
46
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
47
+ .create_consumer_version_tag("dev")
48
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
49
+ .create_consumer_version_tag("dev")
50
+ .create_pact_with_hierarchy("Foo", "3", "Bar")
51
+ .create_consumer_version_tag("prod")
52
+ end
53
+
54
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: "dev") }
55
+
56
+ it "returns matching rows (which are only the latest)" do
57
+ expect(subject.count).to eq 1
58
+ expect(subject.first.consumer_version_number).to eq "2"
59
+ end
60
+ end
61
+
62
+ context "for latest for any tag" do
63
+ before do
64
+ td.create_pact_with_hierarchy("Foo", "1", "Bar")
65
+ .create_consumer_version_tag("dev")
66
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
67
+ .create_consumer_version_tag("dev")
68
+ .create_pact_with_hierarchy("Foo", "3", "Bar")
69
+ .create_consumer_version_tag("prod")
70
+ end
71
+
72
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: true, latest: true) }
73
+
74
+ it "returns matching rows" do
75
+ expect(subject.count).to eq 2
76
+ expect(subject.first.consumer_version_number).to eq "2"
77
+ end
78
+ end
79
+
80
+ context "for latest for any tag with a max age" do
81
+ before do
82
+ td.subtract_days(7)
83
+ .create_pact_with_hierarchy("Foo", "1", "Bar")
84
+ .create_consumer_version_tag("prod")
85
+ .add_days(4)
86
+ .create_pact_with_hierarchy("Foo", "2", "Bar")
87
+ .create_consumer_version_tag("dev")
88
+ end
89
+
90
+ let(:selector) { PactBroker::Matrix::UnresolvedSelector.new(tag: true, latest: true, max_age: 3) }
91
+
92
+ it "returns matching rows" do
93
+ expect(subject.count).to eq 1
94
+ expect(subject.first.consumer_version_number).to eq "2"
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -563,6 +563,26 @@ module PactBroker
563
563
  expect(subject.collect(&:trigger_uuid).sort).to eq ['332', '638']
564
564
  end
565
565
 
566
+ context "when a webhook has been triggered by different events" do
567
+ before do
568
+ td.create_pact_with_hierarchy("Foo2", "1.0.0", "Bar2")
569
+ .create_webhook
570
+ .create_triggered_webhook(trigger_uuid: '333', event_name: 'foo')
571
+ .create_triggered_webhook(trigger_uuid: '555', event_name: 'foo')
572
+ .create_webhook_execution
573
+ .create_triggered_webhook(trigger_uuid: '444', event_name: 'bar')
574
+ .create_triggered_webhook(trigger_uuid: '777', event_name: 'bar')
575
+ .create_webhook_execution
576
+ .create_triggered_webhook(trigger_uuid: '111', event_name: nil)
577
+ .create_triggered_webhook(trigger_uuid: '888', event_name: nil)
578
+ .create_webhook_execution
579
+ end
580
+
581
+ it "returns one for each event" do
582
+ expect(subject.collect(&:trigger_uuid).sort).to eq ['555', '777', '888']
583
+ end
584
+ end
585
+
566
586
  context "when there are two 'latest' triggered webhooks at the same time" do
567
587
  before do
568
588
  td.create_triggered_webhook(trigger_uuid: '888', created_at: DateTime.new(2018))
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: 2.65.0
4
+ version: 2.66.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: 2020-09-25 00:00:00.000000000 Z
13
+ date: 2020-10-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -402,6 +402,7 @@ files:
402
402
  - db/ddl_statements/latest_pact_consumer_version_orders.rb
403
403
  - db/ddl_statements/latest_pact_publications_by_consumer_versions.rb
404
404
  - db/ddl_statements/latest_tagged_pact_consumer_version_orders.rb
405
+ - db/ddl_statements/latest_triggered_webhooks.rb
405
406
  - db/ddl_statements/latest_verification_ids_for_consumer_version_tags.rb
406
407
  - db/ddl_statements/latest_verification_ids_for_pact_versions.rb
407
408
  - db/migrations/000001_create_pacticipant_table.rb
@@ -518,6 +519,7 @@ files:
518
519
  - db/migrations/20200318_add_created_at_to_latest_pact_publications.rb
519
520
  - db/migrations/20200319_add_created_at_to_latest_verifications.rb
520
521
  - db/migrations/20200922_add_event_to_triggered_webhook.rb
522
+ - db/migrations/20200930_update_latest_triggered_webhooks.rb
521
523
  - db/migrations/migration_helper.rb
522
524
  - db/test/backwards_compatibility/.rspec
523
525
  - db/test/backwards_compatibility/Appraisals
@@ -612,6 +614,7 @@ files:
612
614
  - lib/pact_broker/api/decorators/pact_webhooks_status_decorator.rb
613
615
  - lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
614
616
  - lib/pact_broker/api/decorators/pacticipant_decorator.rb
617
+ - lib/pact_broker/api/decorators/pagination_links.rb
615
618
  - lib/pact_broker/api/decorators/provider_pacts_decorator.rb
616
619
  - lib/pact_broker/api/decorators/reason_decorator.rb
617
620
  - lib/pact_broker/api/decorators/relationships_csv_decorator.rb
@@ -764,6 +767,7 @@ files:
764
767
  - lib/pact_broker/doc/views/pact/tag-prod-version.markdown
765
768
  - lib/pact_broker/doc/views/pact/tag-version.markdown
766
769
  - lib/pact_broker/doc/views/pacticipant/can-i-deploy-badge.markdown
770
+ - lib/pact_broker/doc/views/pacticipant/versions.markdown
767
771
  - lib/pact_broker/doc/views/pending-provider-pacts.markdown
768
772
  - lib/pact_broker/doc/views/provider-pacts-for-verification.markdown
769
773
  - lib/pact_broker/doc/views/provider.markdown
@@ -1259,6 +1263,7 @@ files:
1259
1263
  - spec/lib/pact_broker/pacts/diff_spec.rb
1260
1264
  - spec/lib/pact_broker/pacts/generate_interaction_sha_spec.rb
1261
1265
  - spec/lib/pact_broker/pacts/generate_sha_spec.rb
1266
+ - spec/lib/pact_broker/pacts/latest_tagged_pact_publications_spec.rb
1262
1267
  - spec/lib/pact_broker/pacts/merger_spec.rb
1263
1268
  - spec/lib/pact_broker/pacts/pact_params_spec.rb
1264
1269
  - spec/lib/pact_broker/pacts/pact_publication_spec.rb
@@ -1649,6 +1654,7 @@ test_files:
1649
1654
  - spec/lib/pact_broker/pacts/diff_spec.rb
1650
1655
  - spec/lib/pact_broker/pacts/generate_interaction_sha_spec.rb
1651
1656
  - spec/lib/pact_broker/pacts/generate_sha_spec.rb
1657
+ - spec/lib/pact_broker/pacts/latest_tagged_pact_publications_spec.rb
1652
1658
  - spec/lib/pact_broker/pacts/merger_spec.rb
1653
1659
  - spec/lib/pact_broker/pacts/pact_params_spec.rb
1654
1660
  - spec/lib/pact_broker/pacts/pact_publication_spec.rb