root / trunk / breve / tests / tools.py

Revision 412, 2.1 kB (checked in by cliff, 8 months ago)

add plugin/helpers, render_decorator and tests

Line 
1# -*- coding: utf-8 -*-
2
3import sys, os
4import doctest, unittest
5
6if __name__ == '__main__':
7    # force import from source directory rather than site-packages
8    sys.path.insert ( 0, os.path.abspath ( '../..' ) )
9    import breve
10
11from breve.tags.html import tags
12from breve.tags.entities import entities
13from breve.flatten import flatten
14from breve.tools.soup2breve import convert_file, meta_handler
15from breve.tests.lib import diff, test_root, template_root, my_name, expected_output
16
17class Soup2BreveTestCase ( unittest.TestCase ):
18   
19    def test_soup2breve ( self ):
20        ''' round-trip some html '''
21
22        breve_source = ''.join ( 
23            convert_file ( 
24                os.path.join ( test_root ( ), 'html/index.html' ), 
25                dict ( meta=meta_handler ) 
26            ) 
27        )
28        code_object = compile ( breve_source, 'soup2breve', 'eval' )
29
30        _globals = dict ( E = entities )
31        _globals.update ( tags )
32
33        actual = flatten ( eval ( code_object, _globals ) )
34        expected = file ( os.path.join ( test_root ( ), 'html/index.html' ) ).read ( )
35
36        try:
37            # we can't actually round trip because attributes never come out in
38            # the same order twice =(
39            self.assertEqual ( len ( actual ), len ( expected ) )
40        except AssertionError:
41            diff ( actual, expected )
42            raise
43
44from breve.plugin.helpers import render_decorator
45
46class PluginHelpersTestCase ( unittest.TestCase ):
47   
48    def test_render_decorator ( self ):
49        '''test helpers.render_decorator'''
50
51        @render_decorator ( 'index', root = template_root ( ), namespace = 'v' )
52        def render_test ( ):
53            return dict ( title='test decorator', message='hello, world' )
54
55        actual = render_test ( )   
56        expected = expected_output ( )
57
58        self.assertEqual ( actual, expected )
59
60
61
62
63
64def suite ( ):
65    suite = unittest.TestSuite ( )
66
67    suite.addTest ( unittest.makeSuite ( Soup2BreveTestCase, 'test' ) )
68    suite.addTest ( unittest.makeSuite ( PluginHelpersTestCase, 'test' ) )
69
70    return suite
71
72if __name__ == '__main__':
73    unittest.main ( defaultTest = 'suite' )
Note: See TracBrowser for help on using the browser.