aboutsummaryrefslogtreecommitdiff
path: root/tests/writers/markdown_tests.py
blob: 9448b50661c483193c52249525f8c21e09305433 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from __future__ import unicode_literals

from nose.tools import istest, assert_equal

from mammoth.writers.markdown import MarkdownWriter


@istest
def special_markdown_characters_are_escaped():
    writer = _create_writer()
    writer.text(r"\*")
    assert_equal(r"\\\*", writer.as_string())


@istest
def unrecognised_elements_are_treated_as_normal_text():
    writer = _create_writer()
    writer.start("blah");
    writer.text("Hello");
    writer.end("blah");
    assert_equal("Hello", writer.as_string())


@istest
def paragraphs_are_terminated_with_double_new_line():
    writer = _create_writer()
    writer.start("p");
    writer.text("Hello");
    writer.end("p");
    assert_equal("Hello\n\n", writer.as_string())


@istest
def h1_elements_are_converted_to_heading_with_leading_hash():
    writer = _create_writer()
    writer.start("h1");
    writer.text("Hello");
    writer.end("h1");
    assert_equal("# Hello\n\n", writer.as_string())


@istest
def h6_elements_are_converted_to_heading_with_six_leading_hashes():
    writer = _create_writer()
    writer.start("h6");
    writer.text("Hello");
    writer.end("h6");
    assert_equal("###### Hello\n\n", writer.as_string())


@istest
def br_is_written_as_two_spaces_followed_by_newline():
    writer = _create_writer()
    writer.text("Hello");
    writer.self_closing("br");
    assert_equal("Hello  \n", writer.as_string())


@istest
def strong_text_is_surrounded_by_two_underscores():
    writer = _create_writer()
    writer.text("Hello ");
    writer.start("strong");
    writer.text("World")
    writer.end("strong")
    assert_equal("Hello __World__", writer.as_string())


@istest
def emphasised_text_is_surrounded_by_one_asterix():
    writer = _create_writer()
    writer.text("Hello ");
    writer.start("em");
    writer.text("World")
    writer.end("em")
    assert_equal("Hello *World*", writer.as_string())


@istest
def anchor_tags_are_written_as_hyperlinks():
    writer = _create_writer()
    writer.start("a", {"href": "http://example.com"});
    writer.text("Hello");
    writer.end("a");
    assert_equal("[Hello](http://example.com)", writer.as_string())
    

@istest
def anchor_tags_without_href_attribute_are_treated_as_ordinary_text():
    writer = _create_writer()
    writer.start("a");
    writer.text("Hello");
    writer.end("a");
    assert_equal("Hello", writer.as_string())
    


def _create_writer():
    return MarkdownWriter()