fix: list/search quickSearch 参数名修正 + SQL 方言友好报错 + E071 传输请求改 IN
- list_objects: maxrow/name/type 改为 operation=quickSearch/query/maxResults/objectType, 并剥离 NW 7.40/7.50 quickSearch name 里的本地化类型标签(如 "ZCL_FOO (Class)") - query_table_data: HTTP 400 转抛 SapCliError,说明方言限制(WHERE 仅 IN/LIKE),不再打堆栈 - _query_transport_request: E071 查询 WHERE 改用 IN(...),区分「无」与「无法获取」
This commit is contained in:
@@ -646,6 +646,31 @@ class TestListObjects(unittest.TestCase):
|
||||
client.session.get.return_value = _mock_resp(200, content=_LIST_EMPTY)
|
||||
self.assertEqual(client.list_objects(), [])
|
||||
|
||||
def test_quickssearch_params(self):
|
||||
client = _make_client()
|
||||
client.session.get.return_value = _mock_resp(200, content=_LIST_TWO)
|
||||
client.list_objects(obj_type="PROG/P", prefix="Z_TEST")
|
||||
_, kwargs = client.session.get.call_args
|
||||
params = kwargs["params"]
|
||||
self.assertEqual(params["operation"], "quickSearch")
|
||||
self.assertEqual(params["query"], "Z_TEST")
|
||||
self.assertEqual(params["maxResults"], "200")
|
||||
self.assertEqual(params["objectType"], "PROG/P")
|
||||
for bad in ("maxrow", "name", "type"):
|
||||
self.assertNotIn(bad, params)
|
||||
|
||||
def test_strips_type_label_from_name(self):
|
||||
client = _make_client()
|
||||
xml = (
|
||||
f'<?xml version="1.0"?>'
|
||||
f'<adtcore:objectReferences xmlns:adtcore="{ADTCORE_NS}">'
|
||||
f'<adtcore:objectReference adtcore:name="ZMM_BIP_001_HEADER (Structure)" adtcore:type="TABL/ST"/>'
|
||||
f'</adtcore:objectReferences>'
|
||||
).encode()
|
||||
client.session.get.return_value = _mock_resp(200, content=xml)
|
||||
result = client.list_objects()
|
||||
self.assertEqual(result[0]["name"], "ZMM_BIP_001_HEADER")
|
||||
|
||||
|
||||
class TestWhereUsed(unittest.TestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user