From 94afe614772cca1a9c710feddb9daa137a478664 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 22:27:21 -0400 Subject: [PATCH] BEAUTIFY, MENU, MARKMIN and ASSIGNJS basic tests and attempt ASSIGNJS documentation --- gluon/html.py | 16 +++++++++++++++- gluon/tests/test_html.py | 28 ++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/gluon/html.py b/gluon/html.py index 24e32e31..ba14d7b2 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -2831,10 +2831,24 @@ class MARKMIN(XmlComponent): def ASSIGNJS(**kargs): + """ + Example: + ASSIGNJS(var1='1', var2='2') will return the following javascript variables assignations : + + var var1 = "1"; + var var2 = "2"; + + Args: + **kargs: Any keywords arguments and assigned values. + + Returns: + Javascript vars assignations for the key/value passed. + + """ from gluon.serializers import json s = "" for key, value in kargs.items(): - s+='var %s = %s;\n' % (key, json(value)) + s += 'var %s = %s;\n' % (key, json(value)) return XML(s) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index b5764c7f..36f117b1 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -452,6 +452,7 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(COL(_span='2').xml(), '') # Commented for now not so sure how to make it pass properly was passing locally # I think this test is interesting and add value + # This fail relate to python 2.6 limitation I think # Failing COL test # with self.assertRaises(SyntaxError) as cm: # COL('<>').xml() @@ -523,9 +524,13 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(FORM('<>', _a='1', _b='2').xml(), '
<>
') - # TODO: def test_BEAUTIFY(self): + def test_BEAUTIFY(self): + self.assertEqual(BEAUTIFY(['a', 'b', {'hello': 'world'}]).xml(), + '
a
b
hello:
world
') - # TODO: def test_MENU(self): + def test_MENU(self): + self.assertEqual(MENU([('Home', False, '/welcome/default/index', [])]).xml(), + '') # TODO: def test_embed64(self): @@ -535,9 +540,24 @@ class TestBareHelpers(unittest.TestCase): # TODO: def test_markmin_serializer(self): - # TODO: def test_MARKMIN(self): + def test_MARKMIN(self): + # This test pass with python 2.7 but expected to fail under 2.6 + # with self.assertRaises(TypeError) as cm: + # MARKMIN().xml() + # self.assertEqual(cm.exception[0], '__init__() takes at least 2 arguments (1 given)') + self.assertEqual(MARKMIN('').xml(), '') + self.assertEqual(MARKMIN('<>').xml(), + '

<>

') + self.assertEqual(MARKMIN("``hello_world = 'Hello World!'``:python").xml(), + 'hello_world = \'Hello World!\'') - # TODO: def test_ASSIGNJS(self): + def test_ASSIGNJS(self): + # empty assignation + self.assertEqual(ASSIGNJS().xml(), '') + # text assignation + self.assertEqual(ASSIGNJS(var1='1', var2='2').xml(), 'var var1 = "1";\nvar var2 = "2";\n') + # int assignation + self.assertEqual(ASSIGNJS(var1=1, var2=2).xml(), 'var var1 = 1;\nvar var2 = 2;\n') class TestData(unittest.TestCase):