Skip to content

Commit

Permalink
add test that will cause error noripyt#226
Browse files Browse the repository at this point in the history
  • Loading branch information
PetrDlouhy committed Mar 10, 2023
1 parent 52406ec commit c2b5b02
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 2 deletions.
6 changes: 6 additions & 0 deletions admin_tests/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.contrib import admin
from .models import TestModel

@admin.register(TestModel)
class TestModelAdmin(admin.ModelAdmin):
list_display = ('name', 'owner')
19 changes: 19 additions & 0 deletions admin_tests/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.conf import settings
from django.db.models import Q, UniqueConstraint, Model, CharField, ForeignKey, SET_NULL
from django.db.models.functions import Lower


class TestModel(Model):
name = CharField(max_length=20)
owner = ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True,
on_delete=SET_NULL)

class Meta:
ordering = ('name',)
constraints = [
UniqueConstraint(
Lower("name").desc(),
condition=Q(owner=None),
name="unique_name",
)
]
19 changes: 19 additions & 0 deletions admin_tests/test_admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.test import TestCase
from django.contrib.auth.models import User
from .models import TestModel
from django.test import Client


class AdminTestCase(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create(username='admin', is_staff=True, is_superuser=True)

def test_save_test_model(self):
"""
Model 'TestModel' has UniqueConstraint which caused problems when saving TestModelAdmin in Django >= 4.1
"""
self.client.force_login(self.user)
response = self.client.post('/admin/tests/test/add/', {'name': 'test', 'public': True})
self.assertEqual(response.status_code, 302)
self.assertEqual(Test.objects.count(), 1)
4 changes: 3 additions & 1 deletion runtests_urls.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import debug_toolbar
from django.urls import re_path, include
from django.urls import path, re_path, include
from django.http import HttpResponse
from django.contrib import admin


def empty_page(request):
Expand All @@ -10,4 +11,5 @@ def empty_page(request):
urlpatterns = [
re_path(r'^$', empty_page),
re_path(r'^__debug__/', include(debug_toolbar.urls)),
path('admin/', admin.site.urls),
]
16 changes: 15 additions & 1 deletion settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,13 @@

INSTALLED_APPS = [
'cachalot',
'cachalot.admin_tests',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.postgres', # Enables the unaccent lookup.
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.messages',
]

MIGRATION_MODULES = {
Expand All @@ -104,6 +108,12 @@
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
}
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
Expand All @@ -116,7 +126,11 @@
}
]

MIDDLEWARE = []
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]
PASSWORD_HASHERS = ['django.contrib.auth.hashers.MD5PasswordHasher']
SECRET_KEY = 'it’s not important in tests but we have to set it'

Expand Down

0 comments on commit c2b5b02

Please sign in to comment.