bitrix/test_department.lua

119 lines
4.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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