119 lines
4.8 KiB
Lua
119 lines
4.8 KiB
Lua
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("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|