diff options
author | Chris Jerdonek <chris.jerdonek@gmail.com> | 2012-10-20 11:16:00 -0700 |
---|---|---|
committer | Chris Jerdonek <chris.jerdonek@gmail.com> | 2012-10-20 11:16:00 -0700 |
commit | f285f4aaae2a54cb35157eec7058b7941fcf3802 (patch) | |
tree | 0d8b610635c7733ef4c1c94b1df66b6ab2287163 /pystache/tests/test_renderer.py | |
parent | 5b00b6cd392a1f5f317cc18893198bb5d62c565d (diff) | |
download | pystache-f285f4aaae2a54cb35157eec7058b7941fcf3802.tar.gz |
Address issue #130: allow string coercion to be customized.
Diffstat (limited to 'pystache/tests/test_renderer.py')
-rw-r--r-- | pystache/tests/test_renderer.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/pystache/tests/test_renderer.py b/pystache/tests/test_renderer.py index df518f9..0dbe0d9 100644 --- a/pystache/tests/test_renderer.py +++ b/pystache/tests/test_renderer.py @@ -425,6 +425,39 @@ class RendererTests(unittest.TestCase, AssertStringMixin): actual = renderer.render(view) self.assertEqual('Hi pizza!', actual) + def test_custom_string_coercion_via_assignment(self): + """ + Test that string coercion can be customized via attribute assignment. + + """ + renderer = self._renderer() + def to_str(val): + if not val: + return '' + else: + return str(val) + + self.assertEqual(renderer.render('{{value}}', value=None), 'None') + renderer.str_coerce = to_str + self.assertEqual(renderer.render('{{value}}', value=None), '') + + def test_custom_string_coercion_via_subclassing(self): + """ + Test that string coercion can be customized via subclassing. + + """ + class MyRenderer(Renderer): + def str_coerce(self, val): + if not val: + return '' + else: + return str(val) + renderer1 = Renderer() + renderer2 = MyRenderer() + + self.assertEqual(renderer1.render('{{value}}', value=None), 'None') + self.assertEqual(renderer2.render('{{value}}', value=None), '') + # By testing that Renderer.render() constructs the right RenderEngine, # we no longer need to exercise all rendering code paths through |