# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Tests for L{twisted.web._stan} portion of the L{twisted.web.template} implementation. """ from __future__ import absolute_import, division from twisted.web.template import Comment, CDATA, CharRef, Tag from twisted.trial.unittest import TestCase from twisted.python.compat import _PY3 def proto(*a, **kw): """ Produce a new tag for testing. """ return Tag('hello')(*a, **kw) class TagTests(TestCase): """ Tests for L{Tag}. """ def test_fillSlots(self): """ L{Tag.fillSlots} returns self. """ tag = proto() self.assertIdentical(tag, tag.fillSlots(test='test')) def test_cloneShallow(self): """ L{Tag.clone} copies all attributes and children of a tag, including its render attribute. If the shallow flag is C{False}, that's where it stops. """ innerList = ["inner list"] tag = proto("How are you", innerList, hello="world", render="aSampleMethod") tag.fillSlots(foo='bar') tag.filename = "foo/bar" tag.lineNumber = 6 tag.columnNumber = 12 clone = tag.clone(deep=False) self.assertEqual(clone.attributes['hello'], 'world') self.assertNotIdentical(clone.attributes, tag.attributes) self.assertEqual(clone.children, ["How are you", innerList]) self.assertNotIdentical(clone.children, tag.children) self.assertIdentical(clone.children[1], innerList) self.assertEqual(tag.slotData, clone.slotData) self.assertNotIdentical(tag.slotData, clone.slotData) self.assertEqual(clone.filename, "foo/bar") self.assertEqual(clone.lineNumber, 6) self.assertEqual(clone.columnNumber, 12) self.assertEqual(clone.render, "aSampleMethod") def test_cloneDeep(self): """ L{Tag.clone} copies all attributes and children of a tag, including its render attribute. In its normal operating mode (where the deep flag is C{True}, as is the default), it will clone all sub-lists and sub-tags. """ innerTag = proto("inner") innerList = ["inner list"] tag = proto("How are you", innerTag, innerList, hello="world", render="aSampleMethod") tag.fillSlots(foo='bar') tag.filename = "foo/bar" tag.lineNumber = 6 tag.columnNumber = 12 clone = tag.clone() self.assertEqual(clone.attributes['hello'], 'world') self.assertNotIdentical(clone.attributes, tag.attributes) self.assertNotIdentical(clone.children, tag.children) # sanity check self.assertIdentical(tag.children[1], innerTag) # clone should have sub-clone self.assertNotIdentical(clone.children[1], innerTag) # sanity check self.assertIdentical(tag.children[2], innerList) # clone should have sub-clone self.assertNotIdentical(clone.children[2], innerList) self.assertEqual(tag.slotData, clone.slotData) self.assertNotIdentical(tag.slotData, clone.slotData) self.assertEqual(clone.filename, "foo/bar") self.assertEqual(clone.lineNumber, 6) self.assertEqual(clone.columnNumber, 12) self.assertEqual(clone.render, "aSampleMethod") def test_clear(self): """ L{Tag.clear} removes all children from a tag, but leaves its attributes in place. """ tag = proto("these are", "children", "cool", andSoIs='this-attribute') tag.clear() self.assertEqual(tag.children, []) self.assertEqual(tag.attributes, {'andSoIs': 'this-attribute'}) def test_suffix(self): """ L{Tag.__call__} accepts Python keywords with a suffixed underscore as the DOM attribute of that literal suffix. """ proto = Tag('div') tag = proto() tag(class_='a') self.assertEqual(tag.attributes, {'class': 'a'}) def test_commentReprPy2(self): """ L{Comment.__repr__} returns a value which makes it easy to see what's in the comment. """ self.assertEqual(repr(Comment(u"hello there")), "Comment(u'hello there')") def test_cdataReprPy2(self): """ L{CDATA.__repr__} returns a value which makes it easy to see what's in the comment. """ self.assertEqual(repr(CDATA(u"test data")), "CDATA(u'test data')") def test_commentReprPy3(self): """ L{Comment.__repr__} returns a value which makes it easy to see what's in the comment. """ self.assertEqual(repr(Comment(u"hello there")), "Comment('hello there')") def test_cdataReprPy3(self): """ L{CDATA.__repr__} returns a value which makes it easy to see what's in the comment. """ self.assertEqual(repr(CDATA(u"test data")), "CDATA('test data')") if not _PY3: test_commentReprPy3.skip = "Only relevant on Python 3." test_cdataReprPy3.skip = "Only relevant on Python 3." else: test_commentReprPy2.skip = "Only relevant on Python 2." test_cdataReprPy2.skip = "Only relevant on Python 2." def test_charrefRepr(self): """ L{CharRef.__repr__} returns a value which makes it easy to see what character is referred to. """ snowman = ord(u"\N{SNOWMAN}") self.assertEqual(repr(CharRef(snowman)), "CharRef(9731)")
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 108 B | 0644 |
|
_util.py | File | 2.51 KB | 0644 |
|
injectionhelpers.py | File | 5.5 KB | 0644 |
|
requesthelper.py | File | 10.6 KB | 0644 |
|
test_agent.py | File | 113.19 KB | 0644 |
|
test_cgi.py | File | 13.29 KB | 0644 |
|
test_client.py | File | 1.34 KB | 0644 |
|
test_distrib.py | File | 16.02 KB | 0644 |
|
test_domhelpers.py | File | 10.84 KB | 0644 |
|
test_error.py | File | 15.83 KB | 0644 |
|
test_flatten.py | File | 17.83 KB | 0644 |
|
test_html.py | File | 1.23 KB | 0644 |
|
test_http.py | File | 122.6 KB | 0644 |
|
test_http2.py | File | 105.98 KB | 0644 |
|
test_http_headers.py | File | 19.91 KB | 0644 |
|
test_httpauth.py | File | 22.75 KB | 0644 |
|
test_newclient.py | File | 102.47 KB | 0644 |
|
test_proxy.py | File | 19.62 KB | 0644 |
|
test_resource.py | File | 8.02 KB | 0644 |
|
test_script.py | File | 3.7 KB | 0644 |
|
test_stan.py | File | 5.53 KB | 0644 |
|
test_static.py | File | 62.22 KB | 0644 |
|
test_tap.py | File | 10.34 KB | 0644 |
|
test_template.py | File | 24.99 KB | 0644 |
|
test_util.py | File | 12.29 KB | 0644 |
|
test_vhost.py | File | 7.22 KB | 0644 |
|
test_web.py | File | 55.24 KB | 0644 |
|
test_web__responses.py | File | 877 B | 0644 |
|
test_webclient.py | File | 57.45 KB | 0644 |
|
test_wsgi.py | File | 73.06 KB | 0644 |
|
test_xml.py | File | 41.36 KB | 0644 |
|
test_xmlrpc.py | File | 28.24 KB | 0644 |
|