// Copyright 2017 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package markup import ( "strings" "testing" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) const ( AppURL = "http://localhost:3000/" Repo = "gogits/gogs" AppSubURL = AppURL + Repo + "/" ) func TestRender_StandardLinks(t *testing.T) { setting.AppURL = AppURL setting.AppSubURL = AppSubURL test := func(input, expected string) { buffer, err := RenderString(&markup.RenderContext{ Ctx: git.DefaultContext, Links: markup.Links{ Base: setting.AppSubURL, }, }, input) require.NoError(t, err) assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) } // No BranchPath or TreePath set. test("[[file:comfy][comfy]]", `

comfy

`) test("[[https://google.com/]]", `

https://google.com/

`) lnk := util.URLJoin(AppSubURL, "WikiPage") test("[[WikiPage][WikiPage]]", `

WikiPage

`) } func TestRender_BaseLinks(t *testing.T) { setting.AppURL = AppURL setting.AppSubURL = AppSubURL testBranch := func(input, expected string) { buffer, err := RenderString(&markup.RenderContext{ Ctx: git.DefaultContext, Links: markup.Links{ Base: setting.AppSubURL, BranchPath: "branch/main", }, }, input) require.NoError(t, err) assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) } testBranchTree := func(input, expected string) { buffer, err := RenderString(&markup.RenderContext{ Ctx: git.DefaultContext, Links: markup.Links{ Base: setting.AppSubURL, BranchPath: "branch/main", TreePath: "deep/nested/folder", }, }, input) require.NoError(t, err) assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) } testBranch("[[file:comfy][comfy]]", `

comfy

`) testBranchTree("[[file:comfy][comfy]]", `

comfy

`) testBranch("[[file:./src][./src/]]", `

./src/

`) testBranchTree("[[file:./src][./src/]]", `

./src/

`) } func TestRender_Media(t *testing.T) { setting.AppURL = AppURL setting.AppSubURL = AppSubURL test := func(input, expected string) { buffer, err := RenderString(&markup.RenderContext{ Ctx: git.DefaultContext, Links: markup.Links{ Base: setting.AppSubURL, }, }, input) require.NoError(t, err) assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) } url := "../../.images/src/02/train.jpg" result := util.URLJoin(AppSubURL, url) test("[[file:"+url+"]]", `

`+result+`

`) // With description. test("[[https://example.com][https://example.com/example.svg]]", `

https://example.com/example.svg

`) test("[[https://example.com][pre https://example.com/example.svg post]]", `

pre https://example.com/example.svg post

`) test("[[https://example.com][https://example.com/example.mp4]]", `

`) test("[[https://example.com][pre https://example.com/example.mp4 post]]", `

pre post

`) // Without description. test("[[https://example.com/example.svg]]", `

https://example.com/example.svg

`) test("[[https://example.com/example.mp4]]", `

`) // Text description. test("[[file:./lem-post.png][file:./lem-post.png]]", `

http://localhost:3000/gogits/gogs/lem-post.png

`) test("[[file:./lem-post.mp4][file:./lem-post.mp4]]", `

`) } func TestRender_Source(t *testing.T) { setting.AppURL = AppURL setting.AppSubURL = AppSubURL test := func(input, expected string) { buffer, err := RenderString(&markup.RenderContext{ Ctx: git.DefaultContext, }, input) require.NoError(t, err) assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) } test(`#+begin_src go // HelloWorld prints "Hello World" func HelloWorld() { fmt.Println("Hello World") } #+end_src `, `
// HelloWorld prints "Hello World"
func HelloWorld() {
	fmt.Println("Hello World")
}
`) }