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