From 559de632217811fa6c30eb2a9f4c4888cfea025c Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Wed, 28 Jun 2023 13:22:53 +0000 Subject: [PATCH] fix(jobs): make finishing the job set progress to 100 --- selfprivacy_api/jobs/__init__.py | 3 +++ tests/test_jobs.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/selfprivacy_api/jobs/__init__.py b/selfprivacy_api/jobs/__init__.py index 5e86c5f..2551237 100644 --- a/selfprivacy_api/jobs/__init__.py +++ b/selfprivacy_api/jobs/__init__.py @@ -198,7 +198,10 @@ class Jobs: job.description = description if status_text is not None: job.status_text = status_text + if status == JobStatus.FINISHED: + job.progress = 100 if progress is not None: + # explicitly provided progress has priority job.progress = progress Jobs.log_progress_update(job, progress) job.status = status diff --git a/tests/test_jobs.py b/tests/test_jobs.py index 56e4aa3..0a4271e 100644 --- a/tests/test_jobs.py +++ b/tests/test_jobs.py @@ -80,6 +80,29 @@ def test_jobs(jobs_with_one_job): jobsmodule.JOB_EXPIRATION_SECONDS = backup +def test_finishing_equals_100(jobs_with_one_job): + jobs = jobs_with_one_job + test_job = jobs.get_jobs()[0] + assert not jobs.is_busy() + assert test_job.progress != 100 + + jobs.update(job=test_job, status=JobStatus.FINISHED) + + assert test_job.progress == 100 + + +def test_finishing_equals_100_unless_stated_otherwise(jobs_with_one_job): + jobs = jobs_with_one_job + test_job = jobs.get_jobs()[0] + assert not jobs.is_busy() + assert test_job.progress != 100 + assert test_job.progress != 23 + + jobs.update(job=test_job, status=JobStatus.FINISHED, progress=23) + + assert test_job.progress == 23 + + @pytest.fixture def jobs(): j = Jobs()