Smoke tests for Django admin
Project description
Django-admin-smoke
Django-Admin-Smoke is a Django app providing smoke tests for django-admin.
Installation
pip install django-admin-smoke
Usage
Full example located at testproject.testapp.tests
from admin_smoke.tests import AdminTests, AdminBaseTestCase
from testproject.testapp import admin, models
class ProjectAdminTestCase(AdminTests, AdminBaseTestCase):
model_admin = admin.ProjectAdmin # ModelAdmin to test
model = models.Project # Django model to test against
object_name = 'project' # self.project is an edited object in this testcase
excluded_fields = ['client'] # fields excluded from presence check
def setUp(self):
super().setUp()
# We need existing object to test editing and deleting
self.project = models.Project.objects.create(name='first')
# All inlines for tested model admin should be non-empty, so we fill
# all related models.
self.task = models.Task.objects.create(name='first',
project=self.project)
def transform_to_new(self, data: dict) -> dict:
# Creating a new object is tested with following algorithm:
# 1. Open "edit" page for existing object
# 2. Clear PK value in form data
# 3. Clear PK values for all related objects in admin inlines
# 4. Clear FK values pointing to existing object in admin inlines
# 5. POST resulting data to "add" page
# This algorithm need some help with unique fields and other constraints
# and restrictions, so there is a hook for making newly created object
# valid.
data = data.copy()
# Project.name is unique, making new value
data['name'] += 'new'
# Manually reset PK/FK values in admin inlines
self.reset_inline_data(
data, # form data
'task_set', # name of inline prefix - it's FK's related_name
'project' # name of edited object FK field (FK.name)
)
# Task.name is also unique, it should be changed properly
data['task_set-0-name'] += '_new'
return data
def prepare_deletion(self):
# To delete an object with FK's with models.PROTECT behavior we need
# a hook to delete it manually before POST delete confirmation.
self.task.delete()
Happy testing and non-smoky admins :)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django-admin-smoke-0.0.10.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fe86b785a8367ddea97b4f9546c55609ca3d0ca3dd2210756e28e4a01b30bcc |
|
MD5 | 89f9ea854e68095ce45a2c4e97d9b336 |
|
BLAKE2b-256 | d34cd334dfaf79fc29d89a1914b0060fdb8ce80ad0eb722b671ae86f1fdf4b63 |
Close
Hashes for django_admin_smoke-0.0.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5276057a9fca8d5cd7d8dfff04118de9b04d7d4a14a6c7dd722cfffeb083685 |
|
MD5 | 71c173e99bd30e5d7ea8eb770b8f54e5 |
|
BLAKE2b-256 | f851070abacb39dd9045443aace80008adfdf373be5451cfc15ab9a4bfdebbf5 |