"""
:synopsis: Tests pour le module listtemplate

python -m unittest -v autotest.py
"""

import unittest
from listtemplate import ListTemplate

f = open('templates/tableauExemple.head.tpl', 'r', encoding = 'utf8')
template_head_exemple = f.read()
f.close()
f = open('templates/tableauExemple.item.tpl', 'r', encoding = 'utf8')
template_item_exemple = f.read()
f.close()
f = open('templates/tableauExemple.foot.tpl', 'r', encoding = 'utf8')
template_foot_exemple = f.read()
f.close()

renderExemple = ''.join([
    template_head_exemple,
    template_item_exemple.format(titre="Le vieil homme et la mer", auteur="Ernest Hemingway"),
    template_item_exemple.format(titre="Le Rouge et le Noir", auteur="Stendhal"),
    template_foot_exemple
])


class MyTest(unittest.TestCase):
    def test1(self):
        """
        Test de la méthode get_template avec template existant
        """
        t = ListTemplate('tableauExemple')
        self.assertEqual(t.get_template(), (template_head_exemple, template_item_exemple, template_foot_exemple))

    def test2(self):
        """
        Test de la méthode get_template avec template inexistant
        """
        t = ListTemplate('inexistant')
        self.assertEqual(t.get_template(), ('','',''))

    def test3(self):
        """
        Test de la méthode render
        """
        t = ListTemplate('tableauExemple')
        items = [
            { 'titre':"Le vieil homme et la mer", 'auteur':"Ernest Hemingway"},
            { 'titre':"Le Rouge et le Noir", 'auteur':"Stendhal"}
        ]
        r = t.render({}, items)
        self.assertEqual(r, renderExemple)

if __name__ == '__main__':
    unittest.main()
