ifixkart-backend/Backend/tests/unit/test_canonical_media_pipeline.py

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()