82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
import asyncio
|
|
import sys
|
|
import unittest
|
|
from microdot import Microdot
|
|
from microdot.jinja import Template
|
|
from microdot.test_client import TestClient
|
|
|
|
Template.initialize('tests/templates')
|
|
|
|
|
|
@unittest.skipIf(sys.implementation.name == 'micropython',
|
|
'not supported under MicroPython')
|
|
class TestJinja(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
if hasattr(asyncio, 'set_event_loop'):
|
|
asyncio.set_event_loop(asyncio.new_event_loop())
|
|
cls.loop = asyncio.get_event_loop()
|
|
|
|
def _run(self, coro):
|
|
return self.loop.run_until_complete(coro)
|
|
|
|
def test_render_template(self):
|
|
s = Template('hello.jinja.txt').render(name='foo')
|
|
self.assertEqual(s, 'Hello, foo!')
|
|
|
|
def test_render_template_in_app(self):
|
|
app = Microdot()
|
|
|
|
@app.route('/')
|
|
async def index(req):
|
|
return Template('hello.jinja.txt').render(name='foo')
|
|
|
|
client = TestClient(app)
|
|
res = self._run(client.get('/'))
|
|
self.assertEqual(res.status_code, 200)
|
|
self.assertEqual(res.body, b'Hello, foo!')
|
|
|
|
def test_generate_template_in_app(self):
|
|
app = Microdot()
|
|
|
|
@app.route('/')
|
|
async def index(req):
|
|
return Template('hello.jinja.txt').generate(name='foo')
|
|
|
|
client = TestClient(app)
|
|
res = self._run(client.get('/'))
|
|
self.assertEqual(res.status_code, 200)
|
|
self.assertEqual(res.body, b'Hello, foo!')
|
|
|
|
def test_render_async_template_in_app(self):
|
|
Template.initialize('tests/templates', enable_async=True)
|
|
|
|
app = Microdot()
|
|
|
|
@app.route('/')
|
|
async def index(req):
|
|
return await Template('hello.jinja.txt').render_async(name='foo')
|
|
|
|
client = TestClient(app)
|
|
res = self._run(client.get('/'))
|
|
self.assertEqual(res.status_code, 200)
|
|
self.assertEqual(res.body, b'Hello, foo!')
|
|
|
|
Template.initialize('tests/templates')
|
|
|
|
def test_generate_async_template_in_app(self):
|
|
Template.initialize('tests/templates', enable_async=True)
|
|
|
|
app = Microdot()
|
|
|
|
@app.route('/')
|
|
async def index(req):
|
|
return Template('hello.jinja.txt').generate_async(name='foo')
|
|
|
|
client = TestClient(app)
|
|
res = self._run(client.get('/'))
|
|
self.assertEqual(res.status_code, 200)
|
|
self.assertEqual(res.body, b'Hello, foo!')
|
|
|
|
Template.initialize('tests/templates')
|