import unittest import types from app.services.migration_engine.media_resolver import MediaResolver class TestCanonicalMediaPipeline(unittest.TestCase): def test_canonicalize_media_key_valid(self): self.assertEqual( MediaResolver.canonicalize_media_key("Apple Bluetooth Speaker Graphite"), "apple-bluetooth-speaker-graphite" ) self.assertEqual( MediaResolver.canonicalize_media_key(" __Audio/apple_speaker__ "), "audio-apple-speaker" ) self.assertEqual( MediaResolver.canonicalize_media_key("Media-Key-123"), "media-key-123" ) self.assertEqual( MediaResolver.canonicalize_media_key("APPLE___BLUETOOTH///SPEAKER"), "apple-bluetooth-speaker" ) def test_canonicalize_media_key_empty(self): self.assertIsNone(MediaResolver.canonicalize_media_key(None)) self.assertIsNone(MediaResolver.canonicalize_media_key("")) self.assertIsNone(MediaResolver.canonicalize_media_key(" ")) self.assertIsNone(MediaResolver.canonicalize_media_key("___")) def test_detect_archive_wrapper_single_wrapper(self): entries = [ types.SimpleNamespace(filename="stress_media/key-1/1_front.png"), types.SimpleNamespace(filename="stress_media/key-1/2_back.png"), types.SimpleNamespace(filename="stress_media/key-2/1_front.png"), ] self.assertEqual(MediaResolver.detect_archive_wrapper(entries), "stress_media") def test_detect_archive_wrapper_no_wrapper(self): entries = [ types.SimpleNamespace(filename="key-1/1_front.png"), types.SimpleNamespace(filename="key-2/1_front.png"), ] self.assertIsNone(MediaResolver.detect_archive_wrapper(entries)) def test_detect_archive_wrapper_root_file(self): entries = [ types.SimpleNamespace(filename="stress_media/key-1/1_front.png"), types.SimpleNamespace(filename="readme.txt"), ] self.assertIsNone(MediaResolver.detect_archive_wrapper(entries)) def test_derive_media_key_from_path(self): rel_dir = "stress_media/Apple Bluetooth Speaker Graphite" key = MediaResolver.derive_media_key_from_path(rel_dir, wrapper_prefix="stress_media") self.assertEqual(key, "apple-bluetooth-speaker-graphite") def test_exact_matching(self): excel_key = MediaResolver.canonicalize_media_key("Apple Bluetooth Speaker Graphite") zip_key = MediaResolver.canonicalize_media_key("apple-bluetooth-speaker-graphite") mismatched_key = MediaResolver.canonicalize_media_key("apple-bluetooth-speaker-black") self.assertEqual(excel_key, zip_key) self.assertNotEqual(excel_key, mismatched_key) if __name__ == "__main__": unittest.main()