local json = require('cjson') local log = require('utils.log') local departments = require('bitrix.departments') -- Настройка логирования log.outfile = 'logs/tests_departments_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log' log.level = 'trace' log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====") --=== ТЕСТЫ ===-- local function test_departments_fields() log.info('--- Тест: Получение справочника полей (fields) ---') local result, error_response = departments.departments.fields() if result then log.info('Тест полей: УСПЕШНО.') log.debug('Пример поля: NAME - ' .. result.NAME) else log.error('Тест полей: ПРОВАЛЕНО.') if error_response then log.error(error_response) end end end local function test_departments_add() log.info('--- Тест: Создание подразделения (add) ---') -- Создадим тестовый отдел с уникальным именем local dept_name = "Test Dept - " .. os.date("%H-%M-%S") local fields = { NAME = dept_name, SORT = 100, PARENT_ID = 1 -- Родительский отдел (обычно 1 - компания) } local result, error_response = departments.departments.add(fields) if result and result.ID then log.info(string.format('Тест создания: УСПЕШНО. ID нового отдела: %d', result.ID)) return result.ID -- Возвращаем ID для тестов обновления и удаления else log.error('Тест создания: ПРОВАЛЕНО.') if error_response then log.error(error_response) end return nil end end local function test_departments_getlist(dept_name) -- Этот тест запускается после создания отдела, чтобы найти его в списке if not dept_name then return end log.info('--- Тест: Получение списка подразделений (getlist) ---') -- Используем фильтр по имени, чтобы найти наш только что созданный отдел local filter = { NAME = dept_name } local result_list, error_response = departments.departments.getlist({'NAME'}, filter, {'ID', 'NAME'}, 0) if result_list and #result_list > 0 then log.info(string.format('Тест getlist: УСПЕШНО. Найдено отделов по фильтру: %d', #result_list)) -- Проверим, что имя первого найденного отдела совпадает с искомым if result_list[1].NAME == dept_name then log.debug('Проверка имени: УСПЕШНО. Найден отдел: ' .. result_list[1].NAME) else log.warning('Найден отдел, но имя не совпадает с искомым.') end else log.error('Тест getlist: ПРОВАЛЕНО. Отдел не найден в списке.') if error_response then log.error(error_response) end end end local function test_departments_update(new_dept_id) if not new_dept_id then return end log.info('--- Тест: Обновление подразделения (update) ---') local fields = { NAME = "Updated Test Dept - " .. os.date("%H-%M-%S") -- Меняем имя } local result, error_response = departments.departments.update(new_dept_id, fields) if result and result.result then log.info('Тест обновления: УСПЕШНО.') else log.error('Тест обновления: ПРОВАЛЕНО.') if error_response then log.error(error_response) end end end local function test_departments_delete(new_dept_id) if not new_dept_id then return end log.info('--- Тест: Удаление подразделения (delete) ---') local result, error_response = departments.departments.delete(new_dept_id) if result and result.result then log.info('Тест удаления: УСПЕШНО.') else log.error('Тест удаления: ПРОВАЛЕНО.') if error_response then log.error(error_response) end end --=== ЗАПУСК ТЕСТОВ ===-- test_departments_fields() local dept_name_for_list = "Test Dept - " .. os.date("%H-%M-%S") -- Сохраняем имя для теста getlist local new_dept_id = test_departments_add() test_departments_getlist(dept_name_for_list) -- <-- ЗДЕСЬ ВЫЗОВ getlist test_departments_update(new_dept_id) test_departments_delete(new_dept_id) log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")