"""Command validation tests."""

from __future__ import annotations

import unittest

from web.commands import CommandValidationError, validate_control_command, validate_temp_setup_op


class TestWebCommands(unittest.TestCase):
    def test_set_heat_mode(self) -> None:
        op, args = validate_control_command({"op": "set_heat_mode", "args": {"mode": "maintain"}})
        self.assertEqual(op, "set_heat_mode")
        self.assertEqual(args["mode"], "maintain")

    def test_invalid_mode(self) -> None:
        with self.assertRaises(CommandValidationError):
            validate_control_command({"op": "set_heat_mode", "args": {"mode": "bogus"}})

    def test_target_clamp(self) -> None:
        _, args = validate_control_command({"op": "set_target_temp", "args": {"target_f": 200}})
        self.assertEqual(args["target_f"], 110.0)

    def test_setup_ops(self) -> None:
        self.assertEqual(validate_temp_setup_op("setup_start"), "setup_start")


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