mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-03-17 04:10:24 +00:00
* Modernize Python syntax, add Python 3.8 * Update Python version & dist in TravisCI * Add postgresql as addon * Switch to psycopg2-binary * Drop django.utils.six
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
from django.db.utils import ConnectionDoesNotExist
|
|
from django.test import TestCase
|
|
|
|
from tests.models import SoftDeletable
|
|
|
|
|
|
class SoftDeletableModelTests(TestCase):
|
|
def test_can_only_see_not_removed_entries(self):
|
|
SoftDeletable.objects.create(name='a', is_removed=True)
|
|
SoftDeletable.objects.create(name='b', is_removed=False)
|
|
|
|
queryset = SoftDeletable.objects.all()
|
|
|
|
self.assertEqual(queryset.count(), 1)
|
|
self.assertEqual(queryset[0].name, 'b')
|
|
|
|
def test_instance_cannot_be_fully_deleted(self):
|
|
instance = SoftDeletable.objects.create(name='a')
|
|
|
|
instance.delete()
|
|
|
|
self.assertEqual(SoftDeletable.objects.count(), 0)
|
|
self.assertEqual(SoftDeletable.all_objects.count(), 1)
|
|
|
|
def test_instance_cannot_be_fully_deleted_via_queryset(self):
|
|
SoftDeletable.objects.create(name='a')
|
|
|
|
SoftDeletable.objects.all().delete()
|
|
|
|
self.assertEqual(SoftDeletable.objects.count(), 0)
|
|
self.assertEqual(SoftDeletable.all_objects.count(), 1)
|
|
|
|
def test_delete_instance_no_connection(self):
|
|
obj = SoftDeletable.objects.create(name='a')
|
|
|
|
self.assertRaises(ConnectionDoesNotExist, obj.delete, using='other')
|
|
|
|
def test_instance_purge(self):
|
|
instance = SoftDeletable.objects.create(name='a')
|
|
|
|
instance.delete(soft=False)
|
|
|
|
self.assertEqual(SoftDeletable.objects.count(), 0)
|
|
self.assertEqual(SoftDeletable.all_objects.count(), 0)
|
|
|
|
def test_instance_purge_no_connection(self):
|
|
instance = SoftDeletable.objects.create(name='a')
|
|
|
|
self.assertRaises(ConnectionDoesNotExist, instance.delete,
|
|
using='other', soft=False)
|