From 05bcc5c2f413160b686d5f2a601e00a68aa60f09 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sun, 21 Jun 2026 16:07:54 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B9=20Split=20oversized=20test=20funct?= =?UTF-8?q?ion=20to=20improve=20readability=20and=20granularity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/analysis-engine/tests/test_api.py | 106 +++++++++++++-------- 1 file changed, 67 insertions(+), 39 deletions(-) diff --git a/services/analysis-engine/tests/test_api.py b/services/analysis-engine/tests/test_api.py index ea55cba2..d2332efa 100644 --- a/services/analysis-engine/tests/test_api.py +++ b/services/analysis-engine/tests/test_api.py @@ -83,8 +83,8 @@ def test_validate_analysis_job_request_accepts_local_audio_payload() -> None: } -def test_validate_analysis_job_request_rejects_bad_payloads() -> None: - """Ensure the request validator reports every expected safe-failure path.""" +def test_validate_analysis_job_request_rejects_bad_generic_fields() -> None: + """Ensure the request validator reports failures for bad generic payload structures.""" cases = [ ([], "root"), ({}, "sourceKind"), @@ -93,6 +93,71 @@ def test_validate_analysis_job_request_rejects_bad_payloads() -> None: ({"sourceKind": "demo", "sourceLabel": " ", "roleFocus": []}, "sourceLabel"), ({"sourceKind": "demo", "sourceLabel": "Late Night Set", "roleFocus": {}}, "roleFocus"), ({"sourceKind": "demo", "sourceLabel": "Late Night Set", "roleFocus": [7]}, "roleFocus[0]"), + ] + + for payload, message in cases: + try: + validate_analysis_job_request(payload) + except ValueError as error: + assert message in str(error) + else: + raise AssertionError(f"Expected ValueError for {payload!r}") + + +def test_validate_analysis_job_request_rejects_bad_demo_fields() -> None: + """Ensure the request validator reports failures for bad demo payloads.""" + cases = [ + ( + { + "sourceKind": "demo", + "projectId": "project-1", + "sourceLabel": "Late Night Set", + "roleFocus": [], + "localSource": { + "sourcePath": "/Users/test/Music/late-night-set.wav", + "fileName": "late-night-set.wav", + "extension": "wav", + "fileSizeBytes": 1024000, + }, + }, + "projectId", + ), + ( + {"sourceKind": "demo", "sourceLabel": "Late Night Set", "roleFocus": [], "extra": True}, + "extra", + ), + ( + { + "sourceKind": "demo", + "sourceLabel": "Late Night Set", + "roleFocus": [], + "cacheRoot": "/tmp/bandscope/cache", + }, + "cacheRoot", + ), + ( + { + "sourceKind": "demo", + "sourceLabel": "Late Night Set", + "roleFocus": [], + "tempRoot": "/tmp/bandscope/temp", + }, + "tempRoot", + ), + ] + + for payload, message in cases: + try: + validate_analysis_job_request(payload) + except ValueError as error: + assert message in str(error) + else: + raise AssertionError(f"Expected ValueError for {payload!r}") + + +def test_validate_analysis_job_request_rejects_bad_local_audio_fields() -> None: + """Ensure the request validator reports failures for bad local_audio payloads.""" + cases = [ ( {"sourceKind": "local_audio", "sourceLabel": "Late Night Set", "roleFocus": []}, "projectId", @@ -192,43 +257,6 @@ def test_validate_analysis_job_request_rejects_bad_payloads() -> None: }, "localSource.extra", ), - ( - { - "sourceKind": "demo", - "projectId": "project-1", - "sourceLabel": "Late Night Set", - "roleFocus": [], - "localSource": { - "sourcePath": "/Users/test/Music/late-night-set.wav", - "fileName": "late-night-set.wav", - "extension": "wav", - "fileSizeBytes": 1024000, - }, - }, - "projectId", - ), - ( - {"sourceKind": "demo", "sourceLabel": "Late Night Set", "roleFocus": [], "extra": True}, - "extra", - ), - ( - { - "sourceKind": "demo", - "sourceLabel": "Late Night Set", - "roleFocus": [], - "cacheRoot": "/tmp/bandscope/cache", - }, - "cacheRoot", - ), - ( - { - "sourceKind": "demo", - "sourceLabel": "Late Night Set", - "roleFocus": [], - "tempRoot": "/tmp/bandscope/temp", - }, - "tempRoot", - ), ( { "sourceKind": "local_audio",