# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
from xml.dom.minidom import getDOMImplementation
from unittest import TestCase
from secretary import UndefinedSilently, pad_string, Renderer
def test_undefined_silently():
undefined = UndefinedSilently()
assert isinstance(undefined(), UndefinedSilently)
assert isinstance(undefined.attribute, UndefinedSilently)
assert str(undefined) == ''
def test_pad_string():
assert pad_string('TEST') == '0TEST'
assert pad_string('TEST', 4) == 'TEST'
assert pad_string(1) == '00001'
class RenderTestCase(TestCase):
def setUp(self):
root = os.path.dirname(__file__)
impl = getDOMImplementation()
template = os.path.join(root, 'simple_template.odt')
self.document = impl.createDocument(None, "some_tag", None)
self.engine = Renderer()
self.engine.render(template)
def test__unescape_entities(self):
test_samples = {
'{{ "greater_than_1" if 1>0 }}': '{{ "greater_than_1" if 1>0 }}',
'{{ "lower_than_1" if 1<0 }}': '{{ "lower_than_1" if 1<0 }}',
'{{ if multiple_spaces }}': '{{ if multiple_spaces }}',
'{{ if multiple_spaces }}': '{{ if multiple_spaces }}',
'{{ if multiple_spaces }}': '{{ if multiple_spaces }}',
}
for test, expect in test_samples.iteritems():
assert self.engine._unescape_entities(test) == expect
def test__encode_escape_chars(self):
test_samples = {
# r'(.*)
'\n': '',
'\n': '',
'\n': '',
'\n': '',
'\u0009': '',
'\n': '',
'\u0009': '',
'\u000d': '',
'\u000a': '',
}
for test, expect in test_samples.iteritems():
assert self.engine._encode_escape_chars(test) == expect
def test_create_test_node(self):
assert self.engine.create_text_node(self.document, 'text').toxml() == 'text'
def test_create_text_span_node(self):
assert self.engine.create_text_span_node(self.document, 'text').toxml() == 'text'