From 94afe614772cca1a9c710feddb9daa137a478664 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 22:27:21 -0400 Subject: [PATCH 1/9] 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): From 9299ecb64dab85e9ae50cfc5543624824c013b10 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 22:40:06 -0400 Subject: [PATCH 2/9] HTML corner tests for doctype=stric/transitional/frameset/html5/None --- gluon/tests/test_html.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index 36f117b1..42e05a90 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -223,6 +223,18 @@ class TestBareHelpers(unittest.TestCase): def test_HTML(self): self.assertEqual(HTML('<>', _a='1', _b='2').xml(), '\n<>') + self.assertEqual(HTML('<>', _a='1', _b='2', doctype='strict').xml(), + '\n<>') + self.assertEqual(HTML('<>', _a='1', _b='2', doctype='transitional').xml(), + '\n<>') + self.assertEqual(HTML('<>', _a='1', _b='2', doctype='frameset').xml(), + '\n<>') + self.assertEqual(HTML('<>', _a='1', _b='2', doctype='html5').xml(), + '\n<>') + self.assertEqual(HTML('<>', _a='1', _b='2', doctype='').xml(), + '<>') + + def test_XHTML(self): # Empty XHTML test From 89cf314358aec184ccdb00c3f70247f19aeb2e72 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 22:47:59 -0400 Subject: [PATCH 3/9] XHTML corner tests for doctype=None/strict/transitional/frameset/xmlns --- gluon/tests/test_html.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index 42e05a90..a92cae55 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -234,8 +234,6 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(HTML('<>', _a='1', _b='2', doctype='').xml(), '<>') - - def test_XHTML(self): # Empty XHTML test self.assertEqual(XHTML().xml(), @@ -243,6 +241,16 @@ class TestBareHelpers(unittest.TestCase): # Not Empty XHTML test self.assertEqual(XHTML('<>', _a='1', _b='2').xml(), '\n<>') + self.assertEqual(XHTML('<>', _a='1', _b='2', doctype='').xml(), + '\n<>') + self.assertEqual(XHTML('<>', _a='1', _b='2', doctype='strict').xml(), + '\n<>') + self.assertEqual(XHTML('<>', _a='1', _b='2', doctype='transitional').xml(), + '\n<>') + self.assertEqual(XHTML('<>', _a='1', _b='2', doctype='frameset').xml(), + '\n<>') + self.assertEqual(XHTML('<>', _a='1', _b='2', doctype='xmlns').xml(), + 'xmlns\n<>') def test_HEAD(self): self.assertEqual(HEAD('<>', _a='1', _b='2').xml(), From 753c54dbfca8b03f1ac1d6c9cd619b75266261c1 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 23:11:27 -0400 Subject: [PATCH 4/9] HTML corner case for doctype=CustomDocType --- gluon/tests/test_html.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index a92cae55..f224a46c 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -233,6 +233,9 @@ class TestBareHelpers(unittest.TestCase): '\n<>') self.assertEqual(HTML('<>', _a='1', _b='2', doctype='').xml(), '<>') + self.assertEqual(HTML('<>', _a='1', _b='2', doctype='CustomDocType').xml(), + 'CustomDocType\n<>') + def test_XHTML(self): # Empty XHTML test From f921b24a95ec200810b5df2614af7aa5712772dd Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 23:25:37 -0400 Subject: [PATCH 5/9] SELECT corner cases with option, multiple and selected --- gluon/tests/test_html.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index f224a46c..689e7549 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -236,7 +236,6 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(HTML('<>', _a='1', _b='2', doctype='CustomDocType').xml(), 'CustomDocType\n<>') - def test_XHTML(self): # Empty XHTML test self.assertEqual(XHTML().xml(), @@ -534,6 +533,13 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(SELECT('<>', _a='1', _b='2').xml(), '') + self.assertEqual(SELECT(OPTION('option 1', _value='1'), + OPTION('option 2', _value='2')).xml(), + '') + self.assertEqual(SELECT(OPTION('option 1', _value='1', _selected='selected'), + OPTION('option 2', _value='2'), + _multiple='multiple').xml(), + '') def test_FIELDSET(self): self.assertEqual(FIELDSET('<>', _a='1', _b='2').xml(), From 52f634cb5878b972064b7a6d25308402d1362c1c Mon Sep 17 00:00:00 2001 From: Hardirc Date: Tue, 22 Mar 2016 23:37:23 -0400 Subject: [PATCH 6/9] some more corner cases for TEXTAREA and commented DIV SyntaxError --- gluon/tests/test_html.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index 689e7549..1defcfaf 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -200,6 +200,12 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual([el.xml() for el in s.siblings()], ['
b
']) self.assertEqual(s.sibling().xml(), '
b
') self.assertEqual(s.siblings('a'), []) + # Corner case for raise coverage of one line + # I think such assert fail cause of python 2.6 + # Work under python 2.7 + # with self.assertRaises(SyntaxError) as cm: + # DIV(BR('<>')).xml() + # self.assertEqual(cm.exception[0], '
tags cannot have components') def test_CAT(self): # Empty CAT() @@ -511,6 +517,8 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(TEXTAREA('<>', _a='1', _b='2', _rows=5, _cols=20).xml(), '') + self.assertEqual(TEXTAREA('<>', _value='bla bla bla', _rows=10, _cols=40).xml(), + '') def test_OPTION(self): self.assertEqual(OPTION('<>', _a='1', _b='2').xml(), From 785276d2941234e690cc8c2d7d2689cb8ac0d455 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Wed, 23 Mar 2016 00:01:33 -0400 Subject: [PATCH 7/9] some more corner cases for SELECT --- gluon/tests/test_html.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index 1defcfaf..f09cfb48 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -517,8 +517,8 @@ class TestBareHelpers(unittest.TestCase): self.assertEqual(TEXTAREA('<>', _a='1', _b='2', _rows=5, _cols=20).xml(), '') - self.assertEqual(TEXTAREA('<>', _value='bla bla bla', _rows=10, _cols=40).xml(), - '') + self.assertEqual(TEXTAREA('<>', value='bla bla bla...', _rows=10, _cols=40).xml(), + '') def test_OPTION(self): self.assertEqual(OPTION('<>', _a='1', _b='2').xml(), @@ -548,6 +548,17 @@ class TestBareHelpers(unittest.TestCase): OPTION('option 2', _value='2'), _multiple='multiple').xml(), '') + # OPTGROUP + self.assertEqual(SELECT(OPTGROUP(OPTION('option 1', _value='1'), + OPTION('option 2', _value='2'), + _label='Group 1',)).xml(), + '') + # List + self.assertEqual(SELECT([1, 2, 3, 4, 5]).xml(), + '') + # Tuple + self.assertEqual(SELECT((1, 2, 3, 4, 5)).xml(), + '') def test_FIELDSET(self): self.assertEqual(FIELDSET('<>', _a='1', _b='2').xml(), From 13ed29ffc3111a9eecf39381eee6750675d457b8 Mon Sep 17 00:00:00 2001 From: Hardirc Date: Wed, 23 Mar 2016 00:18:17 -0400 Subject: [PATCH 8/9] OPTGROUP with OPTION --- gluon/tests/test_html.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index f09cfb48..b97e4078 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -536,6 +536,9 @@ class TestBareHelpers(unittest.TestCase): # Not Empty OPTGROUP test self.assertEqual(OPTGROUP('<>', _a='1', _b='2').xml(), '') + # With an OPTION + self.assertEqual(OPTGROUP(OPTION('Option 1', _value='1'), _label='Group 1').xml(), + '') def test_SELECT(self): self.assertEqual(SELECT('<>', _a='1', _b='2').xml(), From dda81d1b950b8ffdc8de8cbad6d63169658649da Mon Sep 17 00:00:00 2001 From: Hardirc Date: Wed, 23 Mar 2016 00:25:28 -0400 Subject: [PATCH 9/9] SELECT('Option 1', 'Option 2') what else... --- gluon/tests/test_html.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index b97e4078..4834c1d1 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -562,6 +562,9 @@ class TestBareHelpers(unittest.TestCase): # Tuple self.assertEqual(SELECT((1, 2, 3, 4, 5)).xml(), '') + # String value + self.assertEqual(SELECT('Option 1', 'Option 2').xml(), + '') def test_FIELDSET(self): self.assertEqual(FIELDSET('<>', _a='1', _b='2').xml(),