import unittest from pydantic import ValidationError from app.schemas.modbus import ModbusRawReadRequest class ModbusSchemaTest(unittest.TestCase): def test_device_type_defaults_to_modbus_tcp(self): request = ModbusRawReadRequest( ip="192.168.75.248", port=5512, slave_id=1, read={"function_code": 3, "address": 0, "quantity": 10}, ) self.assertEqual("ModbusTCP", request.device_type) def test_port_is_required(self): with self.assertRaises(ValidationError) as context: ModbusRawReadRequest( ip="192.168.75.248", read={"function_code": 3, "address": 0, "quantity": 10}, ) self.assertIn("port", str(context.exception)) def test_slave_id_is_required(self): with self.assertRaises(ValidationError) as context: ModbusRawReadRequest( ip="192.168.75.248", port=5512, read={"function_code": 3, "address": 0, "quantity": 10}, ) self.assertIn("slave_id", str(context.exception)) def test_ip_must_be_valid_address(self): with self.assertRaises(ValidationError) as context: ModbusRawReadRequest( ip="not-an-ip", port=5512, slave_id=1, read={"function_code": 3, "address": 0, "quantity": 10}, ) self.assertIn("ip must be a valid IP address", str(context.exception)) if __name__ == "__main__": unittest.main()