/
wonkxe
/
Contact_and_task
Обзор
Документация
Войти
/
wonkxe
/
Contact_and_task
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/tests/test_task.py
115 строк
4 KB
wonkxe
1
25 май 2026, 13:57
25 май 2026, 13:57
8620ad8
Код
Авторство
О чём код?
""" Тесты контроллера задач (Этап 4). """ import sys, os, datetime sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from src.Connection.connect import db from src.Models.user import User from src.Models.contact import Contact from src.Models.task import Task from src.Controllers.task_controller import ( add_task, get_tasks_by_contact, update_task_status, filter_tasks_by_priority, delete_task ) from src.Controllers.contact_controller import add_contact, delete_contact def run_tests(): print("Запуск тестов задач...") db.connect() db.create_tables([User, Contact, Task], safe=True) User.delete().execute() Contact.delete().execute() Task.delete().execute() # Подготовка user = User.create(login="task_user") user.set_password("test") user.save() uid = user.id s, m, cid = add_contact(uid, "Дмитрий", "Кузнецов", "dima@mail.ru") passed, total = 0, 8 # 1. Добавление задачи s, m, tid1 = add_task(cid, uid, "Подготовить отчёт", datetime.date.today(), priority="high") if s and tid1: print("[PASS] Тест 1: Задача добавлена") passed += 1 else: print(f"[FAIL] Тест 1: {m}") # 2. Задача к чужому контакту other_user = User.create(login="other") other_user.set_password("pass") other_user.save() s, m, _ = add_task(cid, other_user.id, "Попытка взлома", datetime.date.today()) if not s: print("[PASS] Тест 2: Доступ к чужому контакту запрещен") passed += 1 else: print(f"[FAIL] Тест 2") # Добавляем вторую задачу для теста 3 _, _, tid2 = add_task(cid, uid, "Второй звонок", datetime.date.today(), priority="low") # 3. Получение задач контакта tasks = get_tasks_by_contact(cid, uid) if len(tasks) == 2: print("[PASS] Тест 3: Все задачи контакта получены") passed += 1 else: print(f"[FAIL] Тест 3: Ожидалось 2, получено {len(tasks)}") # 4. Изменение статуса s, m = update_task_status(tid1, uid, "progress") if s: print("[PASS] Тест 4: Статус обновлен") passed += 1 else: print(f"[FAIL] Тест 4: {m}") # 5. Изменение статуса чужой задачи s, m = update_task_status(tid1, other_user.id, "done") if not s: print("[PASS] Тест 5: Доступ к чужой задаче запрещен") passed += 1 else: print(f"[FAIL] Тест 5") # 6. Фильтрация по приоритету high_tasks = filter_tasks_by_priority(uid, "high") if len(high_tasks) == 1 and high_tasks[0].priority == "high": print("[PASS] Тест 6: Фильтрация по приоритету") passed += 1 else: print(f"[FAIL] Тест 6") # 7. Удаление задачи s, m = delete_task(tid2, uid) if s and len(get_tasks_by_contact(cid, uid)) == 1: print("[PASS] Тест 7: Задача удалена") passed += 1 else: print(f"[FAIL] Тест 7: {m}") # 8. Каскадное удаление s, m = delete_contact(cid, uid) remaining_tasks = Task.select().where(Task.contact == cid).count() if s and remaining_tasks == 0: print("[PASS] Тест 8: Каскадное удаление задач") passed += 1 else: print(f"[FAIL] Тест 8: Осталось задач {remaining_tasks}") User.delete().execute() Contact.delete().execute() Task.delete().execute() print(f"\nРезультат: {passed}/{total} тестов пройдено.") db.close() if __name__ == "__main__": run_tests()