1
0
Fork 0
golang-github-nicholas-fedo.../pkg/format/render_markdown_test.go
Daniel Baumann c0c4addb85
Adding upstream version 0.8.9.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-22 10:16:14 +02:00

149 lines
3.7 KiB
Go

package format
import (
"github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
"github.com/onsi/gomega/format"
)
var _ = ginkgo.Describe("RenderMarkdown", func() {
format.CharactersAroundMismatchToInclude = 10
ginkgo.It("should render the expected output based on config reflection/tags", func() {
actual := testRenderTree(MarkdownTreeRenderer{HeaderPrefix: `### `}, &struct {
Name string `default:"notempty"`
Host string `url:"host"`
}{})
expected := `
### URL Fields
* __Host__ (**Required**)
URL part: <code class="service-url">mock://<strong>host</strong>/</code>
### Query/Param Props
* __Name__
Default: `[1:] + "`notempty`" + `
`
gomega.Expect(actual).To(gomega.Equal(expected))
})
ginkgo.It("should render url paths in sorted order", func() {
actual := testRenderTree(MarkdownTreeRenderer{HeaderPrefix: `### `}, &struct {
Host string `url:"host"`
Path1 string `url:"path1"`
Path3 string `url:"path3"`
Path2 string `url:"path2"`
}{})
expected := `
### URL Fields
* __Host__ (**Required**)
URL part: <code class="service-url">mock://<strong>host</strong>/path1/path2/path3</code>
* __Path1__ (**Required**)
URL part: <code class="service-url">mock://host/<strong>path1</strong>/path2/path3</code>
* __Path2__ (**Required**)
URL part: <code class="service-url">mock://host/path1/<strong>path2</strong>/path3</code>
* __Path3__ (**Required**)
URL part: <code class="service-url">mock://host/path1/path2/<strong>path3</strong></code>
### Query/Param Props
`[1:] // Remove initial newline
gomega.Expect(actual).To(gomega.Equal(expected))
})
ginkgo.It("should render prop aliases", func() {
actual := testRenderTree(MarkdownTreeRenderer{HeaderPrefix: `### `}, &struct {
Name string `key:"name,handle,title,target"`
}{})
expected := `
### URL Fields
### Query/Param Props
* __Name__ (**Required**)
Aliases: `[1:] + "`handle`, `title`, `target`" + `
`
gomega.Expect(actual).To(gomega.Equal(expected))
})
ginkgo.It("should render possible enum values", func() {
actual := testRenderTree(MarkdownTreeRenderer{HeaderPrefix: `### `}, &testEnummer{})
expected := `
### URL Fields
### Query/Param Props
* __Choice__
Default: `[1:] + "`Maybe`" + `
Possible values: ` + "`Yes`, `No`, `Maybe`" + `
`
gomega.Expect(actual).To(gomega.Equal(expected))
})
ginkgo.When("there are no query props", func() {
ginkgo.It("should prepend an empty-message instead of props description", func() {
actual := testRenderTree(MarkdownTreeRenderer{
HeaderPrefix: `### `,
PropsDescription: "Feel free to set these:",
PropsEmptyMessage: "There is nothing to set!",
}, &struct {
Host string `url:"host"`
}{})
expected := `
### URL Fields
* __Host__ (**Required**)
URL part: <code class="service-url">mock://<strong>host</strong>/</code>
### Query/Param Props
There is nothing to set!
`[1:] // Remove initial newline
gomega.Expect(actual).To(gomega.Equal(expected))
})
})
ginkgo.When("there are query props", func() {
ginkgo.It("should prepend the props description", func() {
actual := testRenderTree(MarkdownTreeRenderer{
HeaderPrefix: `### `,
PropsDescription: "Feel free to set these:",
PropsEmptyMessage: "There is nothing to set!",
}, &struct {
Host string `url:"host"`
CoolMode bool `key:"coolmode" optional:""`
}{})
expected := `
### URL Fields
* __Host__ (**Required**)
URL part: <code class="service-url">mock://<strong>host</strong>/</code>
### Query/Param Props
Feel free to set these:
* __CoolMode__
Default: *empty*
`[1:] // Remove initial newline
gomega.Expect(actual).To(gomega.Equal(expected))
})
})
})