39 lines
1 KiB
Go
39 lines
1 KiB
Go
package markdown
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/ayn2op/discordo/internal/config"
|
|
"github.com/ayn2op/ningen/v3/discordmd"
|
|
"github.com/gdamore/tcell/v3"
|
|
"github.com/yuin/goldmark/parser"
|
|
"github.com/yuin/goldmark/text"
|
|
)
|
|
|
|
func TestRendererMasksSpoilers(t *testing.T) {
|
|
source := []byte("before ||secret|| after")
|
|
node := parser.NewParser(
|
|
parser.WithBlockParsers(discordmd.BlockParsers()...),
|
|
parser.WithInlineParsers(discordmd.InlineParserWithLink()...),
|
|
).Parse(text.NewReader(source))
|
|
|
|
for _, test := range []struct {
|
|
mask bool
|
|
want string
|
|
}{
|
|
{true, "before [spoiler] after"},
|
|
{false, "before secret after"},
|
|
} {
|
|
lines := NewRenderer(&config.Config{Markdown: config.MarkdownConfig{MaskSpoilers: test.mask}}).RenderLines(source, node, tcell.StyleDefault)
|
|
var got strings.Builder
|
|
for _, line := range lines {
|
|
for _, segment := range line {
|
|
got.WriteString(segment.Text)
|
|
}
|
|
}
|
|
if got.String() != test.want {
|
|
t.Fatalf("mask=%t: got %q, want %q", test.mask, got.String(), test.want)
|
|
}
|
|
}
|
|
}
|