diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py
index f1844f24..1bcd755d 100644
--- a/gluon/tests/test_html.py
+++ b/gluon/tests/test_html.py
@@ -17,307 +17,10 @@ from storage import Storage
class TestBareHelpers(unittest.TestCase):
- def test_BR(self):
- self.assertEqual(BR(_a='1', _b='2').xml(), ' ')
-
- def test_EMBED(self):
- self.assertEqual(EMBED(_a='1', _b='2').xml(),
- ' ')
-
- def test_HR(self):
- self.assertEqual(HR(_a='1', _b='2').xml(), '
')
-
- def test_IMG(self):
- self.assertEqual(IMG(_a='1', _b='2').xml(),
- ' ')
-
- def test_INPUT(self):
- self.assertEqual(INPUT(_a='1', _b='2').xml(),
- ' ')
-
- def test_LINK(self):
- self.assertEqual(LINK(_a='1', _b='2').xml(),
- ' ')
-
- def test_META(self):
- self.assertEqual(META(_a='1', _b='2').xml(),
- ' ')
-
- def test_A(self):
- self.assertEqual(
- A('<>', _a='1', _b='2').xml(),
- '<> '
- )
- self.assertEqual(
- A('a', cid='b').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', callback='b', _id='c').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', delete='tr').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', _id='b', target='').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', component='b').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', _id='b', callback='c', noconfirm=True).xml(),
- 'a '
- )
- self.assertEqual(
- A('a', cid='b').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', cid='b', _disable_with='processing...').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', callback='b', delete='tr', noconfirm=True, _id='c').xml(),
- 'a '
- )
- self.assertEqual(
- A('a', callback='b', delete='tr', confirm='Are you sure?', _id='c').xml(),
- 'a '
- )
-
- def test_B(self):
- self.assertEqual(B('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_BODY(self):
- self.assertEqual(BODY('<>', _a='1', _b='2').xml(),
- '<>')
-
- def test_CENTER(self):
- self.assertEqual(CENTER('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_DIV(self):
- self.assertEqual(DIV('<>', _a='1', _b='2').xml(),
- '<>
')
- # attributes can be updated like in a dict
- div = DIV('<>', _a='1')
- div['_b'] = '2'
- self.assertEqual(div.xml(),
- '<>
')
- # also with a mapping
- div.update(_b=2, _c=3)
- self.assertEqual(div.xml(),
- '<>
')
- # length of the DIV is the number of components
- self.assertEqual(len(DIV('a', 'bc')), 2)
- # also if empty, DIV is True in a boolean evaluation
- self.assertTrue(True if DIV() else False)
- # parent and siblings
- a = DIV(SPAN('a'), DIV('b'))
- s = a.element('span')
- d = s.parent
- d['_class'] = 'abc'
- self.assertEqual(a.xml(), '')
- self.assertEqual([el.xml() for el in s.siblings()], ['b
'])
- self.assertEqual(s.sibling().xml(), 'b
')
- self.assertEqual(s.siblings('a'), [])
-
- def test_EM(self):
- self.assertEqual(EM('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_FIELDSET(self):
- self.assertEqual(FIELDSET('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_FORM(self):
- self.assertEqual(FORM('<>', _a='1', _b='2').xml(),
- '')
-
- def test_H1(self):
- self.assertEqual(H1('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_H2(self):
- self.assertEqual(H2('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_H3(self):
- self.assertEqual(H3('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_H4(self):
- self.assertEqual(H4('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_H5(self):
- self.assertEqual(H5('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_H6(self):
- self.assertEqual(H6('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_HEAD(self):
- self.assertEqual(HEAD('<>', _a='1', _b='2').xml(),
- '<>')
-
- def test_HTML(self):
- self.assertEqual(HTML('<>', _a='1', _b='2').xml(),
- '\n<>')
-
- def test_IFRAME(self):
- self.assertEqual(IFRAME('<>', _a='1', _b='2').xml(),
- '')
-
- def test_LABEL(self):
- self.assertEqual(LABEL('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_LI(self):
- self.assertEqual(LI('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_OBJECT(self):
- self.assertEqual(OBJECT('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_OL(self):
- self.assertEqual(OL('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_OPTION(self):
- self.assertEqual(OPTION('<>', _a='1', _b='2').xml(),
- '<>' +
- ' ')
-
- def test_P(self):
- self.assertEqual(P('<>', _a='1', _b='2').xml(),
- '<>
')
- # test cr2br
- self.assertEqual(P('a\nb').xml(), 'a\nb
')
- self.assertEqual(P('a\nb', cr2br=True).xml(), 'a b
')
-
- def test_PRE(self):
- self.assertEqual(PRE('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_SCRIPT(self):
- self.assertEqual(SCRIPT('<>', _a='1', _b='2').xml(),
- '''''')
- self.assertEqual(SCRIPT('<>').xml(),
- '''''')
- self.assertEqual(SCRIPT().xml(), '')
-
- def test_SELECT(self):
- self.assertEqual(SELECT('<>', _a='1', _b='2').xml(),
- '' +
- '<> ')
-
- def test_SPAN(self):
- self.assertEqual(SPAN('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_STYLE(self):
- self.assertEqual(STYLE('<>', _a='1', _b='2').xml(),
- '')
-
- def test_TABLE(self):
- self.assertEqual(TABLE('<>', _a='1', _b='2').xml(),
- '')
-
- def test_TBODY(self):
- self.assertEqual(TBODY('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_TD(self):
- self.assertEqual(TD('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_TEXTAREA(self):
- self.assertEqual(TEXTAREA('<>', _a='1', _b='2').xml(),
- '')
- # override _rows and _cols
- self.assertEqual(TEXTAREA('<>', _a='1', _b='2', _rows=5, _cols=20).xml(),
- '')
-
- def test_TFOOT(self):
- self.assertEqual(TFOOT('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_TH(self):
- self.assertEqual(TH('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_THEAD(self):
- self.assertEqual(THEAD('<>', _a='1', _b='2').xml(),
- '<> ')
- # self.assertEqual(THEAD(TRHEAD('<>'), _a='1', _b='2').xml(),
- # '<> ')
- self.assertEqual(THEAD(TR('<>'), _a='1', _b='2').xml(),
- '<> ')
-
- def test_TITLE(self):
- self.assertEqual(TITLE('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_TR(self):
- self.assertEqual(TR('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_TT(self):
- self.assertEqual(TT('<>', _a='1', _b='2').xml(),
- '<> ')
-
- def test_UL(self):
- self.assertEqual(UL('<>', _a='1', _b='2').xml(),
- '')
-
- def test_XML(self):
- # sanitization process
- self.assertEqual(XML('').xml(),
- '')
- # with sanitize, data-attributes are not permitted
- self.assertEqual(XML('', sanitize=True).xml(),
- 'HelloWorld ')
- # stringify by default
- self.assertEqual(XML(1.3), '1.3')
- self.assertEqual(XML(u'è
').xml(), '\xc3\xa8
')
- # you can calc len on the class, that equals the xml() and the str()
- self.assertEqual(len(XML('1.3')), len('1.3'))
- self.assertEqual(len(XML('1.3').xml()), len('1.3'))
- self.assertEqual(len(str(XML('1.3'))), len('1.3'))
- # you can concatenate them to strings (check for __add__ and __radd__ methods)
- self.assertEqual(XML('a') + 'b', 'ab')
- self.assertEqual(XML('a') + XML('b'), 'ab')
- self.assertEqual('a' + XML('b'), 'ab')
- # you can compare them
- self.assertEqual(XML('a') == XML('a'), True)
- # beware that the comparison is made on the XML repr
- self.assertEqual(XML('', sanitize=True),
- XML('HelloWorld '))
- # bug check for the sanitizer for closing no-close tags
- self.assertEqual(XML('Test
Test
', sanitize=True),
- XML('Test
Test
'))
-
- def test_TAG(self):
- self.assertEqual(TAG.first(TAG.second('test'), _key=3).xml(),
- 'test ')
- # ending in underscore "triggers" style
- self.assertEqual(TAG.first_(TAG.second('test'), _key=3).xml(),
- ' ')
+ # TODO: def test_xmlescape(self):
+ # TODO: def test_call_as_list(self):
+ # TODO: def test_truncate_string(self):
+ # TODO: def test_truncate_string(self):
def test_StaticURL(self):
# test response.static_version coupled with response.static_version_urls
@@ -331,20 +34,21 @@ class TestBareHelpers(unittest.TestCase):
response.static_version_urls = True
self.assertEqual(URL('a', 'static', 'design.css'), '/a/static/_1.2.3/design.css')
- def test_URL(self):
+ def testURL(self):
self.assertEqual(URL('a', 'c', 'f', args='1'), '/a/c/f/1')
self.assertEqual(URL('a', 'c', 'f', args=('1', '2')), '/a/c/f/1/2')
self.assertEqual(URL('a', 'c', 'f', args=['1', '2']), '/a/c/f/1/2')
self.assertEqual(URL('a', 'c', '/f'), '/a/c/f')
self.assertEqual(URL('a', 'c', 'f.json'), '/a/c/f.json')
self.assertRaises(SyntaxError, URL, *['a'])
+
request = Storage()
request.application = 'a'
request.controller = 'c'
request.function = 'f'
request.env = {}
- from globals import current # TODO: Check if this import can go at the top of the file with other imports
+ from globals import current # Can't be moved with other import
current.request = request
must_return = '/a/c/f'
@@ -432,6 +136,377 @@ class TestBareHelpers(unittest.TestCase):
rtn = verifyURL(r, user_signature=True)
self.assertEqual(rtn, True)
+ # TODO: def test_XmlComponent(self):
+
+ def test_XML(self):
+ # sanitization process
+ self.assertEqual(XML('').xml(),
+ '')
+ # with sanitize, data-attributes are not permitted
+ self.assertEqual(XML('', sanitize=True).xml(),
+ 'HelloWorld ')
+ # stringify by default
+ self.assertEqual(XML(1.3), '1.3')
+ self.assertEqual(XML(u'è
').xml(), '\xc3\xa8
')
+ # you can calc len on the class, that equals the xml() and the str()
+ self.assertEqual(len(XML('1.3')), len('1.3'))
+ self.assertEqual(len(XML('1.3').xml()), len('1.3'))
+ self.assertEqual(len(str(XML('1.3'))), len('1.3'))
+ # you can concatenate them to strings (check for __add__ and __radd__ methods)
+ self.assertEqual(XML('a') + 'b', 'ab')
+ self.assertEqual(XML('a') + XML('b'), 'ab')
+ self.assertEqual('a' + XML('b'), 'ab')
+ # you can compare them
+ self.assertEqual(XML('a') == XML('a'), True)
+ # beware that the comparison is made on the XML repr
+ self.assertEqual(XML('', sanitize=True),
+ XML('HelloWorld '))
+ # bug check for the sanitizer for closing no-close tags
+ self.assertEqual(XML('Test
Test
', sanitize=True),
+ XML('Test
Test
'))
+
+ # TODO: def test_XML_unpickle(self):
+
+ # TODO: def test_XML_pickle(self):
+
+ def test_DIV(self):
+ # Empty DIV()
+ self.assertEqual(DIV().xml(), '
')
+ self.assertEqual(DIV('<>', _a='1', _b='2').xml(),
+ '<>
')
+ # attributes can be updated like in a dict
+ div = DIV('<>', _a='1')
+ div['_b'] = '2'
+ self.assertEqual(div.xml(),
+ '<>
')
+ # also with a mapping
+ div.update(_b=2, _c=3)
+ self.assertEqual(div.xml(),
+ '<>
')
+ # length of the DIV is the number of components
+ self.assertEqual(len(DIV('a', 'bc')), 2)
+ # also if empty, DIV is True in a boolean evaluation
+ self.assertTrue(True if DIV() else False)
+ # parent and siblings
+ a = DIV(SPAN('a'), DIV('b'))
+ s = a.element('span')
+ d = s.parent
+ d['_class'] = 'abc'
+ self.assertEqual(a.xml(), '')
+ self.assertEqual([el.xml() for el in s.siblings()], ['b
'])
+ self.assertEqual(s.sibling().xml(), 'b
')
+ self.assertEqual(s.siblings('a'), [])
+
+ def test_CAT(self):
+ # Empty CAT()
+ self.assertEqual(CAT().xml(), '')
+ # CAT('')
+ self.assertEqual(CAT('').xml(), '')
+ # CAT(' ')
+ self.assertEqual(CAT(' ').xml(), ' ')
+
+ # TODO: def test_TAG_unpickler(self):
+
+ # TODO: def test_TAG_pickler(self):
+
+ def test_TAG(self):
+ self.assertEqual(TAG.first(TAG.second('test'), _key=3).xml(),
+ 'test ')
+ # ending in underscore "triggers" style
+ self.assertEqual(TAG.first_(TAG.second('test'), _key=3).xml(),
+ ' ')
+
+ def test_HTML(self):
+ self.assertEqual(HTML('<>', _a='1', _b='2').xml(),
+ '\n<>')
+
+ # TODO: def test_XHTML(self):
+
+ def test_HEAD(self):
+ self.assertEqual(HEAD('<>', _a='1', _b='2').xml(),
+ '<>')
+
+ def test_TITLE(self):
+ self.assertEqual(TITLE('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_META(self):
+ self.assertEqual(META(_a='1', _b='2').xml(),
+ ' ')
+
+ def test_LINK(self):
+ self.assertEqual(LINK(_a='1', _b='2').xml(),
+ ' ')
+
+ def test_SCRIPT(self):
+ self.assertEqual(SCRIPT('<>', _a='1', _b='2').xml(),
+ '''''')
+ self.assertEqual(SCRIPT('<>').xml(),
+ '''''')
+ self.assertEqual(SCRIPT().xml(), '')
+
+ def test_STYLE(self):
+ self.assertEqual(STYLE('<>', _a='1', _b='2').xml(),
+ '')
+
+ def test_IMG(self):
+ self.assertEqual(IMG(_a='1', _b='2').xml(),
+ ' ')
+
+ def test_SPAN(self):
+ self.assertEqual(SPAN('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_BODY(self):
+ self.assertEqual(BODY('<>', _a='1', _b='2').xml(),
+ '<>')
+
+ def test_H1(self):
+ self.assertEqual(H1('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_H2(self):
+ self.assertEqual(H2('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_H3(self):
+ self.assertEqual(H3('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_H4(self):
+ self.assertEqual(H4('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_H5(self):
+ self.assertEqual(H5('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_H6(self):
+ self.assertEqual(H6('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_P(self):
+ self.assertEqual(P('<>', _a='1', _b='2').xml(),
+ '<>
')
+ # test cr2br
+ self.assertEqual(P('a\nb').xml(), 'a\nb
')
+ self.assertEqual(P('a\nb', cr2br=True).xml(), 'a b
')
+
+ def test_STRONG(self):
+ self.assertEqual(STRONG('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_B(self):
+ self.assertEqual(B('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_BR(self):
+ # empty BR()
+ self.assertEqual(BR().xml(), ' ')
+ self.assertEqual(BR(_a='1', _b='2').xml(), ' ')
+
+ def test_HR(self):
+ self.assertEqual(HR(_a='1', _b='2').xml(), ' ')
+
+ def test_A(self):
+ self.assertEqual(
+ A('<>', _a='1', _b='2').xml(),
+ '<> '
+ )
+ self.assertEqual(
+ A('a', cid='b').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', callback='b', _id='c').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', delete='tr').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', _id='b', target='').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', component='b').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', _id='b', callback='c', noconfirm=True).xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', cid='b').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', cid='b', _disable_with='processing...').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', callback='b', delete='tr', noconfirm=True, _id='c').xml(),
+ 'a '
+ )
+ self.assertEqual(
+ A('a', callback='b', delete='tr', confirm='Are you sure?', _id='c').xml(),
+ 'a '
+ )
+
+ def test_BUTTON(self):
+ self.assertEqual(BUTTON('test', _type='button').xml(),
+ 'test ')
+
+ def test_EM(self):
+ self.assertEqual(EM('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_EMBED(self):
+ self.assertEqual(EMBED(_a='1', _b='2').xml(),
+ ' ')
+
+ def test_TT(self):
+ self.assertEqual(TT('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_PRE(self):
+ self.assertEqual(PRE('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_CENTER(self):
+ self.assertEqual(CENTER('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_CODE(self):
+ self.assertEqual(CODE("print 'hello world'",
+ language='python',
+ link=None,
+ counter=1,
+ styles={},
+ highlight_line=None).xml(),
+ '')
+
+ def test_LABEL(self):
+ self.assertEqual(LABEL('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_LI(self):
+ self.assertEqual(LI('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_UL(self):
+ self.assertEqual(UL('<>', _a='1', _b='2').xml(),
+ '')
+
+ def test_OL(self):
+ self.assertEqual(OL('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_TD(self):
+ self.assertEqual(TD('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_TH(self):
+ self.assertEqual(TH('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_TR(self):
+ self.assertEqual(TR('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_THEAD(self):
+ self.assertEqual(THEAD('<>', _a='1', _b='2').xml(),
+ '<> ')
+ # self.assertEqual(THEAD(TRHEAD('<>'), _a='1', _b='2').xml(),
+ # '<> ')
+ self.assertEqual(THEAD(TR('<>'), _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_TBODY(self):
+ self.assertEqual(TBODY('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_TFOOT(self):
+ self.assertEqual(TFOOT('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ # TODO: def test_COL(self):
+
+ # TODO: def test_COLGROUP(self):
+
+ def test_TABLE(self):
+ self.assertEqual(TABLE('<>', _a='1', _b='2').xml(),
+ '')
+
+ def test_I(self):
+ self.assertEqual(I('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ def test_IFRAME(self):
+ self.assertEqual(IFRAME('<>', _a='1', _b='2').xml(),
+ '')
+
+ def test_INPUT(self):
+ self.assertEqual(INPUT(_a='1', _b='2').xml(),
+ ' ')
+
+ def test_TEXTAREA(self):
+ self.assertEqual(TEXTAREA('<>', _a='1', _b='2').xml(),
+ '')
+ # override _rows and _cols
+ self.assertEqual(TEXTAREA('<>', _a='1', _b='2', _rows=5, _cols=20).xml(),
+ '')
+
+ def test_OPTION(self):
+ self.assertEqual(OPTION('<>', _a='1', _b='2').xml(),
+ '<>' +
+ ' ')
+
+ def test_OBJECT(self):
+ self.assertEqual(OBJECT('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ # TODO: def test_OPTGROUP(self):
+
+ def test_SELECT(self):
+ self.assertEqual(SELECT('<>', _a='1', _b='2').xml(),
+ '' +
+ '<> ')
+
+ def test_FIELDSET(self):
+ self.assertEqual(FIELDSET('<>', _a='1', _b='2').xml(),
+ '<> ')
+
+ # TODO: def test_LEGEND(self):
+
+ def test_FORM(self):
+ self.assertEqual(FORM('<>', _a='1', _b='2').xml(),
+ '')
+
+ # TODO: def test_BEAUTIFY(self):
+
+ # TODO: def test_MENU(self):
+
+ # TODO: def test_embed64(self):
+
+ # TODO: def test_web2pyHTMLParser(self):
+
+ # TODO: def test_markdown_serializer(self):
+
+ # TODO: def test_markmin_serializer(self):
+
+ # TODO: def test_MARKMIN(self):
+
+ # TODO: def test_ASSIGNJS(self):
+
class TestData(unittest.TestCase):