diff -r 000000000000 -r b97547f5f1fa common/test/unittest_uilib.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/test/unittest_uilib.py Wed Nov 05 15:52:50 2008 +0100 @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +"""unittests for cubicweb.common.uilib""" + +__docformat__ = "restructuredtext en" + +from logilab.common.testlib import TestCase, unittest_main +from logilab.common.tree import Node + +from cubicweb.common import uilib + +class UILIBTC(TestCase): + + + def test_remove_tags(self): + """make sure remove_tags remove all tags""" + data = [ + ('

Hello

', 'Hello'), + ('

Hello spam

', 'Hello spam'), + ('
Hello', 'Hello'), + ('

', ''), + ] + for text, expected in data: + got = uilib.remove_html_tags(text) + self.assertEquals(got, expected) + + def test_safe_cut(self): + """tests uilib.safe_cut() behaviour""" + data = [ + ('hello', 'hello'), + ('hello world', 'hello...'), + ("hellO' world", "hellO..."), + ('

hello

', '

hello

'), + ] + for text, expected in data: + got = uilib.safe_cut(text, 8) + self.assertEquals(got, expected) + + def test_cut(self): + """tests uilib.safe_cut() behaviour""" + data = [ + ('hello', 'hello'), + ('hello world', 'hello...'), + ("hellO' world", "hell<..."), + ] + for text, expected in data: + got = uilib.cut(text, 8) + self.assertEquals(got, expected) + + def test_text_cut_no_text(self): + """tests uilib.text_cut() behaviour with no text""" + data = [('','')] + for text, expected in data: + got = uilib.text_cut(text, 8) + self.assertEquals(got, expected) + + def test_text_cut_long_text(self): + """tests uilib.text_cut() behaviour with long text""" + data = [("""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +""","""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat.""")] + for text, expected in data: + got = uilib.text_cut(text, 30) + self.assertEquals(got, expected) + + def test_text_cut_no_point(self): + """tests uilib.text_cut() behaviour with no point""" + data = [("""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum +""","""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi""")] + for text, expected in data: + got = uilib.text_cut(text, 30) + self.assertEquals(got, expected) + + def test_ajax_replace_url(self): + # NOTE: for the simplest use cases, we could use doctest + arurl = uilib.ajax_replace_url + self.assertEquals(arurl('foo', 'Person P'), + "javascript: replacePageChunk('foo', 'Person%20P');") + self.assertEquals(arurl('foo', 'Person P', 'oneline'), + "javascript: replacePageChunk('foo', 'Person%20P', 'oneline');") + self.assertEquals(arurl('foo', 'Person P', 'oneline', name='bar', age=12), + 'javascript: replacePageChunk(\'foo\', \'Person%20P\', \'oneline\', {"age": 12, "name": "bar"});') + self.assertEquals(arurl('foo', 'Person P', name='bar', age=12), + 'javascript: replacePageChunk(\'foo\', \'Person%20P\', \'null\', {"age": 12, "name": "bar"});') + +tree = ('root', ( + ('child_1_1', ( + ('child_2_1', ()), ('child_2_2', ( + ('child_3_1', ()), + ('child_3_2', ()), + ('child_3_3', ()), + )))), + ('child_1_2', (('child_2_3', ()),)))) + +generated_html = """\ + + + + + + + + + + + +
root
  
child_1_1
  
child_2_1
   
      
      
child_2_2
  
child_3_1
      
         
child_3_2
      
         
child_3_3
      
   
child_1_2
  
child_2_3
   
      
\ +""" + +def make_tree(tuple): + n = Node(tuple[0]) + for child in tuple[1]: + n.append(make_tree(child)) + return n + +class UIlibHTMLGenerationTC(TestCase): + """ a basic tree node, caracterised by an id""" + def setUp(self): + """ called before each test from this class """ + self.o = make_tree(tree) + + def test_generated_html(self): + s = uilib.render_HTML_tree(self.o, selected_node="child_2_2") + self.assertTextEqual(s, generated_html) + + +if __name__ == '__main__': + unittest_main() +