def test_builtin_serializers(): render = Engines() tests = [ (render.bencode, ("foo", ), dict(kind='basic'), ('application/x-bencode', '3:foo')), (render.bencode, (u"foo", ), {}, ('application/x-bencode', 'u3:foo')), (render.json, ("foo", ), {}, ('application/json', '"foo"')), (render.pickle, ("foo", ), {}, ('application/octet-stream', "S'foo'\np0\n.")), (render.cpickle, ("foo", ), {}, ('application/octet-stream', "S'foo'\np1\n.")), (render.yaml, ("foo", ), {}, ('application/x-yaml', 'foo\n...\n')) ] # Marshal is version-specific. if sys.version_info < (2, 6): tests.append((render.marshal, ("foo", ), {}, ('application/octet-stream', 't\x03\x00\x00\x00foo'))) elif sys.version_info < (3, 0): tests.append((render.marshal, ("foo", ), {}, ('application/octet-stream', 's\x03\x00\x00\x00foo'))) for engine, args, kw, expected in tests: yield partial(serializer, engine, expected, *args, **kw)
def test_engine_func(self): def engine(data, template=None): return 'text/plain', data render = Engines() render['raw'] = engine self.assertEqual(render.raw("foo"), ('text/plain', 'foo')) del render.raw
def test_engine_class(self): class Engine(object): def __call__(self, data, template=None): return 'text/plain', data render = Engines() render['raw'] = Engine self.assertEqual(render.raw("foo"), ('text/plain', 'foo')) del render.raw
def test_render_no_engine(self): render = Engines() try: self.assertEqual( render('./templates/hello-sprintf.txt', dict(name='world')), ('text/plain', "Hello world!")) except ValueError: pass except: self.fail()
def test_no_defaults(self): render = Engines() self.assertTrue('json' in render) self.assertTrue(callable(render.json)) self.assertEqual(render.options['json'], dict())
def test_render(self): render = Engines() self.assertEqual( render('sprintf:./templates/hello-sprintf.txt', dict(name='world')), ('text/plain', "Hello world!"))
def test_bad_engine_name(self): render = Engines() self.assertRaises(ValueError, lambda: render('text/html:'))
def test_defaults(self): render = Engines(json=dict(content_type="foo")) self.assertEqual(render.options['json'], dict(content_type="foo")) render.options['json'] = dict(content_type="bar") self.assertEqual(render.options['json'], dict(content_type="bar"))
def setUp(self): self.render = Engines()