From 51b336440440da0a0a2849ae323921c73b3d39b4 Mon Sep 17 00:00:00 2001 From: Alexey Leshchenko Date: Sat, 16 Nov 2024 11:25:13 +0300 Subject: [PATCH] Bugfix --- fast_bitrix24/__version__.py | 2 +- fast_bitrix24/server_response.py | 7 ++++-- tests/test_server_responses.py | 42 +++++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/fast_bitrix24/__version__.py b/fast_bitrix24/__version__.py index 2d986fc..320141d 100644 --- a/fast_bitrix24/__version__.py +++ b/fast_bitrix24/__version__.py @@ -1 +1 @@ -__version__ = "1.8.1" +__version__ = "1.8.2" diff --git a/fast_bitrix24/server_response.py b/fast_bitrix24/server_response.py index b4d9c91..d950afe 100644 --- a/fast_bitrix24/server_response.py +++ b/fast_bitrix24/server_response.py @@ -71,14 +71,17 @@ def extract_errors(self): def is_batch(self) -> bool: return isinstance(self.result, dict) and "result" in self.result - def extract_from_single_response(self, result: dict): + def extract_from_single_response(self, result): + # Сначала проверяем, является ли result списком + if isinstance(result, list): + return result + # если результат вызова содержит только словарь из одного элемента {ключ: содержимое}, # то вернуть это содержимое. # См. https://github.com/leshchenko1979/fast_bitrix24/issues/132 # метод `crm.stagehistory.list` возвращает dict["items", list] -- # разворачиваем его в список - return next(iter(result.values())) if self.is_nested(result) else result @staticmethod diff --git a/tests/test_server_responses.py b/tests/test_server_responses.py index 4560580..6209003 100644 --- a/tests/test_server_responses.py +++ b/tests/test_server_responses.py @@ -75,7 +75,7 @@ def test_call_several_success(bx_dummy): assert len(results) == 3 assert isinstance(results[0], dict) - # нужен какой-то другой тест для контроля ��орядока результатов + # нужен какой-то другой тест для контроля орядока результатов # assert [result["ID"] for result in results] == ID_list, "Incorrect order of IDs" @@ -321,3 +321,43 @@ def test_crm_contact_add_batch(bx_dummy): # Проверяем что результат - это ID созданного контакта assert result == 58943 + + +def test_crm_contact_list(bx_dummy): + response = { + 'result': [ + { + 'ID': '10', + 'NAME': 'Абдуалимова Татьяна Александровна', + 'SECOND_NAME': None, + 'LAST_NAME': None + } + ], + 'total': 1, + 'time': { + 'start': 1731743829.0188, + 'finish': 1731743829.06444, + 'duration': 0.045639991760253906, + 'processing': 0.019975900650024414, + 'date_start': '2024-11-16T10:57:09+03:00', + 'date_finish': '2024-11-16T10:57:09+03:00', + 'operating_reset_at': 1731744429, + 'operating': 0 + } + } + + bx_dummy.srh = MockSRH(response) + results = bx_dummy.get_all( + 'crm.contact.list', + { + 'params': { + 'select': ['ID', 'NAME', 'SECOND_NAME', 'LAST_NAME'], + 'filter': {'=ID': ['10']} + } + } + ) + + assert isinstance(results, list) + assert len(results) == 1 + assert results[0]['ID'] == '10' + assert results[0]['NAME'] == 'Абдуалимова Татьяна Александровна'