File: test_admin_widgets.py

package info (click to toggle)
python-django-extensions 4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,820 kB
  • sloc: python: 18,601; javascript: 7,354; makefile: 108; xml: 17
file content (50 lines) | stat: -rw-r--r-- 1,583 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# -*- coding: utf-8 -*-
from django.test import TestCase
from django.utils.text import Truncator

from django_extensions.admin import widgets

from .testapp import models


class ForeignKeySearchInputTestCase(TestCase):
    def test_widget_works(self):
        name = models.Name.objects.create(name="Name")
        person = models.Person.objects.create(
            name=name,
            age=30,
        )
        club = models.Club.objects.create(
            name="Club",
        )
        membership = models.Membership.objects.create(club=club, person=person)

        widget = widgets.ForeignKeySearchInput(
            models.Membership._meta.get_field("person").remote_field,
            ["person__name"],
        )

        label = widget.label_for_value(membership.pk)

        self.assertEqual(
            Truncator(person).words(14, truncate="..."),
            label,
        )

        # Just making sure rendering the widget doesn't cause any issue
        widget.render("person", person.pk)
        widget.render("person", None)

        # Check media to make sure rendering media doesn't cause any issue
        self.assertListEqual(
            [
                "/static/django_extensions/js/jquery.bgiframe.js",
                "/static/django_extensions/js/jquery.ajaxQueue.js",
                "/static/django_extensions/js/jquery.autocomplete.js",
            ],
            widget.media._js,
        )
        self.assertListEqual(
            ["/static/django_extensions/css/jquery.autocomplete.css"],
            list(widget.media._css["all"]),
        )