view MoinMoin/widget/_tests/ @ 2458:01f2921e5fa4

tests: convert some more tests to py.test
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Sun, 22 Jul 2007 02:00:15 +0200
parents c9949c55ff5e
line wrap: on
line source
# -*- coding: iso-8859-1 -*-
    MoinMoin - MoinMoin.widget.html Tests

    @copyright: 2003-2004 by Juergen Hermann <>
    @license: GNU GPL, see COPYING for details.

import py

from MoinMoin.widget import html

class TestHTMLWidgets:
    """widget.html: testing html widgets"""

    def testCreate(self):
        """widget.html: creating html widgets

        TO DO: add tests for all elements by HTML 4 spec.
        tests = (
            # description, call, expected
            ('Create text', html.Text('<br> &'), '&lt;br&gt; &amp;'),
            ('Create raw html', html.Raw('<br> &amp;'), '<br> &amp;'),
            ('Create br', html.BR(), '<br>'),
            ('Create hr', html.HR(), '<hr>'),
            ('Create p', html.P(), '<p></p>'),

        for description, obj, expected in tests:
            result = unicode(obj)
            assert result == expected

    def testInvalidAttributes(self):
        """widget.html: invalid attributes raises exception

        TO DO: add tests for all elements by HTML 4 spec.
        py.test.raises(AttributeError, html.BR, name='foo')

    def testCompositeElements(self):
        """widget.html: append to and extend composite element"""
        html._SORT_ATTRS = 1
        element = html.P()

        actions = (
            # action, data, expected
             html.Text('Text & '),
             '<p>Text &amp; </p>'),
             html.Text('more text. '),
             '<p>Text &amp; more text. </p>'),
             (html.Text('And then '), html.Text('some.')),
             '<p>Text &amp; more text. And then some.</p>'),

        for action, data, expected in actions:
            result = unicode(element)
            assert result == expected

coverage_modules = ['MoinMoin.widget.html']