aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt
blob: 0ca4e24598f149393e4d0759d78e6080b9850bdb (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
 * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

package renderers.html

import org.jetbrains.dokka.base.renderers.html.HtmlRenderer
import org.jetbrains.dokka.pages.TextStyle
import org.jetbrains.dokka.pages.TokenStyle
import org.jsoup.Jsoup
import org.jsoup.nodes.Element
import renderers.testPage
import utils.*
import kotlin.test.Test
import kotlin.test.assertEquals

class TextStylesTest : HtmlRenderingOnlyTestBase() {
    @Test
    fun `should include bold`(){
        val page = testPage {
            text("bold text", styles = setOf(TextStyle.Bold))
        }
        HtmlRenderer(context).render(page)
        renderedContent.match(B("bold text"))
    }

    @Test
    fun `should include italics`(){
        val page = testPage {
            text("italics text", styles = setOf(TextStyle.Italic))
        }
        HtmlRenderer(context).render(page)
        renderedContent.match(I("italics text"))
    }

    @Test
    fun `should include strikethrought`(){
        val page = testPage {
            text("strike text", styles = setOf(TextStyle.Strikethrough))
        }
        HtmlRenderer(context).render(page)
        renderedContent.match(STRIKE("strike text"))
    }

    @Test
    fun `should include token styles`(){
        val page = testPage {
            text("keyword", styles = setOf(TokenStyle.Keyword))
        }
        HtmlRenderer(context).render(page)
        renderedContent.match(Span("keyword"))
        val lastChild = renderedContent.children().last() ?: throw IllegalStateException("No element found")
        assertEquals(lastChild.attr("class"), "token keyword")
    }

    @Test
    fun `should include multiple styles at one`(){
        val page = testPage {
            text(
                "styled text",
                styles = setOf(
                    TextStyle.Strikethrough,
                    TextStyle.Bold,
                    TextStyle.Indented,
                    TextStyle.UnderCoverText,
                    TextStyle.BreakableAfter
                )
            )
        }
        HtmlRenderer(context).render(page)
        renderedContent.match(STRIKE(B("styled text")))
        //Our dsl swallows nbsp so i manually check for it
        files.contents.getValue("test-page.html").contains("&nbsp;<strike><b>styled text</b></strike>")
    }

    @Test
    fun `should include blockquote`() {
        val page = testPage {
            group(styles = setOf(TextStyle.Quotation)) {
                text("blockquote text")
            }
        }
        HtmlRenderer(context).render(page)
        renderedContent.match(BlockQuote("blockquote text"))
    }

    @Test
    fun `should include var`() {
        val page = testPage {
            group(styles = setOf(TextStyle.Var)) {
                text("variable")
            }
        }
        HtmlRenderer(context).render(page)
        println(renderedContent)
        renderedContent.match(Var("variable"))
    }

    @Test
    fun `should include underlined text`() {
        val page = testPage {
            group(styles = setOf(TextStyle.Underlined)) {
                text("underlined text")
            }
        }
        HtmlRenderer(context).render(page)
        println(renderedContent)
        renderedContent.match(U("underlined text"))
    }

    override val renderedContent: Element
        get() = files.contents.getValue("test-page.html").let { Jsoup.parse(it) }.select("#content").single()
}