diff --git a/tests/helpers.py b/tests/helpers.py new file mode 100644 index 0000000..57d2099 --- /dev/null +++ b/tests/helpers.py @@ -0,0 +1,19 @@ +from django.contrib.auth.models import User + +from django_ai_assistant.models import Message, Thread + + +def create_thread( + name: str | None = None, user: User | None = None, message: str | None = None +) -> Thread: + name = name or "Test Thread" + user = user or User.objects.create_user(username="test_user") + message = message or "Test Message" + + thread = Thread.objects.create(name=name, created_by=user) + + Message.objects.create(message={"content": message}, thread=thread) + + thread.refresh_from_db() + + return thread diff --git a/tests/test_views.py b/tests/test_views.py index 00e72e2..9396bda 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -1,5 +1,6 @@ from http import HTTPStatus +from django.contrib.auth.models import User from django.test import Client, TestCase import pytest @@ -7,6 +8,7 @@ from django_ai_assistant.exceptions import AIAssistantNotDefinedError from django_ai_assistant.helpers.assistants import AIAssistant, register_assistant from django_ai_assistant.tools import BaseModel, Field, method_tool +from tests.helpers import create_thread # Set up @@ -73,4 +75,24 @@ def test_does_not_return_assistant_if_unauthorized(self): # Threads Views -# Up next + +class ThreadsListViewsTests(TestCase): + def setUp(self): + super().setUp() + self.user = User.objects.create_user(username="testuser", password="password") + self.client = Client() + self.client.login(username="testuser", password="password") + + def test_list_threads_without_results(self): + response = self.client.get("/threads/") + + assert response.status_code == HTTPStatus.OK + assert response.json() == [] + + def test_list_threads_with_results(self): + thread = create_thread(user=self.user) + + response = self.client.get("/threads/") + + assert response.status_code == HTTPStatus.OK + assert response.json()[0].get("id") == thread.id