Resolved Issue #164

This commit is contained in:
BJ Dierkes 2012-10-08 18:18:46 -05:00
parent 5a3440388e
commit 32cfe50d88
4 changed files with 26 additions and 2 deletions

View File

@ -33,6 +33,8 @@ Bugs:
Features:
* :issue:`161` - Ability to override `usage`
* :issue:`164` - Store previously rendered data as app._last_rendered, and
retrievable by app.get_last_rendered().
* :issue:`165` - Allow utils.fs.backup() to support a suffix kwarg
* :issue:`166` - Ability to set the 'app' for CementTestCase.make_app()
* :issue:`170` - Added support for `nested` and `embedded` controllers.

View File

@ -343,7 +343,8 @@ class CementApp(meta.MetaMixin):
self._validate_label()
self._loaded_bootstrap = None
self._parsed_args = None
self._last_rendered = None
self.ext = None
self.config = None
self.log = None
@ -511,8 +512,18 @@ class CementApp(meta.MetaMixin):
else:
out_text = str(res)
self._last_rendered = (data, out_text)
return out_text
def get_last_rendered(self):
"""
Return the (data, output_text) tuple of the last time self.render() was
called.
:returns: tuple (data, output_text)
"""
return self._last_rendered
@property
def pargs(self):
"""

View File

@ -56,6 +56,11 @@ The following outlines a basic test case using the cement.utils.test module.
# Run the applicaion, if necessary
self.app.run()
# Test the last rendered output (if app.render was used)
data, output = app.get_last_rendered()
self.eq(data, {'foo':'bar'})
self.eq(output, 'some rendered output text)
# Close the application, again if necessary
self.app.close()

View File

@ -212,4 +212,10 @@ class FoundationTestCase(test.CementTestCase):
app.setup()
app.run()
self.eq(app.pargs.debug, True)
def test_last_rendered(self):
self.app.setup()
output_text = self.app.render({'foo':'bar'})
last_data, last_output = self.app.get_last_rendered()
self.eq({'foo':'bar'}, last_data)
self.eq(output_text, last_output)