mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-07 02:48:27 +02:00
65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from django.contrib.auth.models import User
|
|
from django.utils import timezone
|
|
from django.utils.crypto import get_random_string
|
|
from rest_framework import status
|
|
from rest_framework.test import APITestCase
|
|
|
|
from bookmarks.models import Bookmark, Tag
|
|
|
|
|
|
class BookmarkFactoryMixin:
|
|
user = None
|
|
|
|
def get_or_create_test_user(self):
|
|
if self.user is None:
|
|
self.user = User.objects.create_user('testuser', 'test@example.com', 'password123')
|
|
|
|
return self.user
|
|
|
|
def setup_bookmark(self, is_archived: bool = False, tags: [Tag] = [], user: User = None):
|
|
if user is None:
|
|
user = self.get_or_create_test_user()
|
|
unique_id = get_random_string(length=32)
|
|
bookmark = Bookmark(
|
|
url='https://example.com/' + unique_id,
|
|
date_added=timezone.now(),
|
|
date_modified=timezone.now(),
|
|
owner=user,
|
|
is_archived=is_archived
|
|
)
|
|
bookmark.save()
|
|
for tag in tags:
|
|
bookmark.tags.add(tag)
|
|
bookmark.save()
|
|
return bookmark
|
|
|
|
def setup_tag(self, user: User = None):
|
|
if user is None:
|
|
user = self.get_or_create_test_user()
|
|
name = get_random_string(length=32)
|
|
tag = Tag(name=name, date_added=timezone.now(), owner=user)
|
|
tag.save()
|
|
return tag
|
|
|
|
|
|
class LinkdingApiTestCase(APITestCase):
|
|
def get(self, url, expected_status_code=status.HTTP_200_OK):
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, expected_status_code)
|
|
return response
|
|
|
|
def post(self, url, data=None, expected_status_code=status.HTTP_200_OK):
|
|
response = self.client.post(url, data, format='json')
|
|
self.assertEqual(response.status_code, expected_status_code)
|
|
return response
|
|
|
|
def put(self, url, data=None, expected_status_code=status.HTTP_200_OK):
|
|
response = self.client.put(url, data, format='json')
|
|
self.assertEqual(response.status_code, expected_status_code)
|
|
return response
|
|
|
|
def delete(self, url, expected_status_code=status.HTTP_200_OK):
|
|
response = self.client.delete(url)
|
|
self.assertEqual(response.status_code, expected_status_code)
|
|
return response
|