summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2014-06-18 00:10:43 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2014-06-18 01:17:07 +0300
commitff683c62d937e0522441c7f52090be60c91b4ba0 (patch)
tree4b590e02debe36861c249481ed9be3d961a3deec /tests
parentd0179ce94b3c69921aac8f45bcf440d88c5921a3 (diff)
downloadapscheduler-ff683c62d937e0522441c7f52090be60c91b4ba0.tar.gz
Defer replacing undefined options with defaults until the job is really scheduled
Allow specifying an explicit next_run_time when adding a job
Diffstat (limited to 'tests')
-rw-r--r--tests/conftest.py1
-rw-r--r--tests/test_executors.py2
-rw-r--r--tests/test_job.py2
-rw-r--r--tests/test_schedulers.py19
4 files changed, 15 insertions, 9 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
index 4dd00cf..669ddc7 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -86,5 +86,6 @@ def create_job(job_defaults):
job_kwargs.update(kwargs)
job_kwargs['trigger'] = BlockingScheduler()._create_trigger(job_kwargs.pop('trigger'),
job_kwargs.pop('trigger_args'))
+ job_kwargs.setdefault('next_run_time', None)
return Job(**job_kwargs)
return create
diff --git a/tests/test_executors.py b/tests/test_executors.py
index 207a728..cd686f6 100644
--- a/tests/test_executors.py
+++ b/tests/test_executors.py
@@ -57,7 +57,7 @@ def test_max_instances(mock_scheduler, executor, create_job, freeze_time):
events = []
mock_scheduler._dispatch_event = lambda event: events.append(event)
- job = create_job(func=wait_event, max_instances=2)
+ job = create_job(func=wait_event, max_instances=2, next_run_time=None)
executor.submit_job(job, [freeze_time.current])
executor.submit_job(job, [freeze_time.current])
diff --git a/tests/test_job.py b/tests/test_job.py
index 9457269..62b615f 100644
--- a/tests/test_job.py
+++ b/tests/test_job.py
@@ -33,8 +33,6 @@ def test_constructor(job_id):
assert job._jobstore_alias is None
modify_kwargs = _modify.call_args[1]
- assert modify_kwargs['next_run_time'] is None
-
if job_id is None:
assert len(modify_kwargs['id']) == 32
else:
diff --git a/tests/test_schedulers.py b/tests/test_schedulers.py
index 87c97c2..2149606 100644
--- a/tests/test_schedulers.py
+++ b/tests/test_schedulers.py
@@ -344,14 +344,13 @@ class TestBaseScheduler(object):
func = lambda x, y: None
scheduler._stopped = stopped
scheduler._real_add_job = MagicMock()
- scheduler._job_defaults = {'misfire_grace_time': 3, 'coalesce': False, 'max_instances': 6}
job = scheduler.add_job(func, 'date', [1], {'y': 2}, 'my-id', 'dummy', run_date='2014-06-01 08:41:00')
assert isinstance(job, Job)
assert job.id == 'my-id'
- assert job.misfire_grace_time == 3
- assert job.coalesce is False
- assert job.max_instances == 6
+ assert not hasattr(job, 'misfire_grace_time')
+ assert not hasattr(job, 'coalesce')
+ assert not hasattr(job, 'max_instances')
assert len(scheduler._pending_jobs) == (1 if stopped else 0)
assert scheduler._real_add_job.call_count == (0 if stopped else 1)
@@ -362,7 +361,8 @@ class TestBaseScheduler(object):
decorator(func)
scheduler.add_job.assert_called_once_with(func, 'date', [1], {'y': 2}, 'my-id', 'dummy', undefined, undefined,
- undefined, 'default', 'default', True, run_date='2014-06-01 08:41:00')
+ undefined, undefined, 'default', 'default', True,
+ run_date='2014-06-01 08:41:00')
@pytest.mark.parametrize('pending', [True, False], ids=['pending job', 'scheduled job'])
def test_modify_job(self, scheduler, pending):
@@ -664,10 +664,11 @@ Jobstore baz:
@pytest.mark.parametrize('replace_existing', [True, False], ids=['replace', 'no replace'])
@pytest.mark.parametrize('wakeup', [True, False], ids=['wakeup', 'no wakeup'])
def test_real_add_job(self, scheduler, job_exists, replace_existing, wakeup):
- job = MagicMock(Job, id='foo')
+ job = Job(scheduler, id='foo', func=lambda: None, args=(), kwargs={}, next_run_time=None)
jobstore = MagicMock(BaseJobStore, _alias='bar',
add_job=MagicMock(side_effect=ConflictingIdError('foo') if job_exists else None))
scheduler.wakeup = MagicMock()
+ scheduler._job_defaults = {'misfire_grace_time': 3, 'coalesce': False, 'max_instances': 6}
scheduler._dispatch_event = MagicMock()
scheduler._jobstores = {'bar': jobstore}
@@ -678,6 +679,12 @@ Jobstore baz:
scheduler._real_add_job(job, 'bar', replace_existing, wakeup)
+ # Check that the undefined values were replaced with scheduler defaults
+ assert job.misfire_grace_time == 3
+ assert job.coalesce is False
+ assert job.max_instances == 6
+ assert job.next_run_time is None
+
if job_exists:
jobstore.update_job.assert_called_once_with(job)
else: