50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from src.config_governance import analyze_content, optimize_content
|
|
|
|
|
|
class ConfigGovernanceTests(unittest.TestCase):
|
|
def test_url_config_detects_duplicates(self) -> None:
|
|
sample = "\n".join(
|
|
[
|
|
"https://live.douyin.com/123456,主播A",
|
|
"https://live.douyin.com/123456,主播A重复",
|
|
"# https://live.douyin.com/999999",
|
|
"https://www.tiktok.com/@demo/live",
|
|
]
|
|
)
|
|
result = analyze_content("app-config", "URL_config.ini", sample, source="draft")
|
|
codes = {item["code"] for item in result["issues"]}
|
|
self.assertIn("duplicate_urls", codes)
|
|
self.assertTrue(any(item["id"] == "dedupe_urls" for item in result["actions"]))
|
|
|
|
def test_dedupe_urls_keeps_single_active_copy(self) -> None:
|
|
sample = "\n".join(
|
|
[
|
|
"# keep comment",
|
|
"https://live.douyin.com/123456",
|
|
"https://live.douyin.com/123456",
|
|
"https://live.douyin.com/654321",
|
|
]
|
|
)
|
|
result = optimize_content("app-config", "URL_config.ini", "dedupe_urls", sample)
|
|
content = result["content"]
|
|
self.assertEqual(content.count("https://live.douyin.com/123456"), 1)
|
|
self.assertIn("# keep comment", content)
|
|
self.assertIn("https://live.douyin.com/654321", content)
|
|
|
|
def test_youtube_preset_preserves_key_and_enables_balanced_defaults(self) -> None:
|
|
sample = "[youtube]\nkey = demo-key\nrtmps = 否\nfast_audio = 0\n"
|
|
result = optimize_content("app-config", "youtube.ini", "youtube_balanced_preset", sample)
|
|
content = result["content"]
|
|
self.assertIn("key = demo-key", content)
|
|
self.assertIn("rtmps = 是", content)
|
|
self.assertIn("bitrate = 4500", content)
|
|
self.assertIn("fast_audio = 1", content)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|