This commit is contained in:
Raphael Rouiller
2024-07-08 14:06:52 +02:00
commit aa54287126
96 changed files with 2718 additions and 0 deletions

View File

@ -0,0 +1,27 @@
from django.urls import reverse
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.test import APITestCase
from your_app.models import Source, Tag
User = get_user_model()
class SearchTests(APITestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpassword123')
self.client.force_authenticate(user=self.user)
self.tag = Tag.objects.create(name='covid')
self.source = Source.objects.create(
title='COVID-19 Research',
url='https://example.com/covid',
description='Latest research on COVID-19',
added_by=self.user
)
self.source.tags.add(self.tag)
def test_search_source(self):
url = reverse('search')
response = self.client.get(url, {'q': 'COVID'})
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data), 1)
self.assertEqual(response.data[0]['title'], 'COVID-19 Research')

View File

@ -0,0 +1,35 @@
from django.urls import reverse
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.test import APITestCase
from your_app.models import Source, Tag
User = get_user_model()
class SourceTests(APITestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpassword123')
self.client.force_authenticate(user=self.user)
self.tag = Tag.objects.create(name='test_tag')
def test_create_source(self):
url = reverse('source-list-create')
data = {
'title': 'Test Source',
'url': 'https://example.com',
'archived_url': 'https://archive.is/example.com',
'description': 'This is a test source',
'category': 'test',
'tags': [self.tag.id]
}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Source.objects.count(), 1)
self.assertEqual(Source.objects.get().title, 'Test Source')
def test_list_sources(self):
Source.objects.create(title='Test Source', url='https://example.com', added_by=self.user)
url = reverse('source-list-create')
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data), 1)

View File

@ -0,0 +1,30 @@
from django.urls import reverse
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.test import APITestCase
from your_app.models import Suggestion
User = get_user_model()
class SuggestionTests(APITestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpassword123')
self.client.force_authenticate(user=self.user)
def test_create_suggestion(self):
url = reverse('suggestion-list-create')
data = {
'url': 'https://example.com',
'description': 'This is a test suggestion'
}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Suggestion.objects.count(), 1)
self.assertEqual(Suggestion.objects.get().url, 'https://example.com')
def test_list_suggestions(self):
Suggestion.objects.create(url='https://example.com', suggested_by=self.user)
url = reverse('suggestion-list-create')
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data), 1)

View File

@ -0,0 +1,41 @@
from django.urls import reverse
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.test import APITestCase
from rest_framework_simplejwt.tokens import RefreshToken
User = get_user_model()
class UserAuthTests(APITestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpassword123', email='test@example.com')
self.user.save()
def test_register_user(self):
url = reverse('user-register')
data = {'username': 'newuser', 'password': 'newpassword123', 'email': 'newuser@example.com'}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
def test_login_user(self):
url = reverse('user-login')
data = {'username': 'testuser', 'password': 'testpassword123'}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertIn('access', response.data)
self.assertIn('refresh', response.data)
def test_logout_user(self):
refresh = RefreshToken.for_user(self.user)
self.client.credentials(HTTP_AUTHORIZATION=f'Bearer {refresh.access_token}')
url = reverse('user-logout')
data = {'refresh': str(refresh)}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_user_profile(self):
self.client.force_authenticate(user=self.user)
url = reverse('user-profile')
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['username'], 'testuser')