File: test_commentversionnote.py

package info (click to toggle)
python-sphinx-chango 0.5.0-2
  • links: PTS
  • area: main
  • in suites: sid
  • size: 1,776 kB
  • sloc: python: 4,909; javascript: 74; makefile: 23
file content (85 lines) | stat: -rw-r--r-- 2,074 bytes parent folder | download
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
#  SPDX-FileCopyrightText: 2024-present Hinrich Mahler <chango@mahlerhome.de>
#
#  SPDX-License-Identifier: MIT
import datetime as dtm

import pytest

from chango import Version
from chango.concrete import CommentChangeNote, CommentVersionNote
from chango.error import UnsupportedMarkupError


class TestCommentVersionNote:
    comments = ("comment 1", "a\nmulti-line\ncomment 2", "comment 3")
    change_notes = tuple(
        CommentChangeNote(slug=f"slug-{i}", comment=comment) for i, comment in enumerate(comments)
    )

    @pytest.fixture(
        autouse=True,
        params=[None, Version(uid="1.0.0", date=dtm.date(2024, 1, 1))],
        ids=["None", "Version"],
    )
    def setup(self, request):
        # This is the next best thing to parametrizing __init__ that I could find
        # in reasonable time
        version = request.param
        self.version = version
        self.version_note = CommentVersionNote(version=version)
        for change_note in self.change_notes:
            self.version_note.add_change_note(change_note)

    def test_unsupported_markup(self):
        with pytest.raises(UnsupportedMarkupError):
            self.version_note.render("unsupported markup")

    def test_markdown(self):
        rendered = self.version_note.render("markdown")
        assert (
            rendered
            == """- comment 1
- a

    multi-line

    comment 2
- comment 3"""
        )

    def test_html(self):
        rendered = self.version_note.render("html")
        assert (
            rendered
            == """<ul>
<li>comment 1</li>
<li>a<br>multi-line<br>comment 2</li>
<li>comment 3</li>
</ul>"""
        )

    def test_restructuredtext(self):
        rendered = self.version_note.render("restructuredtext")
        assert (
            rendered
            == """- comment 1
- a

  multi-line

  comment 2
- comment 3"""
        )

    def test_fallback(self):
        rendered = self.version_note.render("text")
        assert (
            rendered
            == """comment 1

a
multi-line
comment 2

comment 3"""
        )