|
| 1 | +import pytest |
1 | 2 | from django.test import TestCase
|
2 | 3 |
|
3 | 4 | from rest_framework.compat import apply_markdown
|
|
30 | 31 |
|
31 | 32 | # If markdown is installed we also test it's working
|
32 | 33 | # (and that our wrapped forces '=' to h2 and '-' to h3)
|
33 |
| -MARKED_DOWN_HILITE = """ |
34 |
| -<div class="highlight"><pre><span></span><span \ |
35 |
| -class="p">[{</span><br /> <span class="nt">"alpha"</span><span\ |
36 |
| - class="p">:</span> <span class="mi">1</span><span class="p">,</span><br />\ |
37 |
| - <span class="nt">"beta: "</span><span class="err">this</span>\ |
38 |
| - <span class="err">is</span> <span class="err">a</span> <span class="err">\ |
39 |
| -string"</span><br /><span class="p">}]</span><br /></pre></div> |
40 |
| -
|
41 |
| -<p><br /></p>""" |
42 |
| - |
43 |
| -MARKED_DOWN_NOT_HILITE = """ |
44 |
| -<p><code>json |
45 |
| -[{ |
46 |
| - "alpha": 1, |
47 |
| - "beta: "this is a string" |
48 |
| -}]</code></p>""" |
49 |
| - |
50 |
| -# We support markdown < 2.1 and markdown >= 2.1 |
51 |
| -MARKED_DOWN_lt_21 = """<h2>an example docstring</h2> |
52 |
| -<ul> |
53 |
| -<li>list</li> |
54 |
| -<li>list</li> |
55 |
| -</ul> |
56 |
| -<h3>another header</h3> |
57 |
| -<pre><code>code block |
58 |
| -</code></pre> |
59 |
| -<p>indented</p> |
60 |
| -<h2 id="hash_style_header">hash style header</h2>%s""" |
61 |
| - |
62 |
| -MARKED_DOWN_gte_21 = """<h2 id="an-example-docstring">an example docstring</h2> |
| 34 | +MARKED_DOWN_HILITE = """<h2 id="an-example-docstring">an example docstring</h2> |
63 | 35 | <ul>
|
64 | 36 | <li>list</li>
|
65 | 37 | <li>list</li>
|
|
68 | 40 | <pre><code>code block
|
69 | 41 | </code></pre>
|
70 | 42 | <p>indented</p>
|
71 |
| -<h2 id="hash-style-header">hash style header</h2>%s""" |
| 43 | +<h2 id="hash-style-header">hash style header</h2> |
| 44 | +<div class="highlight"><pre><span></span><span class="p">[{</span><br />\ |
| 45 | + <span class="nt">"alpha"</span><span class="p">:</span>\ |
| 46 | + <span class="mi">1</span><span class="p">,</span><br />\ |
| 47 | + <span class="nt">"beta: "</span><span class="err">this\ |
| 48 | +</span> <span class="err">is</span> <span class="err">a</span> \ |
| 49 | +<span class="err">string"</span><br /><span class="p">}]</span>\ |
| 50 | +<br /></pre></div> |
| 51 | +<p><br /></p>""" |
72 | 52 |
|
73 | 53 |
|
74 | 54 | class TestViewNamesAndDescriptions(TestCase):
|
@@ -165,23 +145,12 @@ class MockView(APIView):
|
165 | 145 |
|
166 | 146 | assert MockView().get_view_description() == 'a gettext string'
|
167 | 147 |
|
| 148 | + @pytest.mark.skipif(not apply_markdown, reason="Markdown is not installed") |
168 | 149 | def test_markdown(self):
|
169 | 150 | """
|
170 | 151 | Ensure markdown to HTML works as expected.
|
171 | 152 | """
|
172 |
| - if apply_markdown: |
173 |
| - md_applied = apply_markdown(DESCRIPTION) |
174 |
| - gte_21_match = ( |
175 |
| - md_applied == ( |
176 |
| - MARKED_DOWN_gte_21 % MARKED_DOWN_HILITE) or |
177 |
| - md_applied == ( |
178 |
| - MARKED_DOWN_gte_21 % MARKED_DOWN_NOT_HILITE)) |
179 |
| - lt_21_match = ( |
180 |
| - md_applied == ( |
181 |
| - MARKED_DOWN_lt_21 % MARKED_DOWN_HILITE) or |
182 |
| - md_applied == ( |
183 |
| - MARKED_DOWN_lt_21 % MARKED_DOWN_NOT_HILITE)) |
184 |
| - assert gte_21_match or lt_21_match |
| 153 | + assert apply_markdown(DESCRIPTION) == MARKED_DOWN_HILITE |
185 | 154 |
|
186 | 155 |
|
187 | 156 | def test_dedent_tabs():
|
|
0 commit comments