| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- from __future__ import annotations
- import inspect
- import unittest
- from unittest.mock import patch
- from data_collector_mcp import server
- class ServerToolTests(unittest.TestCase):
- def test_modbus_device_edit_uses_explicit_parameters(self) -> None:
- signature = inspect.signature(server.collector_modbus_device_edit)
- self.assertNotIn("payload", signature.parameters)
- with patch("data_collector_mcp.server.api_edit_modbus_device", return_value={"state": 0}) as api_edit:
- result = server.collector_modbus_device_edit(
- project_key="dev-01",
- ori_id=1,
- name="modbus_tcp_edited",
- device_type=1,
- ip="127.0.0.1",
- port=5502,
- slave_id=1,
- byte_order=2,
- word_order=2,
- address_offset=1,
- device_group_id=10,
- )
- self.assertEqual(result, {"state": 0})
- api_edit.assert_called_once_with(
- "dev-01",
- {
- "ori_id": 1,
- "name": "modbus_tcp_edited",
- "device_type": 1,
- "ip": "127.0.0.1",
- "port": 5502,
- "slave_id": 1,
- "byte_order": 2,
- "word_order": 2,
- "serial_port": "",
- "timeout": 3,
- "is_persistent": True,
- "baud_rate": 0,
- "data_bit": 0,
- "parity": 0,
- "stop_bit": 0,
- "mode": 0,
- "address_offset": 1,
- "retry_times": 0,
- "device_group_id": 10,
- "alarm_interval": 90,
- "collect_interval": 5,
- },
- )
- def test_modbus_point_edit_uses_explicit_parameters_with_func_code(self) -> None:
- signature = inspect.signature(server.collector_modbus_point_edit)
- self.assertNotIn("payload", signature.parameters)
- with patch("data_collector_mcp.server.api_edit_modbus_point", return_value={"state": 0}) as api_edit:
- result = server.collector_modbus_point_edit(
- project_key="dev-01",
- ori_id=101,
- name="holding_register_uint16_edited",
- address=10,
- data_type="uint16",
- func_code=3,
- point_id="HR_UINT16_EDITED",
- )
- self.assertEqual(result, {"state": 0})
- api_edit.assert_called_once_with(
- "dev-01",
- {
- "ori_id": 101,
- "name": "holding_register_uint16_edited",
- "address": 10,
- "type": "uint16",
- "point_id": "HR_UINT16_EDITED",
- "scale_ratio": 1,
- "value_offset": 0,
- "group_id": 0,
- "invalid_values": "",
- "valid_range_start": None,
- "valid_range_end": None,
- "bit": 0,
- "describe": "",
- "func_code": 3,
- },
- )
- def test_modbus_point_edit_uses_register_type_when_func_code_is_zero(self) -> None:
- with patch("data_collector_mcp.server.api_edit_modbus_point", return_value={"state": 0}) as api_edit:
- server.collector_modbus_point_edit(
- project_key="dev-01",
- ori_id=101,
- name="holding_register_uint16_edited",
- address=10,
- data_type="uint16",
- register_type="holding_register",
- )
- payload = api_edit.call_args.args[1]
- self.assertEqual(payload["register_type"], "holding_register")
- self.assertNotIn("func_code", payload)
- if __name__ == "__main__":
- unittest.main()
|