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