From 634b2f68130d3086f688a6274e416e17a00ba462 Mon Sep 17 00:00:00 2001 From: Tessa Walsh Date: Tue, 5 Mar 2024 13:06:11 -0500 Subject: [PATCH 1/2] Add updatable crawl reviewStatus --- backend/btrixcloud/models.py | 14 +++++++++++++ backend/test/test_run_crawl.py | 36 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/backend/btrixcloud/models.py b/backend/btrixcloud/models.py index ad914f09b6..11dd412567 100644 --- a/backend/btrixcloud/models.py +++ b/backend/btrixcloud/models.py @@ -522,6 +522,15 @@ class CrawlFileOut(BaseModel): expireAt: Optional[str] +# ============================================================================ +class ReviewStatus(str, Enum): + """QA review statuses""" + + GOOD = "good" + ACCEPTABLE = "acceptable" + FAILURE = "failure" + + # ============================================================================ class BaseCrawl(BaseMongoModel): """Base Crawl object (representing crawls, uploads and manual sessions)""" @@ -554,6 +563,8 @@ class BaseCrawl(BaseMongoModel): fileSize: int = 0 fileCount: int = 0 + reviewStatus: Optional[ReviewStatus] = None + # ============================================================================ class CollIdName(BaseModel): @@ -617,6 +628,8 @@ class CrawlOut(BaseMongoModel): crawlerChannel: str = "default" image: Optional[str] + reviewStatus: Optional[ReviewStatus] = None + # ============================================================================ class CrawlOutWithResources(CrawlOut): @@ -634,6 +647,7 @@ class UpdateCrawl(BaseModel): description: Optional[str] tags: Optional[List[str]] collectionIds: Optional[List[UUID]] + reviewStatus: Optional[ReviewStatus] # ============================================================================ diff --git a/backend/test/test_run_crawl.py b/backend/test/test_run_crawl.py index 2c44fac1b4..9f8b0945b0 100644 --- a/backend/test/test_run_crawl.py +++ b/backend/test/test_run_crawl.py @@ -283,6 +283,42 @@ def test_update_crawl( assert data["name"] == UPDATED_NAME assert data["collectionIds"] == UPDATED_COLLECTION_IDS + # Update reviewStatus and verify + r = requests.patch( + f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", + headers=admin_auth_headers, + json={ + "reviewStatus": "good", + }, + ) + assert r.status_code == 200 + data = r.json() + assert data["updated"] + + r = requests.get( + f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", + headers=admin_auth_headers, + ) + assert r.status_code == 200 + assert r.json()["reviewStatus"] == "good" + + # Try to update to invalid reviewStatus + r = requests.patch( + f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", + headers=admin_auth_headers, + json={ + "reviewStatus": "invalid", + }, + ) + assert r.status_code == 422 + + r = requests.get( + f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", + headers=admin_auth_headers, + ) + assert r.status_code == 200 + assert r.json()["reviewStatus"] == "good" + # Verify deleting works as well r = requests.patch( f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", From 78f4619d6b9ec8b58aac8a7ce2b9175868f9409d Mon Sep 17 00:00:00 2001 From: Tessa Walsh Date: Tue, 5 Mar 2024 13:07:12 -0500 Subject: [PATCH 2/2] Test that reviewStatus is None before being set --- backend/test/test_run_crawl.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/test/test_run_crawl.py b/backend/test/test_run_crawl.py index 9f8b0945b0..08eb770dd2 100644 --- a/backend/test/test_run_crawl.py +++ b/backend/test/test_run_crawl.py @@ -282,6 +282,7 @@ def test_update_crawl( assert data["description"] == UPDATED_DESC assert data["name"] == UPDATED_NAME assert data["collectionIds"] == UPDATED_COLLECTION_IDS + assert data.get("reviewStatus") is None # Update reviewStatus and verify r = requests.patch(