1
1
"""isort:skip_file."""
2
2
3
3
import sys
4
+ import html
4
5
5
6
import pytest
6
7
@@ -66,14 +67,24 @@ def test_pre_save_none_values(self):
66
67
bleached_value = field .pre_save (model , False )
67
68
self ._validate (value , bleached_value )
68
69
70
+ def test_pre_save_do_not_escape (self ):
71
+ """Tests whether the :see:pre_save function works properly when field
72
+ escape argument is set to False."""
73
+
74
+ value = self ._get_test_value ()
75
+ model , field = self ._get_test_model (value , escape = False )
76
+
77
+ bleached_value = field .pre_save (model , False )
78
+ self ._validate (value , bleached_value , False )
79
+
69
80
@staticmethod
70
- def _get_test_model (value ):
71
- """Gets a test model and a artifically constructed
81
+ def _get_test_model (value , escape = True ):
82
+ """Gets a test model and an artificially constructed
72
83
:see:LocalizedBleachField instance to test with."""
73
84
74
85
model = ModelTest (value )
75
86
76
- field = LocalizedBleachField ()
87
+ field = LocalizedBleachField (escape = escape )
77
88
field .attname = "value"
78
89
return model , field
79
90
@@ -89,7 +100,7 @@ def _get_test_value():
89
100
return value
90
101
91
102
@staticmethod
92
- def _validate (non_bleached_value , bleached_value ):
103
+ def _validate (non_bleached_value , bleached_value , escaped_value = True ):
93
104
"""Validates whether the specified non-bleached value ended up being
94
105
correctly bleached.
95
106
@@ -100,14 +111,20 @@ def _validate(non_bleached_value, bleached_value):
100
111
bleached_value:
101
112
The value after bleaching.
102
113
"""
103
-
104
114
for lang_code , _ in settings .LANGUAGES :
105
115
if not non_bleached_value .get (lang_code ):
106
116
assert not bleached_value .get (lang_code )
107
117
continue
108
118
109
- expected_value = bleach .clean (
110
- non_bleached_value .get (lang_code ), get_bleach_default_options ()
119
+ cleaned_value = bleach .clean (
120
+ non_bleached_value .get (lang_code )
121
+ if escaped_value
122
+ else html .unescape (non_bleached_value .get (lang_code )),
123
+ get_bleach_default_options (),
124
+ )
125
+
126
+ expected_value = (
127
+ cleaned_value if escaped_value else html .unescape (cleaned_value )
111
128
)
112
129
113
130
assert bleached_value .get (lang_code ) == expected_value
0 commit comments