summaryrefslogtreecommitdiffstats
path: root/tests/test_api/test_main
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/test_api/test_main.py279
-rw-r--r--tests/test_api/test_main/test_table_tokens.yml492
2 files changed, 771 insertions, 0 deletions
diff --git a/tests/test_api/test_main.py b/tests/test_api/test_main.py
new file mode 100644
index 0000000..007259e
--- /dev/null
+++ b/tests/test_api/test_main.py
@@ -0,0 +1,279 @@
+from markdown_it import MarkdownIt
+from markdown_it.token import Token
+
+
+def test_get_rules():
+ md = MarkdownIt("zero")
+ # print(md.get_all_rules())
+ assert md.get_all_rules() == {
+ "core": [
+ "normalize",
+ "block",
+ "inline",
+ "linkify",
+ "replacements",
+ "smartquotes",
+ ],
+ "block": [
+ "table",
+ "code",
+ "fence",
+ "blockquote",
+ "hr",
+ "list",
+ "reference",
+ "html_block",
+ "heading",
+ "lheading",
+ "paragraph",
+ ],
+ "inline": [
+ "text",
+ "newline",
+ "escape",
+ "backticks",
+ "strikethrough",
+ "emphasis",
+ "link",
+ "image",
+ "autolink",
+ "html_inline",
+ "entity",
+ ],
+ "inline2": ["balance_pairs", "strikethrough", "emphasis", "text_collapse"],
+ }
+
+
+def test_load_presets():
+ md = MarkdownIt("zero")
+ assert md.get_active_rules() == {
+ "block": ["paragraph"],
+ "core": ["normalize", "block", "inline"],
+ "inline": ["text"],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+ md = MarkdownIt("commonmark")
+ assert md.get_active_rules() == {
+ "core": ["normalize", "block", "inline"],
+ "block": [
+ "code",
+ "fence",
+ "blockquote",
+ "hr",
+ "list",
+ "reference",
+ "html_block",
+ "heading",
+ "lheading",
+ "paragraph",
+ ],
+ "inline": [
+ "text",
+ "newline",
+ "escape",
+ "backticks",
+ "emphasis",
+ "link",
+ "image",
+ "autolink",
+ "html_inline",
+ "entity",
+ ],
+ "inline2": ["balance_pairs", "emphasis", "text_collapse"],
+ }
+
+
+def test_override_options():
+ md = MarkdownIt("zero")
+ assert md.options["maxNesting"] == 20
+ md = MarkdownIt("zero", {"maxNesting": 99})
+ assert md.options["maxNesting"] == 99
+
+
+def test_enable():
+ md = MarkdownIt("zero").enable("heading")
+ assert md.get_active_rules() == {
+ "block": ["heading", "paragraph"],
+ "core": ["normalize", "block", "inline"],
+ "inline": ["text"],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+ md.enable(["backticks", "autolink"])
+ assert md.get_active_rules() == {
+ "block": ["heading", "paragraph"],
+ "core": ["normalize", "block", "inline"],
+ "inline": ["text", "backticks", "autolink"],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+
+
+def test_disable():
+ md = MarkdownIt("zero").disable("inline")
+ assert md.get_active_rules() == {
+ "block": ["paragraph"],
+ "core": ["normalize", "block"],
+ "inline": ["text"],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+ md.disable(["text"])
+ assert md.get_active_rules() == {
+ "block": ["paragraph"],
+ "core": ["normalize", "block"],
+ "inline": [],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+
+
+def test_reset():
+ md = MarkdownIt("zero")
+ with md.reset_rules():
+ md.disable("inline")
+ assert md.get_active_rules() == {
+ "block": ["paragraph"],
+ "core": ["normalize", "block"],
+ "inline": ["text"],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+ assert md.get_active_rules() == {
+ "block": ["paragraph"],
+ "core": ["normalize", "block", "inline"],
+ "inline": ["text"],
+ "inline2": ["balance_pairs", "text_collapse"],
+ }
+
+
+def test_parseInline():
+ md = MarkdownIt()
+ tokens = md.parseInline("abc\n\n> xyz")
+ assert tokens == [
+ Token(
+ type="inline",
+ tag="",
+ nesting=0,
+ attrs=None,
+ map=[0, 1],
+ level=0,
+ children=[
+ Token(
+ type="text",
+ tag="",
+ nesting=0,
+ attrs=None,
+ map=None,
+ level=0,
+ children=None,
+ content="abc",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
+ ),
+ Token(
+ type="softbreak",
+ tag="br",
+ nesting=0,
+ attrs=None,
+ map=None,
+ level=0,
+ children=None,
+ content="",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
+ ),
+ Token(
+ type="softbreak",
+ tag="br",
+ nesting=0,
+ attrs=None,
+ map=None,
+ level=0,
+ children=None,
+ content="",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
+ ),
+ Token(
+ type="text",
+ tag="",
+ nesting=0,
+ attrs=None,
+ map=None,
+ level=0,
+ children=None,
+ content="> xyz",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
+ ),
+ ],
+ content="abc\n\n> xyz",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
+ )
+ ]
+
+
+def test_renderInline():
+ md = MarkdownIt("zero")
+ tokens = md.renderInline("abc\n\n*xyz*")
+ assert tokens == "abc\n\n*xyz*"
+
+
+def test_emptyStr():
+ md = MarkdownIt()
+ tokens = md.parseInline("")
+ assert tokens == [
+ Token(
+ type="inline",
+ tag="",
+ nesting=0,
+ attrs=None,
+ map=[0, 1],
+ level=0,
+ children=[],
+ content="",
+ markup="",
+ info="",
+ meta={},
+ block=False,
+ hidden=False,
+ )
+ ]
+
+
+def test_empty_env():
+ """Test that an empty `env` is mutated, not copied and mutated."""
+ md = MarkdownIt()
+
+ env = {}
+ md.render("[foo]: /url\n[foo]", env)
+ assert "references" in env
+
+ env = {}
+ md.parse("[foo]: /url\n[foo]", env)
+ assert "references" in env
+
+
+def test_table_tokens(data_regression):
+ md = MarkdownIt("js-default")
+ tokens = md.parse(
+ """
+| Heading 1 | Heading 2
+| --------- | ---------
+| Cell 1 | Cell 2
+| Cell 3 | Cell 4
+ """
+ )
+ data_regression.check([t.as_dict() for t in tokens])
diff --git a/tests/test_api/test_main/test_table_tokens.yml b/tests/test_api/test_main/test_table_tokens.yml
new file mode 100644
index 0000000..5bac044
--- /dev/null
+++ b/tests/test_api/test_main/test_table_tokens.yml
@@ -0,0 +1,492 @@
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 0
+ map:
+ - 1
+ - 5
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: table
+ type: table_open
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 1
+ map:
+ - 1
+ - 2
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: thead
+ type: thead_open
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 2
+ map:
+ - 1
+ - 2
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: tr
+ type: tr_open
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: th
+ type: th_open
+- attrs: null
+ block: true
+ children:
+ - attrs: null
+ block: false
+ children: null
+ content: Heading 1
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: text
+ content: Heading 1
+ hidden: false
+ info: ''
+ level: 4
+ map:
+ - 1
+ - 2
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: inline
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: th
+ type: th_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: th
+ type: th_open
+- attrs: null
+ block: true
+ children:
+ - attrs: null
+ block: false
+ children: null
+ content: Heading 2
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: text
+ content: Heading 2
+ hidden: false
+ info: ''
+ level: 4
+ map:
+ - 1
+ - 2
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: inline
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: th
+ type: th_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 2
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: tr
+ type: tr_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 1
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: thead
+ type: thead_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 1
+ map:
+ - 3
+ - 5
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: tbody
+ type: tbody_open
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 2
+ map:
+ - 3
+ - 4
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: tr
+ type: tr_open
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: td
+ type: td_open
+- attrs: null
+ block: true
+ children:
+ - attrs: null
+ block: false
+ children: null
+ content: Cell 1
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: text
+ content: Cell 1
+ hidden: false
+ info: ''
+ level: 4
+ map:
+ - 3
+ - 4
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: inline
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: td
+ type: td_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: td
+ type: td_open
+- attrs: null
+ block: true
+ children:
+ - attrs: null
+ block: false
+ children: null
+ content: Cell 2
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: text
+ content: Cell 2
+ hidden: false
+ info: ''
+ level: 4
+ map:
+ - 3
+ - 4
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: inline
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: td
+ type: td_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 2
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: tr
+ type: tr_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 2
+ map:
+ - 4
+ - 5
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: tr
+ type: tr_open
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: td
+ type: td_open
+- attrs: null
+ block: true
+ children:
+ - attrs: null
+ block: false
+ children: null
+ content: Cell 3
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: text
+ content: Cell 3
+ hidden: false
+ info: ''
+ level: 4
+ map:
+ - 4
+ - 5
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: inline
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: td
+ type: td_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 1
+ tag: td
+ type: td_open
+- attrs: null
+ block: true
+ children:
+ - attrs: null
+ block: false
+ children: null
+ content: Cell 4
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: text
+ content: Cell 4
+ hidden: false
+ info: ''
+ level: 4
+ map:
+ - 4
+ - 5
+ markup: ''
+ meta: {}
+ nesting: 0
+ tag: ''
+ type: inline
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 3
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: td
+ type: td_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 2
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: tr
+ type: tr_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 1
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: tbody
+ type: tbody_close
+- attrs: null
+ block: true
+ children: null
+ content: ''
+ hidden: false
+ info: ''
+ level: 0
+ map: null
+ markup: ''
+ meta: {}
+ nesting: -1
+ tag: table
+ type: table_close