diff --git a/tests/api/test_media_sync.py b/tests/api/test_media_sync.py index 840e52a..8c40efc 100644 --- a/tests/api/test_media_sync.py +++ b/tests/api/test_media_sync.py @@ -164,26 +164,11 @@ class ConvertPathsForPlatformTests(unittest.TestCase): # --------------------------------------------------------------------------- class FindMediaReferencesTests(unittest.TestCase): - def test_finds_image_input(self): - prompt = {"1": {"class_type": "LoadImage", "inputs": {"image": "photo.png"}}} - refs = ms._find_media_references(prompt) - self.assertIn("photo.png", refs) - - def test_finds_video_input(self): - prompt = {"1": {"class_type": "LoadVideo", "inputs": {"video": "clip.mp4"}}} - refs = ms._find_media_references(prompt) - self.assertIn("clip.mp4", refs) - def test_finds_file_input_for_load_video(self): prompt = {"1": {"class_type": "LoadVideo", "inputs": {"file": "1 - Copy.mp4"}}} refs = ms._find_media_references(prompt) self.assertIn("1 - Copy.mp4", refs) - def test_finds_audio_input(self): - prompt = {"1": {"class_type": "LoadAudio", "inputs": {"audio": "track.wav"}}} - refs = ms._find_media_references(prompt) - self.assertIn("track.wav", refs) - def test_strips_annotation_suffix(self): prompt = {"1": {"class_type": "LoadImage", "inputs": {"image": "photo.jpg [abc123]"}}} refs = ms._find_media_references(prompt) diff --git a/tests/test_payload_parsers.py b/tests/test_payload_parsers.py index 8043a0b..0408252 100644 --- a/tests/test_payload_parsers.py +++ b/tests/test_payload_parsers.py @@ -86,27 +86,25 @@ class ParseTilesFromFormTests(unittest.TestCase): # --- happy paths --- - def test_single_tile_returns_one_entry(self): + def test_single_tile_returns_image_and_metadata(self): tiles = pp._parse_tiles_from_form(_make_form(1)) self.assertEqual(len(tiles), 1) - - def test_multiple_tiles_all_returned(self): - tiles = pp._parse_tiles_from_form(_make_form(3)) - self.assertEqual(len(tiles), 3) - - def test_tile_image_is_pil_image(self): - tiles = pp._parse_tiles_from_form(_make_form(1)) - self.assertIsInstance(tiles[0]["image"], PILImage.Image) - - def test_tile_metadata_fields_are_parsed(self): - tiles = pp._parse_tiles_from_form(_make_form(1)) tile = tiles[0] + self.assertIsInstance(tile["image"], PILImage.Image) self.assertEqual(tile["tile_idx"], 0) self.assertEqual(tile["x"], 0) self.assertEqual(tile["y"], 0) self.assertEqual(tile["extracted_width"], 64) self.assertEqual(tile["extracted_height"], 64) + def test_multiple_tiles_preserve_count_order_and_coordinates(self): + tiles = pp._parse_tiles_from_form(_make_form(3)) + self.assertEqual(len(tiles), 3) + for i, tile in enumerate(tiles): + self.assertEqual(tile["tile_idx"], i) + self.assertEqual(tiles[1]["x"], 64) + self.assertEqual(tiles[2]["x"], 128) + def test_padding_is_parsed_from_form(self): tiles = pp._parse_tiles_from_form(_make_form(1, padding=16)) self.assertEqual(tiles[0]["padding"], 16) @@ -138,16 +136,6 @@ class ParseTilesFromFormTests(unittest.TestCase): self.assertNotIn("batch_idx", tiles[0]) self.assertNotIn("global_idx", tiles[0]) - def test_tile_indices_match_metadata_order(self): - tiles = pp._parse_tiles_from_form(_make_form(3)) - for i, tile in enumerate(tiles): - self.assertEqual(tile["tile_idx"], i) - - def test_x_coordinates_reflect_metadata(self): - tiles = pp._parse_tiles_from_form(_make_form(3)) - self.assertEqual(tiles[1]["x"], 64) - self.assertEqual(tiles[2]["x"], 128) - # --- error cases --- def test_missing_tiles_metadata_raises_value_error(self): diff --git a/tests/test_prompt_transform.py b/tests/test_prompt_transform.py index 2ceca7c..8e64c65 100644 --- a/tests/test_prompt_transform.py +++ b/tests/test_prompt_transform.py @@ -302,8 +302,8 @@ class PrepareDelegateMasterPromptTests(unittest.TestCase): self.assertNotIn("1", result) self.assertNotIn("2", result) - def test_removes_dangling_upstream_refs(self): - """Collector must not retain dangling refs to pruned upstream nodes.""" + def test_replaces_dangling_upstream_ref_with_one_empty_image_placeholder(self): + """Collector must point to exactly one valid placeholder after pruning.""" prompt = _delegate_prompt() result = pt.prepare_delegate_master_prompt(prompt, ["3"]) collector_inputs = result["3"].get("inputs", {}) @@ -314,10 +314,6 @@ class PrepareDelegateMasterPromptTests(unittest.TestCase): self.assertNotEqual(source_id, "2") self.assertIn(source_id, result) self.assertEqual(result[source_id].get("class_type"), "DistributedEmptyImage") - - def test_injects_empty_image_placeholder(self): - prompt = _delegate_prompt() - result = pt.prepare_delegate_master_prompt(prompt, ["3"]) empty_nodes = [(nid, n) for nid, n in result.items() if n.get("class_type") == "DistributedEmptyImage"] self.assertEqual(len(empty_nodes), 1) placeholder_id = empty_nodes[0][0] @@ -384,13 +380,6 @@ class PrepareDelegateMasterPromptTests(unittest.TestCase): self.assertEqual(result["15"], prompt["15"]) self.assertEqual(result["9"]["inputs"]["filename_prefix"], ["15", 0]) - def test_does_not_preserve_non_primitive_upstream_for_collector(self): - prompt = _delegate_prompt() - result = pt.prepare_delegate_master_prompt(prompt, ["3"]) - - self.assertNotIn("2", result) - self.assertNotEqual(result["3"]["inputs"]["images"], ["2", 0]) - def test_preserves_load_image_for_switch_alternate_required_input(self): """Delegate-only master keeps LoadImage inputs needed by switches.""" prompt = { diff --git a/web/tests/executionUtils.test.js b/web/tests/executionUtils.test.js deleted file mode 100644 index 11ae622..0000000 --- a/web/tests/executionUtils.test.js +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { buildWorkerWebSocketUrl } from "../urlUtils.js"; - - -describe("execution decision helpers", () => { - it("buildWorkerWebSocketUrl converts http/https to ws/wss", () => { - expect(buildWorkerWebSocketUrl("http://worker.local:8188")).toBe( - "ws://worker.local:8188/distributed/worker_ws" - ); - expect(buildWorkerWebSocketUrl("https://worker.example.com")).toBe( - "wss://worker.example.com/distributed/worker_ws" - ); - }); -}); diff --git a/web/tests/urlUtils.test.js b/web/tests/urlUtils.test.js index 801a1ae..0eda2a3 100644 --- a/web/tests/urlUtils.test.js +++ b/web/tests/urlUtils.test.js @@ -106,11 +106,6 @@ describe("buildWorkerWebSocketUrl", () => { "wss://worker.example.com/distributed/worker_ws" ); }); - - it("always appends /distributed/worker_ws", () => { - const url = buildWorkerWebSocketUrl("http://worker.local:8188"); - expect(url.endsWith("/distributed/worker_ws")).toBe(true); - }); }); diff --git a/web/tests/workerLifecycle.test.js b/web/tests/workerLifecycle.test.js index b402b82..837b4e5 100644 --- a/web/tests/workerLifecycle.test.js +++ b/web/tests/workerLifecycle.test.js @@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { getWorkerUrl } from "../workerLifecycle.js"; -describe("workerLifecycle URL construction", () => { +describe("workerLifecycle URL wiring", () => { let originalWindow; beforeEach(() => { @@ -22,31 +22,9 @@ describe("workerLifecycle URL construction", () => { globalThis.window = originalWindow; }); - it("builds local worker URL with explicit local port", () => { + // URL variants are covered in urlUtils.test.js; keep the wrapper wiring here. + it("forwards the worker and endpoint using window.location", () => { const worker = { id: "w1", port: 8189, type: "local" }; expect(getWorkerUrl({}, worker, "/prompt")).toBe("http://127.0.0.1:8189/prompt"); }); - - it("builds remote worker URL with host:port", () => { - const worker = { id: "w2", host: "worker.example.com", port: 9000, type: "remote" }; - expect(getWorkerUrl({}, worker, "/prompt")).toBe("http://worker.example.com:9000/prompt"); - }); - - it("builds cloud worker URL as https", () => { - const worker = { id: "w3", host: "cloud.example.com", port: 443, type: "cloud" }; - expect(getWorkerUrl({}, worker, "/prompt")).toBe("https://cloud.example.com/prompt"); - }); - - it("rewrites runpod proxy hostname for local worker ports", () => { - globalThis.window = { - location: { - hostname: "podabc.proxy.runpod.net", - protocol: "https:", - port: "", - origin: "https://podabc.proxy.runpod.net", - }, - }; - const worker = { id: "w4", port: 8189, type: "local" }; - expect(getWorkerUrl({}, worker, "/prompt")).toBe("https://podabc-8189.proxy.runpod.net/prompt"); - }); });