File tree 2 files changed +30
-0
lines changed
2 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,8 @@ def execute
7
7
return error ( _ ( 'Access Denied' ) , 403 ) unless allowed?
8
8
9
9
if release . destroy
10
+ update_catalog_resource!
11
+
10
12
success ( tag : existing_tag , release : release )
11
13
else
12
14
error ( release . errors . messages || '400 Bad request' , 400 )
@@ -15,6 +17,14 @@ def execute
15
17
16
18
private
17
19
20
+ def update_catalog_resource!
21
+ return unless project . catalog_resource
22
+
23
+ return unless project . catalog_resource . versions . none?
24
+
25
+ project . catalog_resource . update! ( state : 'draft' )
26
+ end
27
+
18
28
def allowed?
19
29
Ability . allowed? ( current_user , :destroy_release , release )
20
30
end
Original file line number Diff line number Diff line change 28
28
it 'returns the destroyed object' do
29
29
is_expected . to include ( status : :success , release : release )
30
30
end
31
+
32
+ context 'when the release is for a catalog resource' do
33
+ let! ( :catalog_resource ) { create ( :catalog_resource , project : project , state : 'published' ) }
34
+ let! ( :version ) { create ( :catalog_resource_version , catalog_resource : catalog_resource , release : release ) }
35
+
36
+ it 'does not update the catalog resources if there are still releases' do
37
+ second_release = create ( :release , project : project , tag : 'v1.2.0' )
38
+ create ( :catalog_resource_version , catalog_resource : catalog_resource , release : second_release )
39
+
40
+ subject
41
+
42
+ expect ( catalog_resource . reload . state ) . to eq ( 'published' )
43
+ end
44
+
45
+ it 'updates the catalog resource if there are no more releases' do
46
+ subject
47
+
48
+ expect ( catalog_resource . reload . state ) . to eq ( 'draft' )
49
+ end
50
+ end
31
51
end
32
52
33
53
context 'when tag does not exist in the repository' do
You can’t perform that action at this time.
0 commit comments