diff --git a/backend/btrixcloud/crawls.py b/backend/btrixcloud/crawls.py index 7533d025..f2447741 100644 --- a/backend/btrixcloud/crawls.py +++ b/backend/btrixcloud/crawls.py @@ -86,6 +86,8 @@ class Crawl(BaseMongoModel): colls: Optional[List[str]] = [] tags: Optional[List[str]] = [] + notes: Optional[str] + # ============================================================================ class CrawlOut(Crawl): @@ -124,6 +126,8 @@ class ListCrawlOut(BaseMongoModel): colls: Optional[List[str]] = [] tags: Optional[List[str]] = [] + notes: Optional[str] + # ============================================================================ class ListCrawls(BaseModel): @@ -149,9 +153,10 @@ class CrawlCompleteIn(BaseModel): # ============================================================================ class UpdateCrawl(BaseModel): - """Update crawl tags""" + """Update crawl""" tags: Optional[List[str]] = [] + notes: Optional[str] # ============================================================================ @@ -376,8 +381,8 @@ class CrawlOps: return False async def update_crawl(self, crawl_id: str, org: Organization, update: UpdateCrawl): - """Update existing crawl (tags only for now)""" - query = update.dict(exclude_unset=True, exclude_none=True) + """Update existing crawl (tags and notes only for now)""" + query = update.dict(exclude_unset=True) if len(query) == 0: raise HTTPException(status_code=400, detail="no_update_data") diff --git a/backend/test/test_run_crawl.py b/backend/test/test_run_crawl.py index 392895e2..0e7b1d09 100644 --- a/backend/test/test_run_crawl.py +++ b/backend/test/test_run_crawl.py @@ -98,7 +98,7 @@ def test_verify_wacz(): assert '"https://webrecorder.net/"' in pages -def test_update_tags(admin_auth_headers, default_org_id, admin_crawl_id): +def test_update_crawl(admin_auth_headers, default_org_id, admin_crawl_id): r = requests.get( f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", headers=admin_auth_headers, @@ -106,13 +106,19 @@ def test_update_tags(admin_auth_headers, default_org_id, admin_crawl_id): assert r.status_code == 200 data = r.json() assert sorted(data["tags"]) == ["wr-test-1", "wr-test-2"] + # Add exception handling for old crawls without notes field + try: + assert not data["notes"] + except KeyError: + pass - # Submit patch request to update tags + # Submit patch request to update tags and notes UPDATED_TAGS = ["wr-test-1-updated", "wr-test-2-updated"] + UPDATED_NOTES = "Lorem ipsum test note." r = requests.patch( f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", headers=admin_auth_headers, - json={"tags": UPDATED_TAGS}, + json={"tags": UPDATED_TAGS, "notes": UPDATED_NOTES}, ) assert r.status_code == 200 data = r.json() @@ -126,12 +132,13 @@ def test_update_tags(admin_auth_headers, default_org_id, admin_crawl_id): assert r.status_code == 200 data = r.json() assert sorted(data["tags"]) == sorted(UPDATED_TAGS) + assert data["notes"] == UPDATED_NOTES - # Verify deleting all tags works as well + # Verify deleting works as well r = requests.patch( f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", headers=admin_auth_headers, - json={"tags": []}, + json={"tags": [], "notes": None}, ) assert r.status_code == 200 @@ -142,3 +149,4 @@ def test_update_tags(admin_auth_headers, default_org_id, admin_crawl_id): assert r.status_code == 200 data = r.json() assert data["tags"] == [] + assert not data["notes"]