|
1 | 1 | from unittest.mock import patch |
2 | 2 | import uuid |
| 3 | +import pytest |
3 | 4 | from tests.utils import Transport |
4 | 5 |
|
5 | 6 |
|
@@ -34,3 +35,45 @@ def test_update_vulnerabilities_action(client, monkeypatch, db, celery_always_ea |
34 | 35 | assert job.type == ob_models.JobType.SYNC_VULNERABILITIES |
35 | 36 | assert job.state == ob_models.JobState.PROCESSING |
36 | 37 | mock_update_vulnerabilities.assert_called_once_with(uuid.UUID(job_id)) |
| 38 | + |
| 39 | +@pytest.mark.parametrize( |
| 40 | + "states,expected_ids", |
| 41 | + [ |
| 42 | + (["in-queue"], {"9e0d79ed-94d9-42a3-aa41-4772ae922176"}), |
| 43 | + (["processing"], {"2583d09b-6535-4f15-9fd1-5dcb55230f08"}), |
| 44 | + (["in-queue", "processing"], {"9e0d79ed-94d9-42a3-aa41-4772ae922176", "2583d09b-6535-4f15-9fd1-5dcb55230f08"}), |
| 45 | + (["cancelled"], {"0014c5a1-7a5e-408f-88ea-83ec5a1b8af1"}), |
| 46 | + (["processed"], set()), |
| 47 | + ([], {"9e0d79ed-94d9-42a3-aa41-4772ae922176", "2583d09b-6535-4f15-9fd1-5dcb55230f08", "0014c5a1-7a5e-408f-88ea-83ec5a1b8af1"}), |
| 48 | + ] |
| 49 | +) |
| 50 | +@pytest.mark.django_db |
| 51 | +def test_jobs_filter_by_multiple_states(client, api_schema, states, expected_ids): |
| 52 | + from obstracts.server import models as ob_models |
| 53 | + |
| 54 | + keep_1 = ob_models.Job.objects.create( |
| 55 | + id='9e0d79ed-94d9-42a3-aa41-4772ae922176', |
| 56 | + type=ob_models.JobType.FEED_INDEX, |
| 57 | + state=ob_models.JobState.QUEUED, |
| 58 | + ) |
| 59 | + keep_2 = ob_models.Job.objects.create( |
| 60 | + id='2583d09b-6535-4f15-9fd1-5dcb55230f08', |
| 61 | + type=ob_models.JobType.PDF_INDEX, |
| 62 | + state=ob_models.JobState.PROCESSING, |
| 63 | + ) |
| 64 | + ob_models.Job.objects.create( |
| 65 | + id='0014c5a1-7a5e-408f-88ea-83ec5a1b8af1', |
| 66 | + type=ob_models.JobType.REPROCESS_POSTS, |
| 67 | + state=ob_models.JobState.CANCELLED, |
| 68 | + ) |
| 69 | + |
| 70 | + resp = client.get( |
| 71 | + f"/api/v1/jobs/?state={','.join(states)}" |
| 72 | + ) |
| 73 | + assert resp.status_code == 200 |
| 74 | + assert resp.data["total_results_count"] == len(expected_ids) |
| 75 | + |
| 76 | + returned = {item["id"] for item in resp.data["jobs"]} |
| 77 | + assert returned == expected_ids |
| 78 | + |
| 79 | + api_schema["/api/v1/jobs/"]["GET"].validate_response(Transport.get_st_response(resp)) |
0 commit comments