Skip to content

Commit ba1a2de

Browse files
committed
Add test
1 parent 6430c4b commit ba1a2de

File tree

3 files changed

+41
-8
lines changed

3 files changed

+41
-8
lines changed

readthedocs/builds/models.py

-5
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,6 @@ def save(self, *args, **kwargs): # pylint: disable=arguments-differ
322322
task=tasks.symlink_project,
323323
args=[self.project.pk],
324324
)
325-
326-
# These resources are not used when a version is inactive
327-
if not self.active:
328-
tasks.clean_project_resources(self.project, self)
329-
330325
return obj
331326

332327
def delete(self, *args, **kwargs): # pylint: disable=arguments-differ

readthedocs/projects/views/private.py

+4
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ def form_valid(self, form):
203203
task=tasks.remove_dirs,
204204
args=[version.get_artifact_paths()],
205205
)
206+
tasks.clean_project_resources(
207+
version.project,
208+
version,
209+
)
206210
version.built = False
207211
version.save()
208212
return HttpResponseRedirect(self.get_success_url())

readthedocs/rtd_tests/tests/test_build_forms.py

+37-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
# -*- coding: utf-8 -*-
2-
1+
import mock
2+
from django.contrib.auth.models import User
33
from django.test import TestCase
4+
from django.urls import reverse
45
from django_dynamic_fixture import get
56

67
from readthedocs.builds.forms import VersionForm
@@ -12,7 +13,8 @@
1213
class TestVersionForm(TestCase):
1314

1415
def setUp(self):
15-
self.project = get(Project)
16+
self.user = get(User)
17+
self.project = get(Project, users=(self.user,))
1618

1719
def test_default_version_is_active(self):
1820
version = get(
@@ -50,3 +52,35 @@ def test_default_version_is_inactive(self):
5052
)
5153
self.assertFalse(form.is_valid())
5254
self.assertIn('active', form.errors)
55+
56+
@mock.patch('readthedocs.projects.tasks.clean_project_resources')
57+
def test_resources_are_deleted_when_version_is_inactive(self, clean_project_resources):
58+
version = get(
59+
Version,
60+
project=self.project,
61+
active=True,
62+
)
63+
64+
url = reverse('project_version_detail', args=(version.project.slug, version.slug))
65+
66+
self.client.force_login(self.user)
67+
68+
r = self.client.post(
69+
url,
70+
data={
71+
'active': True,
72+
'privacy_level': PRIVATE,
73+
},
74+
)
75+
self.assertTrue(r.status_code, 200)
76+
clean_project_resources.assert_not_called()
77+
78+
r = self.client.post(
79+
url,
80+
data={
81+
'active': False,
82+
'privacy_level': PRIVATE,
83+
},
84+
)
85+
self.assertTrue(r.status_code, 200)
86+
clean_project_resources.assert_called_once()

0 commit comments

Comments
 (0)