bitrix/test_tasks.lua

119 lines
5.2 KiB
Lua
Raw Permalink 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 tasks = require('bitrix.tasks')
-- Настройка логирования (можно оставить как в api или задать свою)
log.outfile = 'logs/tests_tasks_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
log.level = 'trace' -- Уровень детализации логов
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
-- Подключаем модули.
-- bitrix.api уже содержит в себе все настройки подключения из config.bitrix
local tasks = require('bitrix.tasks')
-- ID задачи для тестов. Предполагается, что задача с таким ID существует.
-- Если задачи с ID 1 нет, создайте любую тестовую задачу вручную и используйте её ID.
local task_id = 242
--=== ТЕСТЫ ===--
local function test_task_get()
log.info('--- Тест: Получение задачи (get) ---')
local result, error_response = tasks.task.get(task_id)
if result and result.task then
log.info(string.format('Тест получения задачи: УСПЕШНО. Название: "%s"', result.task.title or 'N/A'))
else
log.error('Тест получения задачи: ПРОВАЛЕНО.')
log.error('Ответ сервера: ' .. json.encode(result))
if error_response then
log.error('Ответ сервера: ' .. json.encode(error_response))
end
end
end
local function test_task_list()
log.info('--- Тест: Листинг задач (list) ---')
-- Фильтр: задачи, созданные за последние 2 дня, в статусе "Новая" (STATUS = 0)
-- 1. Получаем временную метку (timestamp) для момента "2 дня назад"
local two_days_ago_timestamp = os.time() - 2 * 24 * 3600
-- 2. Форматируем временную метку в строку вида 'ГГГГ-ММ-ДД'
local date_two_days_ago = os.date("%Y-%m-%d", two_days_ago_timestamp)
-- 3. Собираем финальный фильтр для API
local filter = {
['>=DATE_CREATE'] = date_two_days_ago,
['STATUS'] = '0'
}
local result_list, error_response = tasks.task.list(nil, filter, {'ID', 'TITLE'}, nil, 0)
if result_list and #result_list > 0 then
log.info(string.format('Тест листинга задач: УСПЕШНО. Найдено задач: %d', #result_list))
elseif result_list and #result_list == 0 then
log.warning('Тест листинга задач: Задач не найдено по фильтру. Проверьте даты и статус.')
else
log.error('Тест листинга задач: ПРОВАЛЕНО.')
if error_response then
log.error('Ответ сервера: ' .. json.encode(error_response))
end
end
end
local function test_task_add_update_delete()
log.info('--- Тест: Цепочка Add -> Update -> Delete ---')
-- Add
log.debug('Шаг 1/3: Создание задачи...')
local add_result, add_error = tasks.task.add({
TITLE = 'Тестовая задача (авто-тест)',
DESCRIPTION = 'Создана автоматически тестовым скриптом',
RESPONSIBLE_ID = 1, -- ID ответственного (обычно 1 - текущий пользователь)
GROUP_ID = {} -- Приватная задача (без группы)
})
local new_task_id
if add_result and add_result.task and add_result.task.id then
new_task_id = add_result.task.id
log.info(string.format('Шаг 1/3: УСПЕШНО. ID новой задачи: %d', new_task_id))
else
log.error('Шаг 1/3: ПРОВАЛЕНО (создание).')
if add_error then log.error(add_error) end
return -- Останавливаем тест, если создание не удалось
end
-- Update
log.debug('Шаг 2/3: Обновление задачи...')
local update_result, update_error = tasks.task.update(new_task_id, {
DESCRIPTION = '[ОБНОВЛЕНО] Задача изменена автоматически тестовым скриптом'
})
if update_result and update_result.task then
log.info('Шаг 2/3: УСПЕШНО (обновление).')
else
log.error('Шаг 2/3: ПРОВАЛЕНО (обновление).')
if update_error then log.error(update_error) end
end
-- Delete
log.debug('Шаг 3/3: Удаление задачи...')
local delete_result, delete_error = tasks.task.delete(new_task_id)
if delete_result and delete_result.task then
log.info('Шаг 3/3: УСПЕШНО (удаление).')
else
log.error('Шаг 3/3: ПРОВАЛЕНО (удаление).')
if delete_error then log.error(delete_error) end
end
end
--=== ЗАПУСК ТЕСТОВ ===--
test_task_get()
test_task_list()
test_task_add_update_delete()
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")