from __future__ import annotations

import unittest

from phs.modules.account_usage import is_unlimited_quota, parse_quota_bytes, quota_state


class AccountUsageTests(unittest.TestCase):
    def test_parse_cpanel_quota_values(self) -> None:
        self.assertEqual(parse_quota_bytes("512M"), 512 * 1024**2)
        self.assertEqual(parse_quota_bytes("1.5G"), int(1.5 * 1024**3))
        self.assertEqual(parse_quota_bytes("100", default_unit="M"), 100 * 1024**2)
        self.assertTrue(is_unlimited_quota("unlimited"))
        self.assertTrue(is_unlimited_quota("0"))

    def test_quota_priority(self) -> None:
        limits = (100, 90, 80, 70)
        self.assertEqual(quota_state(101, False, *limits), "full")
        self.assertEqual(quota_state(95, False, *limits), "critical")
        self.assertEqual(quota_state(85, False, *limits), "warning")
        self.assertEqual(quota_state(75, False, *limits), "watch")
        self.assertEqual(quota_state(30, False, *limits), "healthy")
        self.assertEqual(quota_state(0, True, *limits), "unlimited")


if __name__ == "__main__":
    unittest.main()
