Skip to content

Commit b274de7

Browse files
committed
Tests: mock trigger build to speed up tests
Otherwise trigger_build would try to call the API, and then keep trying till it times out. In these tests we don't need to run trigger_build.
1 parent be2175f commit b274de7

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

readthedocs/rtd_tests/tests/test_automation_rules.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121

2222
@pytest.mark.django_db
23+
@mock.patch('readthedocs.builds.automation_actions.trigger_build')
2324
class TestRegexAutomationRules:
2425

2526
@pytest.fixture(autouse=True)
@@ -74,7 +75,8 @@ def setup_method(self):
7475
)
7576
@pytest.mark.parametrize('version_type', [BRANCH, TAG])
7677
def test_match(
77-
self, version_name, regex, result, version_type):
78+
self, trigger_build, version_name, regex, result, version_type,
79+
):
7880
version = get(
7981
Version,
8082
verbose_name=version_name,
@@ -108,7 +110,7 @@ def test_match(
108110
]
109111
)
110112
@pytest.mark.parametrize('version_type', [BRANCH, TAG])
111-
def test_predefined_match_all_versions(self, version_name, result, version_type):
113+
def test_predefined_match_all_versions(self, trigger_build, version_name, result, version_type):
112114
version = get(
113115
Version,
114116
verbose_name=version_name,
@@ -144,7 +146,7 @@ def test_predefined_match_all_versions(self, version_name, result, version_type)
144146
]
145147
)
146148
@pytest.mark.parametrize('version_type', [BRANCH, TAG])
147-
def test_predefined_match_semver_versions(self, version_name, result, version_type):
149+
def test_predefined_match_semver_versions(self, trigger_build, version_name, result, version_type):
148150
version = get(
149151
Version,
150152
verbose_name=version_name,
@@ -163,7 +165,6 @@ def test_predefined_match_semver_versions(self, version_name, result, version_ty
163165
)
164166
assert rule.run(version) is result
165167

166-
@mock.patch('readthedocs.builds.automation_actions.trigger_build')
167168
def test_action_activation(self, trigger_build):
168169
version = get(
169170
Version,
@@ -185,7 +186,7 @@ def test_action_activation(self, trigger_build):
185186
trigger_build.assert_called_once()
186187

187188
@pytest.mark.parametrize('version_type', [BRANCH, TAG])
188-
def test_action_delete_version(self, version_type):
189+
def test_action_delete_version(self, trigger_build, version_type):
189190
slug = 'delete-me'
190191
version = get(
191192
Version,
@@ -207,7 +208,7 @@ def test_action_delete_version(self, version_type):
207208
assert not self.project.versions.filter(slug=slug).exists()
208209

209210
@pytest.mark.parametrize('version_type', [BRANCH, TAG])
210-
def test_action_delete_version_on_default_version(self, version_type):
211+
def test_action_delete_version_on_default_version(self, trigger_build, version_type):
211212
slug = 'delete-me'
212213
version = get(
213214
Version,
@@ -231,7 +232,7 @@ def test_action_delete_version_on_default_version(self, version_type):
231232
assert rule.run(version) is True
232233
assert self.project.versions.filter(slug=slug).exists()
233234

234-
def test_action_set_default_version(self):
235+
def test_action_set_default_version(self, trigger_build):
235236
version = get(
236237
Version,
237238
verbose_name='v2',
@@ -251,7 +252,6 @@ def test_action_set_default_version(self):
251252
assert rule.run(version) is True
252253
assert self.project.get_default_version() == version.slug
253254

254-
@mock.patch('readthedocs.builds.automation_actions.trigger_build')
255255
def test_version_hide_action(self, trigger_build):
256256
version = get(
257257
Version,
@@ -274,7 +274,6 @@ def test_version_hide_action(self, trigger_build):
274274
assert version.hidden is True
275275
trigger_build.assert_called_once()
276276

277-
@mock.patch('readthedocs.builds.automation_actions.trigger_build')
278277
def test_version_make_public_action(self, trigger_build):
279278
version = get(
280279
Version,
@@ -297,7 +296,6 @@ def test_version_make_public_action(self, trigger_build):
297296
assert version.privacy_level == PUBLIC
298297
trigger_build.assert_not_called()
299298

300-
@mock.patch('readthedocs.builds.automation_actions.trigger_build')
301299
def test_version_make_private_action(self, trigger_build):
302300
version = get(
303301
Version,

readthedocs/rtd_tests/tests/test_project_views.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from django.utils import timezone
1010
from django.views.generic.base import ContextMixin
1111
from django_dynamic_fixture import get, new
12-
from unittest.mock import patch
12+
from unittest import mock
1313

1414
from readthedocs.builds.constants import EXTERNAL
1515
from readthedocs.builds.models import Build, Version
@@ -28,7 +28,7 @@
2828
)
2929

3030

31-
@patch('readthedocs.projects.views.private.trigger_build', lambda x: None)
31+
@mock.patch('readthedocs.core.utils.trigger_build', mock.MagicMock())
3232
class TestProfileMiddleware(RequestFactoryTestMixin, TestCase):
3333

3434
wizard_class_slug = 'import_wizard_view'
@@ -62,7 +62,7 @@ def test_profile_middleware_no_profile(self):
6262
self.assertEqual(resp.status_code, 302)
6363
self.assertEqual(resp['location'], '/projects/foobar/')
6464

65-
@patch('readthedocs.projects.views.private.ProjectBasicsForm.clean')
65+
@mock.patch('readthedocs.projects.views.private.ProjectBasicsForm.clean')
6666
def test_profile_middleware_spam(self, form):
6767
"""User will be banned."""
6868
form.side_effect = ProjectSpamError
@@ -85,6 +85,7 @@ def test_profile_middleware_banned(self):
8585
self.assertEqual(resp['location'], '/')
8686

8787

88+
@mock.patch('readthedocs.core.utils.trigger_build', mock.MagicMock())
8889
class TestBasicsForm(WizardTestCase):
8990

9091
wizard_class_slug = 'import_wizard_view'
@@ -167,6 +168,7 @@ def test_form_missing(self):
167168
self.assertWizardFailure(resp, 'repo_type')
168169

169170

171+
@mock.patch('readthedocs.core.utils.trigger_build', mock.MagicMock())
170172
class TestAdvancedForm(TestBasicsForm):
171173

172174
def setUp(self):
@@ -227,7 +229,7 @@ def test_remote_repository_is_added(self):
227229
self.assertIsNotNone(proj)
228230
self.assertEqual(proj.remote_repository, remote_repo)
229231

230-
@patch(
232+
@mock.patch(
231233
'readthedocs.projects.views.private.ProjectExtraForm.clean_description',
232234
create=True,
233235
)
@@ -251,7 +253,7 @@ def test_form_spam(self, mocked_validator):
251253
proj = Project.objects.get(name='foobar')
252254
self.assertFalse(self.user.profile.banned)
253255

254-
@patch(
256+
@mock.patch(
255257
'readthedocs.projects.views.private.ProjectExtraForm.clean_description',
256258
create=True,
257259
)
@@ -451,7 +453,7 @@ def test_delete_project(self):
451453

452454
# Mocked like this because the function is imported inside a class method
453455
# https://stackoverflow.com/a/22201798
454-
with patch('readthedocs.projects.tasks.clean_project_resources') as clean_project_resources:
456+
with mock.patch('readthedocs.projects.tasks.clean_project_resources') as clean_project_resources:
455457
response = self.client.post('/dashboard/pip/delete/')
456458
self.assertEqual(response.status_code, 302)
457459
self.assertFalse(Project.objects.filter(slug='pip').exists())
@@ -477,7 +479,7 @@ def test_delete_superproject(self):
477479
html=True,
478480
)
479481

480-
@patch('readthedocs.projects.views.private.attach_webhook')
482+
@mock.patch('readthedocs.projects.views.private.attach_webhook')
481483
def test_integration_create(self, attach_webhook):
482484
project = get(Project, slug='pip', users=[self.user])
483485

@@ -498,7 +500,7 @@ def test_integration_create(self, attach_webhook):
498500
integration=integration.first()
499501
)
500502

501-
@patch('readthedocs.projects.views.private.attach_webhook')
503+
@mock.patch('readthedocs.projects.views.private.attach_webhook')
502504
def test_integration_create_generic_webhook(self, attach_webhook):
503505
project = get(Project, slug='pip', users=[self.user])
504506

readthedocs/rtd_tests/tests/test_sync_versions.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from readthedocs.projects.models import Project
1414

1515

16+
@mock.patch('readthedocs.core.utils.trigger_build', mock.MagicMock())
1617
class TestSyncVersions(TestCase):
1718
fixtures = ['eric', 'test_data']
1819

@@ -902,6 +903,7 @@ def test_automation_rule_dont_delete_default_version(self):
902903
)
903904
self.assertTrue(self.pip.versions.filter(slug=version_slug).exists())
904905

906+
@mock.patch('readthedocs.core.utils.trigger_build', mock.MagicMock())
905907
class TestStableVersion(TestCase):
906908
fixtures = ['eric', 'test_data']
907909

@@ -1396,6 +1398,7 @@ def test_user_defined_stable_version_branch_with_tags(self):
13961398
self.assertFalse(other_stable.exists())
13971399

13981400

1401+
@mock.patch('readthedocs.core.utils.trigger_build', mock.MagicMock())
13991402
class TestLatestVersion(TestCase):
14001403
fixtures = ['eric', 'test_data']
14011404

0 commit comments

Comments
 (0)