1
1
require 'pact_broker/db/clean'
2
+ require 'pact_broker/matrix/unresolved_selector'
2
3
3
4
IS_MYSQL = !!DB . mysql?
4
5
@@ -12,111 +13,42 @@ module DB
12
13
subject { Clean . call ( PactBroker ::DB . connection , options ) }
13
14
14
15
describe ".call" do
15
-
16
- before do
17
- td . create_pact_with_hierarchy ( "Foo" , "0" , "Bar" )
18
- . create_consumer_version_tag ( "prod" )
19
- . create_consumer_version ( "1" )
20
- . create_pact
21
- . create_consumer_version_tag ( "prod" )
22
- . comment ( "keep" )
23
- . create_verification ( provider_version : "20" )
24
- . create_consumer_version ( "2" )
25
- . create_pact
26
- . comment ( "don't keep" )
27
- . create_webhook
28
- . create_triggered_webhook
29
- . create_webhook_execution
30
- . create_verification ( provider_version : "30" )
31
- . create_verification_webhook
32
- . create_triggered_webhook
33
- . create_webhook_execution
34
- . create_consumer_version ( "3" )
35
- . create_pact
36
- . comment ( "keep" )
37
- . create_verification ( provider_version : "40" )
38
- . create_verification ( provider_version : "40" , number : 2 )
39
- . create_verification ( provider_version : "50" , number : 3 )
40
- end
41
-
42
-
43
- it "does not delete any rows in the head matrix" do
44
- head_matrix_before = db [ :head_matrix ] . select_all
45
- subject
46
- head_matrix_after = db [ :head_matrix ] . select_all
47
- expect ( head_matrix_before ) . to eq head_matrix_after
48
- end
49
-
50
- it "deletes rows that aren't the latest or latest tagged" do
51
- subject
52
- expect ( db [ :matrix ] . where ( consumer_version_number : "2" ) . count ) . to eq 0
53
- end
54
-
55
- it "deletes orphan pact_versions" do
56
- subject
57
- expect ( db [ :pact_versions ] . count ) . to eq 2
58
- end
59
-
60
- it "deletes orphan versions" do
61
- subject
62
- expect ( db [ :versions ] . where ( number : "20" ) . count ) . to be 1
63
- expect ( db [ :versions ] . where ( number : "30" ) . count ) . to be 0
64
- expect ( db [ :versions ] . where ( number : "40" ) . count ) . to be 1
65
- expect ( db [ :versions ] . where ( number : "50" ) . count ) . to be 1
66
- end
67
-
68
- it "deletes overwritten verifications" do
69
- expect ( db [ :matrix ] . where ( provider_version_number : "40" ) . count ) . to eq 2
70
- subject
71
- expect ( db [ :matrix ] . where ( provider_version_number : "40" , verification_number : 2 ) . count ) . to eq 1
72
- end
73
- end
74
-
75
- describe ".call with a date" do
76
- before do
77
- td . set_now ( DateTime . new ( 2019 , 1 , 1 ) )
78
- . create_pact_with_hierarchy
79
- . create_verification
80
- end
81
- let ( :options ) { { date : date } }
82
-
83
- context "when the data is older than the given date" do
84
- let ( :date ) { DateTime . new ( 2019 , 1 , 2 ) }
85
- let ( :expected_report ) do
86
- {
87
- kept : { pact_publications : 0 , verification_results : 0 } ,
88
- deleted : { pact_publications : 1 , verification_results : 1 }
89
- }
16
+ context "when there are specified versions to keep" do
17
+ before do
18
+ td . create_pact_with_hierarchy ( "Foo" , "1" , "Bar" )
19
+ . create_consumer_version_tag ( "prod" )
20
+ . create_consumer_version_tag ( "master" )
21
+ . create_consumer_version ( "3" , tag_names : %w{ prod } )
22
+ . create_pact
23
+ . create_consumer_version ( "4" , tag_names : %w{ master } )
24
+ . create_pact
25
+ . create_consumer_version ( "5" , tag_names : %w{ master } )
26
+ . create_pact
27
+ . create_consumer_version ( "6" , tag_names : %w{ foo } )
28
+ . create_pact
90
29
end
91
30
92
- it "is deleted" do
93
- subject
94
- expect ( db [ :head_matrix ] . count ) . to be 0
95
- end
96
-
97
- it "returns a report" do
98
- expect ( subject ) . to include ( expected_report )
99
- end
100
- end
101
-
102
- context "when the data is not older than the given date" do
103
- let ( :date ) { DateTime . new ( 2019 , 1 , 1 ) }
104
- let ( :expected_report ) do
31
+ let ( :options ) do
105
32
{
106
- kept : { pact_publications : 1 , verification_results : 1 } ,
107
- deleted : { pact_publications : 0 , verification_results : 0 }
33
+ keep : [
34
+ PactBroker ::Matrix ::UnresolvedSelector . new ( tag : "prod" ) ,
35
+ PactBroker ::Matrix ::UnresolvedSelector . new ( tag : "master" , latest : true )
36
+ ]
108
37
}
109
38
end
110
39
111
- it "is not deleted" do
40
+ it "does not delete the consumer versions specified" do
41
+ expect ( PactBroker ::Domain ::Version . where ( number : "1" ) . count ) . to be 1
42
+ expect ( PactBroker ::Domain ::Version . where ( number : "3" ) . count ) . to be 1
43
+ expect ( PactBroker ::Domain ::Version . where ( number : "4" ) . count ) . to be 1
44
+ expect ( PactBroker ::Domain ::Version . where ( number : "5" ) . count ) . to be 1
45
+ expect ( PactBroker ::Domain ::Version . where ( number : "6" ) . count ) . to be 1
112
46
subject
113
- expect ( db [ :head_matrix ] . count ) . to be 1
114
- expect ( db [ :pact_publications ] . count ) . to be 1
115
- expect ( db [ :verifications ] . count ) . to be 1
116
- end
117
-
118
- it "returns a report" do
119
- expect ( subject ) . to include ( expected_report )
47
+ expect ( PactBroker ::Domain ::Version . where ( number : "1" ) . count ) . to be 1
48
+ expect ( PactBroker ::Domain ::Version . where ( number : "3" ) . count ) . to be 1
49
+ expect ( PactBroker ::Domain ::Version . where ( number : "4" ) . count ) . to be 0
50
+ expect ( PactBroker ::Domain ::Version . where ( number : "5" ) . count ) . to be 1
51
+ expect ( PactBroker ::Domain ::Version . where ( number : "6" ) . count ) . to be 0
120
52
end
121
53
end
122
54
end
0 commit comments