1
- import unittest
2
1
from django .contrib import admin
3
2
from django .contrib .admin .views .main import ChangeList
4
3
from django .template import Context , Template
4
+ from django .test import TransactionTestCase
5
5
from regressiontests .admin_changelist .models import Child , Parent
6
6
7
- class ChangeListTests (unittest . TestCase ):
7
+ class ChangeListTests (TransactionTestCase ):
8
8
def test_select_related_preserved (self ):
9
9
"""
10
10
Regression test for #10348: ChangeList.get_query_set() shouldn't
@@ -18,9 +18,8 @@ def test_select_related_preserved(self):
18
18
19
19
def test_result_list_html (self ):
20
20
"""
21
- Regression test for #11791: Inclusion tag result_list generates a
22
- table and this checks that the items are nested within the table
23
- element tags.
21
+ Verifies that inclusion tag result_list generates a table when with
22
+ default ModelAdmin settings.
24
23
"""
25
24
new_parent = Parent .objects .create (name = 'parent' )
26
25
new_child = Child .objects .create (name = 'name' , parent = new_parent )
@@ -29,16 +28,27 @@ def test_result_list_html(self):
29
28
cl = ChangeList (request , Child , m .list_display , m .list_display_links ,
30
29
m .list_filter , m .date_hierarchy , m .search_fields ,
31
30
m .list_select_related , m .list_per_page , m .list_editable , m )
32
- FormSet = m .get_changelist_formset (request )
33
- cl .formset = FormSet (queryset = cl .result_list )
31
+ cl .formset = None
34
32
template = Template ('{% load admin_list %}{% spaceless %}{% result_list cl %}{% endspaceless %}' )
35
33
context = Context ({'cl' : cl })
36
34
table_output = template .render (context )
37
- hidden_input_elem = '<input type="hidden" name="form-0-id" value="1" id="id_form-0-id" />'
38
- self .failIf (table_output .find (hidden_input_elem ) == - 1 ,
39
- 'Failed to find expected hidden input element in: %s' % table_output )
40
- self .failIf (table_output .find ('<td>%s</td>' % hidden_input_elem ) == - 1 ,
41
- 'Hidden input element is not enclosed in <td> element.' )
35
+ row_html = '<tbody><tr class="row1"><td><input type="checkbox" class="action-select" value="1" name="_selected_action" /></td><th><a href="1/">name</a></th><td>Parent object</td></tr></tbody>'
36
+ self .failIf (table_output .find (row_html ) == - 1 ,
37
+ 'Failed to find expected row element: %s' % table_output )
38
+
39
+ def test_result_list_editable_html (self ):
40
+ """
41
+ Regression tests for #11791: Inclusion tag result_list generates a
42
+ table and this checks that the items are nested within the table
43
+ element tags.
44
+ Also a regression test for #13599, verifies that hidden fields
45
+ when list_editable is enabled are rendered in a div outside the
46
+ table.
47
+ """
48
+ new_parent = Parent .objects .create (name = 'parent' )
49
+ new_child = Child .objects .create (name = 'name' , parent = new_parent )
50
+ request = MockRequest ()
51
+ m = ChildAdmin (Child , admin .site )
42
52
43
53
# Test with list_editable fields
44
54
m .list_display = ['id' , 'name' , 'parent' ]
@@ -52,10 +62,14 @@ def test_result_list_html(self):
52
62
template = Template ('{% load admin_list %}{% spaceless %}{% result_list cl %}{% endspaceless %}' )
53
63
context = Context ({'cl' : cl })
54
64
table_output = template .render (context )
55
- self .failIf (table_output .find (hidden_input_elem ) == - 1 ,
56
- 'Failed to find expected hidden input element in: %s' % table_output )
57
- self .failIf (table_output .find ('<td>%s</td>' % hidden_input_elem ) == - 1 ,
58
- 'Hidden input element is not enclosed in <td> element.' )
65
+ # make sure that hidden fields are in the correct place
66
+ hiddenfields_div = '<div class="hiddenfields"><input type="hidden" name="form-0-id" value="1" id="id_form-0-id" /></div>'
67
+ self .failIf (table_output .find (hiddenfields_div ) == - 1 ,
68
+ 'Failed to find hidden fields in: %s' % table_output )
69
+ # make sure that list editable fields are rendered in divs correctly
70
+ editable_name_field = '<input name="form-0-name" value="name" class="vTextField" maxlength="30" type="text" id="id_form-0-name" />'
71
+ self .failIf ('<td>%s</td>' % editable_name_field == - 1 ,
72
+ 'Failed to find "name" list_editable field in: %s' % table_output )
59
73
60
74
class ChildAdmin (admin .ModelAdmin ):
61
75
list_display = ['name' , 'parent' ]
0 commit comments