diff --git a/newsfragments/1486.change.rst b/newsfragments/1486.change.rst new file mode 100644 index 00000000..0eea55a9 --- /dev/null +++ b/newsfragments/1486.change.rst @@ -0,0 +1,3 @@ +Make ``upload_vumark_template`` return the ID of the target it uploaded. +It now waits for VWS to finish processing the target, which takes longer +than waiting for the target to appear in the targets table. diff --git a/src/vws_web_tools/__init__.py b/src/vws_web_tools/__init__.py index 5945b8ae..4743f5e8 100644 --- a/src/vws_web_tools/__init__.py +++ b/src/vws_web_tools/__init__.py @@ -598,8 +598,14 @@ def upload_vumark_template( svg_file_path: Path, template_name: str, width: float, -) -> None: - """Upload a VuMark SVG template to a VuMark database.""" +) -> str: + """Upload a VuMark SVG template to a VuMark database. + + Returns: + The ID of the uploaded target. Waiting for the ID means waiting + for VWS to finish processing the target, which takes longer than + waiting for the target to appear in the targets table. + """ navigate_to_database(driver=driver, database_name=database_name) thirty_second_wait = WebDriverWait( @@ -675,6 +681,17 @@ def upload_vumark_template( ), ) + wait_for_vumark_target_link( + driver=driver, + database_name=database_name, + target_name=template_name, + ) + return get_vumark_target_id( + driver=driver, + database_name=database_name, + target_name=template_name, + ) + @beartype def _xpath_literal( diff --git a/tests/test_create_database.py b/tests/test_create_database.py index 1437ac73..0a9b9ff9 100644 --- a/tests/test_create_database.py +++ b/tests/test_create_database.py @@ -349,7 +349,7 @@ def test_upload_vumark_template( assert test_file_path is not None svg_path = test_file_path.parent / "fixtures" / "vumark_template.svg" template_name = f"template-{random_str}" - vws_web_tools.upload_vumark_template( + target_id = vws_web_tools.upload_vumark_template( driver=chrome_driver, database_name=database_name, svg_file_path=svg_path, @@ -358,6 +358,9 @@ def test_upload_vumark_template( ) assert template_name in chrome_driver.page_source + expected_target_id_length = 32 + assert len(target_id) == expected_target_id_length + assert target_id.isalnum() def test_upload_vumark_template_cli(