34 lines
1.5 KiB
Python
34 lines
1.5 KiB
Python
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)
|