import asyncio import unittest from pydantic import ValidationError from routes.settings_route import TranscodeQuality, get_system_metrics class SettingsRouteTest(unittest.TestCase): def test_transcode_quality_accepts_supported_values(self): quality = TranscodeQuality(label="高清", width=1920, height=1080, bitrate="5000k") self.assertEqual(quality.width, 1920) self.assertEqual(quality.bitrate, "5000k") def test_transcode_quality_rejects_invalid_bitrate_and_dimensions(self): invalid_values = [ dict(label="高清", width=100, height=1080, bitrate="5000k"), dict(label="高清", width=1920, height=1080, bitrate="5000"), dict(label="", width=1920, height=1080, bitrate="5M"), ] for value in invalid_values: with self.subTest(value=value), self.assertRaises(ValidationError): TranscodeQuality(**value) def test_system_metrics_contains_bounded_resource_values(self): metrics = asyncio.run(get_system_metrics(True)) self.assertGreaterEqual(metrics["cpu"]["count"], 1) self.assertGreaterEqual(metrics["cpu"]["load_percent"], 0) self.assertLessEqual(metrics["cpu"]["load_percent"], 100) self.assertGreaterEqual(metrics["memory"]["used_percent"], 0) self.assertLessEqual(metrics["memory"]["used_percent"], 100) self.assertGreater(metrics["disk"]["total"], 0) self.assertGreaterEqual(metrics["disk"]["free"], 0)