import unittest

from simple_footnotes import parse_for_footnotes


class PseudoArticleGenerator(object):
    articles = []


class PseudoArticle(object):
    _content = ""
    slug = "article"


class TestFootnotes(unittest.TestCase):
    def _expect(self, input, expected_output):
        ag = PseudoArticleGenerator()
        art = PseudoArticle()
        art._content = input
        ag.articles = [art]
        parse_for_footnotes(ag)
        self.assertEqual(art._content, expected_output)

    def test_simple(self):
        self._expect(
            "words[ref]footnote[/ref]end",
            (
                'words<sup id="sf-article-1-back"><a title="footnote" '
                'href="#sf-article-1" class="simple-footnote">1</a></sup>end'
                '<ol class="simple-footnotes">'
                u'<li id="sf-article-1">footnote <a href="#sf-article-1-back" class="simple-footnote-back">\u21a9</a></li>'
                "</ol>"
            ),
        )

    def test_no_footnote_inside_code(self):
        self._expect(
            "words<code>this is code[ref]footnote[/ref] end code </code> end",
            "words<code>this is code[ref]footnote[/ref] end code </code> end",
        )


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