38191-vm/core/tests.py
2026-02-09 04:37:40 +00:00

56 lines
1.9 KiB
Python

from django.test import TestCase, Client
from django.contrib.auth.models import User
from django.urls import reverse
from .models import Bookmark
class BookmarkTagUpdateTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='password')
self.client = Client()
self.client.login(username='testuser', password='password')
self.bookmark = Bookmark.objects.create(
user=self.user,
url='https://example.com',
title='Test Bookmark',
notes='Test Notes'
)
self.bookmark.tags.add('initial')
def test_update_tags(self):
url = reverse('bookmark-edit', args=[self.bookmark.pk])
data = {
'url': 'https://example.com',
'title': 'Updated Title',
'notes': 'Updated Notes',
'tags_input': 'updated, new-tag',
# 'is_favorite': False # BooleanField handling in forms usually requires 'on' or missing.
# If missing, it's false.
}
response = self.client.post(url, data)
# Check for redirect (success)
self.assertEqual(response.status_code, 302)
self.bookmark.refresh_from_db()
self.assertEqual(self.bookmark.title, 'Updated Title')
tags = list(self.bookmark.tags.names())
tags.sort()
self.assertEqual(tags, ['new-tag', 'updated'])
def test_clear_tags(self):
url = reverse('bookmark-edit', args=[self.bookmark.pk])
data = {
'url': 'https://example.com',
'title': 'Updated Title',
'notes': 'Updated Notes',
'tags_input': '', # Empty tags
}
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
self.bookmark.refresh_from_db()
self.assertEqual(self.bookmark.tags.count(), 0)