22
22
sys .path .insert (0 , os .path .join (os .path .dirname (os .path .abspath (__file__ )), '..' , '..' ) + os .sep )
23
23
os .environ ['DJANGO_SETTINGS_MODULE' ] = 'settings'
24
24
25
- from django .test import TestCase # noqa: E402 isort:skip
25
+ from django .test import TestCase , RequestFactory # noqa: E402 isort:skip
26
26
from django .test .client import Client # noqa: E402 isort:skip
27
27
from django .test .utils import override_settings # noqa: E402 isort:skip
28
28
@@ -36,9 +36,8 @@ def setUpClass(cls):
36
36
django .setup ()
37
37
super (AbstractJSReverseTestCase , cls ).setUpClass ()
38
38
39
- def assertEqualJSUrlEval (self , url_call , expected_url ):
40
- response = self .client .post ('/jsreverse/' )
41
- script = '{}return {};' .format (smart_str (response .content ), url_call )
39
+ def assertEqualJSEval (self , js , url_call , expected_url ):
40
+ script = '{}return {};' .format (js , url_call )
42
41
module = 'console.log(new Function({})());' .format (json .dumps (script ))
43
42
stdout = (
44
43
subprocess
@@ -48,6 +47,11 @@ def assertEqualJSUrlEval(self, url_call, expected_url):
48
47
self .assertEqual (re .sub (r'\n$' , '' , stdout ), expected_url )
49
48
50
49
50
+ def assertEqualJSUrlEval (self , * args , ** kwargs ):
51
+ js = smart_str (self .client .post ('/jsreverse/' ).content )
52
+ self .assertEqualJSEval (js , * args , ** kwargs )
53
+
54
+
51
55
@override_settings (ROOT_URLCONF = 'django_js_reverse.tests.test_urls' )
52
56
class JSReverseViewTestCaseMinified (AbstractJSReverseTestCase , TestCase ):
53
57
def test_view_no_url_args (self ):
@@ -258,14 +262,23 @@ def test_script_prefix(self):
258
262
259
263
260
264
261
- @override_settings (ROOT_URLCONF = 'django_js_reverse.tests.test_urls' )
265
+ @override_settings (
266
+ ROOT_URLCONF = 'django_js_reverse.tests.test_urls' ,
267
+ TEMPLATE_CONTEXT_PROCESSORS = ['django.core.context_processors.request' ],
268
+ )
262
269
class JSReverseTemplateTagTest (AbstractJSReverseTestCase , TestCase ):
263
270
def test_tpl_tag_with_request_in_context (self ):
264
- context_instance = RequestContext (self .client .request )
271
+ request = RequestFactory ().post ('/jsreverse/' )
272
+ request .urlconf = 'django_js_reverse.tests.test_urlconf_urls'
265
273
tpl = Template ('{% load js_reverse %}{% js_reverse_inline %}' )
266
- js_from_tag = tpl .render (context_instance )
267
- js_from_view = smart_str (self .client .post ('/jsreverse/' ).content )
268
- self .assertEqual (js_from_tag , js_from_view )
274
+ js = tpl .render (RequestContext (request ))
275
+ self .assertEqualJSEval (js , 'Urls.test_changed_urlconf()' , '/test_changed_urlconf/' )
276
+
277
+ def test_tpl_tag_with_dict_request_in_context (self ):
278
+ request = {'urlconf' : 'django_js_reverse.tests.test_urlconf_urls' }
279
+ tpl = Template ('{% load js_reverse %}{% js_reverse_inline %}' )
280
+ js = tpl .render (Context ({'request' : request }))
281
+ self .assertEqualJSEval (js , 'Urls.test_changed_urlconf()' , '/test_changed_urlconf/' )
269
282
270
283
def test_tpl_tag_without_request_in_context (self ):
271
284
context_instance = Context ()
0 commit comments