Skip to content

Commit d18e9ad

Browse files
committed
refactor tests
1 parent 6e7714f commit d18e9ad

10 files changed

+317
-316
lines changed

Diff for: scheduler/models/scheduled_task.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ def callback_save_job(job, connection, result, *args, **kwargs):
2929
if model_name is None:
3030
return
3131
model = apps.get_model(app_label='scheduler', model_name=model_name)
32-
scheduled_job = model.objects.filter(job_id=job.id).first()
33-
if scheduled_job is not None:
34-
scheduled_job.unschedule()
35-
scheduled_job.schedule()
32+
task = model.objects.filter(job_id=job.id).first()
33+
if task is not None:
34+
task.unschedule()
35+
task.schedule()
3636

3737

3838
class BaseTask(models.Model):
@@ -200,16 +200,17 @@ def enqueue_to_run(self) -> bool:
200200
return True
201201

202202
def unschedule(self) -> bool:
203-
"""Remove job from django-queue.
203+
"""Remove a job from django-queue.
204204
205-
If job is queued to be executed or scheduled to be executed, it will remove it.
205+
If a job is queued to be executed or scheduled to be executed, it will remove it.
206206
"""
207207
queue = self.rqueue
208-
if self.is_scheduled():
209-
queue.remove(self.job_id)
210-
queue.scheduled_job_registry.remove(self.job_id)
208+
if self.job_id is None:
209+
return True
210+
queue.remove(self.job_id)
211+
queue.scheduled_job_registry.remove(self.job_id)
211212
self.job_id = None
212-
super(BaseTask, self).save()
213+
self.save(schedule_job=False)
213214
return True
214215

215216
def _schedule_time(self):

Diff for: scheduler/rq_classes.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ def __eq__(self, other):
5757
return isinstance(other, Job) and self.id == other.id
5858

5959
@property
60-
def is_scheduled_job(self):
61-
return self.meta.get('scheduled_job_id', None) is not None
60+
def is_scheduled_task(self):
61+
return self.meta.get('scheduled_task_id', None) is not None
6262

6363
def is_execution_of(self, scheduled_job):
6464
return (self.meta.get('job_type', None) == scheduled_job.TASK_TYPE
65-
and self.meta.get('scheduled_job_id', None) == scheduled_job.id)
65+
and self.meta.get('scheduled_task_id', None) == scheduled_job.id)
6666

6767
def stop_execution(self, connection: Redis):
6868
send_stop_job_command(connection, self.id)

Diff for: scheduler/templates/admin/scheduler/job_detail.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
{% block content_title %}
1818
<h2>Job {{ job.id }}
19-
{% if job.is_scheduled_job %}
19+
{% if job.is_scheduled_task %}
2020
<small>
2121
<a href="{{ job|scheduled_job }}">Link to scheduled job</a>
2222
</small>

Diff for: scheduler/templates/admin/scheduler/single_job_action.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<a href="{% url 'queue_registry_jobs' queue.name 'queued' %}">{{ queue.name }}</a>?
2626
This action can not be undone.
2727
<br/>
28-
{% if job.is_scheduled_job %}
28+
{% if job.is_scheduled_task %}
2929
<b>Note: This scheduled job will be scheduled again if it is enabled</b>
3030
{% endif %}
3131
</p>

Diff for: scheduler/tests/test_internals.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
from django.utils import timezone
44

55
from scheduler.models import ScheduledTask
6-
from scheduler.tests.testtools import SchedulerBaseCase, job_factory
6+
from scheduler.tests.testtools import SchedulerBaseCase, task_factory
77
from scheduler.tools import get_scheduled_task
88

99

1010
class TestInternals(SchedulerBaseCase):
1111
def test_get_scheduled_job(self):
12-
job = job_factory(ScheduledTask, scheduled_time=timezone.now() - timedelta(hours=1))
12+
job = task_factory(ScheduledTask, scheduled_time=timezone.now() - timedelta(hours=1))
1313
self.assertEqual(job, get_scheduled_task(job.TASK_TYPE, job.id))
1414
with self.assertRaises(ValueError):
1515
get_scheduled_task(job.TASK_TYPE, job.id + 1)

Diff for: scheduler/tests/test_job_arg_models.py

+29-29
Original file line numberDiff line numberDiff line change
@@ -4,96 +4,96 @@
44

55
from scheduler.models import TaskArg, TaskKwarg
66
from .jobs import arg_callable
7-
from .testtools import jobarg_factory
7+
from .testtools import taskarg_factory
88

99

1010
class TestAllJobArg(TestCase):
1111
JobArgClass = TaskArg
1212

1313
def test_bad_arg_type(self):
14-
arg = jobarg_factory(self.JobArgClass, arg_type='bad_arg_type', val='something')
14+
arg = taskarg_factory(self.JobArgClass, arg_type='bad_arg_type', val='something')
1515
with self.assertRaises(ValidationError):
1616
arg.clean()
1717

1818
def test_clean_one_value_invalid_str_int(self):
19-
arg = jobarg_factory(self.JobArgClass, arg_type='int', val='not blank', )
19+
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='not blank', )
2020
with self.assertRaises(ValidationError):
2121
arg.clean()
2222

2323
def test_clean_callable_invalid(self):
24-
arg = jobarg_factory(self.JobArgClass, arg_type='callable', val='bad_callable', )
24+
arg = taskarg_factory(self.JobArgClass, arg_type='callable', val='bad_callable', )
2525
with self.assertRaises(ValidationError):
2626
arg.clean()
2727

2828
def test_clean_datetime_invalid(self):
29-
arg = jobarg_factory(self.JobArgClass, arg_type='datetime', val='bad datetime', )
29+
arg = taskarg_factory(self.JobArgClass, arg_type='datetime', val='bad datetime', )
3030
with self.assertRaises(ValidationError):
3131
arg.clean()
3232

3333
def test_clean_bool_invalid(self):
34-
arg = jobarg_factory(self.JobArgClass, arg_type='bool', val='bad bool', )
34+
arg = taskarg_factory(self.JobArgClass, arg_type='bool', val='bad bool', )
3535
with self.assertRaises(ValidationError):
3636
arg.clean()
3737

3838
def test_clean_int_invalid(self):
39-
arg = jobarg_factory(self.JobArgClass, arg_type='int', val='str')
39+
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='str')
4040
with self.assertRaises(ValidationError):
4141
arg.clean()
4242

4343
def test_str_clean(self):
44-
arg = jobarg_factory(self.JobArgClass, val='something')
44+
arg = taskarg_factory(self.JobArgClass, val='something')
4545
self.assertIsNone(arg.clean())
4646

4747

4848
class TestJobArg(TestCase):
4949
JobArgClass = TaskArg
5050

5151
def test_str(self):
52-
arg = jobarg_factory(self.JobArgClass)
52+
arg = taskarg_factory(self.JobArgClass)
5353
self.assertEqual(
5454
f'JobArg[arg_type={arg.arg_type},value={arg.value()}]', str(arg))
5555

5656
def test_value(self):
57-
arg = jobarg_factory(self.JobArgClass, arg_type='str', val='something')
57+
arg = taskarg_factory(self.JobArgClass, arg_type='str', val='something')
5858
self.assertEqual(arg.value(), 'something')
5959

6060
def test__str__str_val(self):
61-
arg = jobarg_factory(self.JobArgClass, arg_type='str', val='something')
61+
arg = taskarg_factory(self.JobArgClass, arg_type='str', val='something')
6262
self.assertEqual('something', str(arg.value()))
6363

6464
def test__str__int_val(self):
65-
arg = jobarg_factory(self.JobArgClass, arg_type='int', val='1')
65+
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='1')
6666
self.assertEqual('1', str(arg.value()))
6767

6868
def test__str__datetime_val(self):
6969
_time = timezone.now()
70-
arg = jobarg_factory(self.JobArgClass, arg_type='datetime', val=str(_time))
70+
arg = taskarg_factory(self.JobArgClass, arg_type='datetime', val=str(_time))
7171
self.assertEqual(str(_time), str(arg.value()))
7272

7373
def test__str__bool_val(self):
74-
arg = jobarg_factory(self.JobArgClass, arg_type='bool', val='True')
74+
arg = taskarg_factory(self.JobArgClass, arg_type='bool', val='True')
7575
self.assertEqual('True', str(arg.value()))
7676

7777
def test__repr__str_val(self):
78-
arg = jobarg_factory(self.JobArgClass, arg_type='str', val='something')
78+
arg = taskarg_factory(self.JobArgClass, arg_type='str', val='something')
7979
self.assertEqual("'something'", repr(arg.value()))
8080

8181
def test__repr__int_val(self):
82-
arg = jobarg_factory(self.JobArgClass, arg_type='int', val='1')
82+
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='1')
8383
self.assertEqual('1', repr(arg.value()))
8484

8585
def test__repr__datetime_val(self):
8686
_time = timezone.now()
87-
arg = jobarg_factory(self.JobArgClass, arg_type='datetime', val=str(_time))
87+
arg = taskarg_factory(self.JobArgClass, arg_type='datetime', val=str(_time))
8888
self.assertEqual(repr(_time), repr(arg.value()))
8989

9090
def test__repr__bool_val(self):
91-
arg = jobarg_factory(self.JobArgClass, arg_type='bool', val='False')
91+
arg = taskarg_factory(self.JobArgClass, arg_type='bool', val='False')
9292
self.assertEqual('False', repr(arg.value()))
9393

9494
def test_callable_arg_type__clean(self):
9595
method = arg_callable
96-
arg = jobarg_factory(
96+
arg = taskarg_factory(
9797
self.JobArgClass, arg_type='callable',
9898
val=f'{method.__module__}.{method.__name__}', )
9999
self.assertIsNone(arg.clean())
@@ -105,44 +105,44 @@ class TestJobKwarg(TestAllJobArg):
105105
JobArgClass = TaskKwarg
106106

107107
def test_str(self):
108-
arg = jobarg_factory(self.JobArgClass)
108+
arg = taskarg_factory(self.JobArgClass)
109109
self.assertEqual(
110110
f'JobKwarg[key={arg.key},arg_type={arg.arg_type},value={arg.val}]', str(arg))
111111

112112
def test_value(self):
113-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='str', val='value')
113+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='str', val='value')
114114
self.assertEqual(kwarg.value(), ('key', 'value'))
115115

116116
def test__str__str_val(self):
117-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='str', val='something')
117+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='str', val='something')
118118
self.assertEqual('JobKwarg[key=key,arg_type=str,value=something]', str(kwarg))
119119

120120
def test__str__int_val(self):
121-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='int', val=1)
121+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='int', val=1)
122122
self.assertEqual('JobKwarg[key=key,arg_type=int,value=1]', str(kwarg))
123123

124124
def test__str__datetime_val(self):
125125
_time = timezone.now()
126-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='datetime', val=str(_time))
126+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='datetime', val=str(_time))
127127
self.assertEqual(f'JobKwarg[key=key,arg_type=datetime,value={_time}]', str(kwarg))
128128

129129
def test__str__bool_val(self):
130-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='bool', val='True')
130+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='bool', val='True')
131131
self.assertEqual('JobKwarg[key=key,arg_type=bool,value=True]', str(kwarg))
132132

133133
def test__repr__str_val(self):
134-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='str', val='something')
134+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='str', val='something')
135135
self.assertEqual("('key', 'something')", repr(kwarg.value()))
136136

137137
def test__repr__int_val(self):
138-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='int', val='1')
138+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='int', val='1')
139139
self.assertEqual("('key', 1)", repr(kwarg.value()))
140140

141141
def test__repr__datetime_val(self):
142142
_time = timezone.now()
143-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='datetime', val=str(_time))
143+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='datetime', val=str(_time))
144144
self.assertEqual("('key', {})".format(repr(_time)), repr(kwarg.value()))
145145

146146
def test__repr__bool_val(self):
147-
kwarg = jobarg_factory(self.JobArgClass, key='key', arg_type='bool', val='True')
147+
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='bool', val='True')
148148
self.assertEqual("('key', True)", repr(kwarg.value()))

Diff for: scheduler/tests/test_mgmt_cmds.py

+23-23
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from scheduler.models import ScheduledTask, RepeatableTask
1111
from scheduler.queues import get_queue
1212
from scheduler.tests.jobs import failing_job, test_job
13-
from scheduler.tests.testtools import job_factory
13+
from scheduler.tests.testtools import task_factory
1414
from . import test_settings # noqa
1515
from .test_views import BaseTestCase
1616
from ..tools import create_worker
@@ -131,8 +131,8 @@ def tearDown(self) -> None:
131131

132132
def test_export__should_export_job(self):
133133
jobs = list()
134-
jobs.append(job_factory(ScheduledTask, enabled=True))
135-
jobs.append(job_factory(RepeatableTask, enabled=True))
134+
jobs.append(task_factory(ScheduledTask, enabled=True))
135+
jobs.append(task_factory(RepeatableTask, enabled=True))
136136

137137
# act
138138
call_command('export', filename=self.tmpfile.name)
@@ -144,8 +144,8 @@ def test_export__should_export_job(self):
144144

145145
def test_export__should_export_enabled_jobs_only(self):
146146
jobs = list()
147-
jobs.append(job_factory(ScheduledTask, enabled=True))
148-
jobs.append(job_factory(RepeatableTask, enabled=False))
147+
jobs.append(task_factory(ScheduledTask, enabled=True))
148+
jobs.append(task_factory(RepeatableTask, enabled=False))
149149

150150
# act
151151
call_command('export', filename=self.tmpfile.name, enabled=True)
@@ -156,8 +156,8 @@ def test_export__should_export_enabled_jobs_only(self):
156156

157157
def test_export__should_export_job_yaml_without_yaml_lib(self):
158158
jobs = list()
159-
jobs.append(job_factory(ScheduledTask, enabled=True))
160-
jobs.append(job_factory(RepeatableTask, enabled=True))
159+
jobs.append(task_factory(ScheduledTask, enabled=True))
160+
jobs.append(task_factory(RepeatableTask, enabled=True))
161161

162162
# act
163163
with mock.patch.dict('sys.modules', {'yaml': None}):
@@ -167,8 +167,8 @@ def test_export__should_export_job_yaml_without_yaml_lib(self):
167167

168168
def test_export__should_export_job_yaml_green(self):
169169
jobs = list()
170-
jobs.append(job_factory(ScheduledTask, enabled=True))
171-
jobs.append(job_factory(RepeatableTask, enabled=True))
170+
jobs.append(task_factory(ScheduledTask, enabled=True))
171+
jobs.append(task_factory(RepeatableTask, enabled=True))
172172

173173
# act
174174
call_command('export', filename=self.tmpfile.name, format='yaml')
@@ -188,8 +188,8 @@ def tearDown(self) -> None:
188188

189189
def test_import__should_schedule_job(self):
190190
jobs = list()
191-
jobs.append(job_factory(ScheduledTask, enabled=True, instance_only=True))
192-
jobs.append(job_factory(RepeatableTask, enabled=True, instance_only=True))
191+
jobs.append(task_factory(ScheduledTask, enabled=True, instance_only=True))
192+
jobs.append(task_factory(RepeatableTask, enabled=True, instance_only=True))
193193
res = json.dumps([j.to_dict() for j in jobs])
194194
self.tmpfile.write(res)
195195
self.tmpfile.flush()
@@ -204,8 +204,8 @@ def test_import__should_schedule_job(self):
204204

205205
def test_import__should_schedule_job_yaml(self):
206206
jobs = list()
207-
jobs.append(job_factory(ScheduledTask, enabled=True, instance_only=True))
208-
jobs.append(job_factory(RepeatableTask, enabled=True, instance_only=True))
207+
jobs.append(task_factory(ScheduledTask, enabled=True, instance_only=True))
208+
jobs.append(task_factory(RepeatableTask, enabled=True, instance_only=True))
209209
res = yaml.dump([j.to_dict() for j in jobs], default_flow_style=False)
210210
self.tmpfile.write(res)
211211
self.tmpfile.flush()
@@ -220,8 +220,8 @@ def test_import__should_schedule_job_yaml(self):
220220

221221
def test_import__should_schedule_job_yaml_without_yaml_lib(self):
222222
jobs = list()
223-
jobs.append(job_factory(ScheduledTask, enabled=True, instance_only=True))
224-
jobs.append(job_factory(RepeatableTask, enabled=True, instance_only=True))
223+
jobs.append(task_factory(ScheduledTask, enabled=True, instance_only=True))
224+
jobs.append(task_factory(RepeatableTask, enabled=True, instance_only=True))
225225
res = yaml.dump([j.to_dict() for j in jobs], default_flow_style=False)
226226
self.tmpfile.write(res)
227227
self.tmpfile.flush()
@@ -233,10 +233,10 @@ def test_import__should_schedule_job_yaml_without_yaml_lib(self):
233233

234234
def test_import__should_schedule_job_reset(self):
235235
jobs = list()
236-
job_factory(ScheduledTask, enabled=True)
237-
job_factory(ScheduledTask, enabled=True)
238-
jobs.append(job_factory(ScheduledTask, enabled=True))
239-
jobs.append(job_factory(RepeatableTask, enabled=True, instance_only=True))
236+
task_factory(ScheduledTask, enabled=True)
237+
task_factory(ScheduledTask, enabled=True)
238+
jobs.append(task_factory(ScheduledTask, enabled=True))
239+
jobs.append(task_factory(RepeatableTask, enabled=True, instance_only=True))
240240
res = json.dumps([j.to_dict() for j in jobs])
241241
self.tmpfile.write(res)
242242
self.tmpfile.flush()
@@ -256,8 +256,8 @@ def test_import__should_schedule_job_reset(self):
256256

257257
def test_import__should_schedule_job_update_existing(self):
258258
jobs = list()
259-
job_factory(ScheduledTask, enabled=True)
260-
jobs.append(job_factory(ScheduledTask, enabled=True))
259+
task_factory(ScheduledTask, enabled=True)
260+
jobs.append(task_factory(ScheduledTask, enabled=True))
261261
res = json.dumps([j.to_dict() for j in jobs])
262262
self.tmpfile.write(res)
263263
self.tmpfile.flush()
@@ -273,8 +273,8 @@ def test_import__should_schedule_job_update_existing(self):
273273

274274
def test_import__should_schedule_job_without_update_existing(self):
275275
jobs = list()
276-
job_factory(ScheduledTask, enabled=True)
277-
jobs.append(job_factory(ScheduledTask, enabled=True))
276+
task_factory(ScheduledTask, enabled=True)
277+
jobs.append(task_factory(ScheduledTask, enabled=True))
278278
res = json.dumps([j.to_dict() for j in jobs])
279279
self.tmpfile.write(res)
280280
self.tmpfile.flush()

0 commit comments

Comments
 (0)