11"""Tests for write operation tools."""
22
3- from unittest .mock import Mock
3+ from unittest .mock import Mock , call
44
55import pytest
66
@@ -53,20 +53,26 @@ async def test_create_record_success(self, tool_handler, mock_connection):
5353 model = "res.partner"
5454 values = {
"name" :
"Test Partner" ,
"email" :
"[email protected] " }
5555 created_id = 123
56- created_record = {
"id" :
created_id ,
"name" :
"Test Partner" ,
"email" :
"[email protected] " }
56+ essential_record = {
57+ "id" : created_id ,
58+ "name" : "Test Partner" ,
59+ "display_name" : "Test Partner" ,
60+ }
5761
5862 mock_connection .create .return_value = created_id
59- mock_connection .read .return_value = [created_record ]
63+ mock_connection .read .return_value = [essential_record ]
6064
6165 # Execute
6266 result = await tool_handler ._handle_create_record_tool (model , values )
6367
6468 # Verify
6569 assert result ["success" ] is True
66- assert result ["record" ] == created_record
70+ assert result ["record" ] == essential_record
6771 assert "Successfully created" in result ["message" ]
6872 mock_connection .create .assert_called_once_with (model , values )
69- mock_connection .read .assert_called_once_with (model , [created_id ])
73+ mock_connection .read .assert_called_once_with (
74+ model , [created_id ], ["id" , "name" , "display_name" ]
75+ )
7076
7177 @pytest .mark .asyncio
7278 async def test_create_record_no_values (self , tool_handler ):
@@ -91,8 +97,10 @@ async def test_update_record_success(self, tool_handler, mock_connection):
9197 model = "res.partner"
9298 record_id = 123
9399 values = {
"email" :
"[email protected] " }
94- existing_record = {
"id" :
record_id ,
"name" :
"Test Partner" ,
"email" :
"[email protected] " }
95- updated_record = {
"id" :
record_id ,
"name" :
"Test Partner" ,
"email" :
"[email protected] " }
100+ # First read call (existence check) returns just ID
101+ existing_record = {"id" : record_id }
102+ # Second read call returns essential fields
103+ updated_record = {"id" : record_id , "name" : "Test Partner" , "display_name" : "Test Partner" }
96104
97105 mock_connection .read .side_effect = [[existing_record ], [updated_record ]]
98106 mock_connection .write .return_value = True
@@ -105,6 +113,12 @@ async def test_update_record_success(self, tool_handler, mock_connection):
105113 assert result ["record" ] == updated_record
106114 assert "Successfully updated" in result ["message" ]
107115 mock_connection .write .assert_called_once_with (model , [record_id ], values )
116+ # Verify both read calls with correct parameters
117+ expected_calls = [
118+ call (model , [record_id ], ["id" ]), # Existence check
119+ call (model , [record_id ], ["id" , "name" , "display_name" ]), # Essential fields
120+ ]
121+ mock_connection .read .assert_has_calls (expected_calls )
108122
109123 @pytest .mark .asyncio
110124 async def test_update_record_not_found (self , tool_handler , mock_connection ):
0 commit comments