67 lines
2.8 KiB
Python
67 lines
2.8 KiB
Python
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()
|