You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zk/internal/cli/cmd/list_test.go

68 lines
1.7 KiB
Go

package cmd
import (
"testing"
"github.com/zk-org/zk/internal/util/test/assert"
)
func TestListFormatDefault(t *testing.T) {
cmd := List{}
assert.Equal(t, cmd.noteTemplate(), `{{style "title" title}} {{style "path" path}} ({{format-date created "elapsed"}})
{{list snippets}}`)
}
func TestListFormatPredefined(t *testing.T) {
test := func(format, expectedTemplate string) {
cmd := List{Format: format}
assert.Equal(t, cmd.noteTemplate(), expectedTemplate)
}
// Known formats
test("json", `{{json .}}`)
test("jsonl", `{{json .}}`)
test("path", `{{path}}`)
test("link", `{{link}}`)
test("oneline", `{{style "title" title}} {{style "path" path}} ({{format-date created "elapsed"}})`)
test("short", `{{style "title" title}} {{style "path" path}} ({{format-date created "elapsed"}})
{{list snippets}}`)
test("medium", `{{style "title" title}} {{style "path" path}}
Created: {{format-date created "short"}}
{{list snippets}}`)
test("long", `{{style "title" title}} {{style "path" path}}
Created: {{format-date created "short"}}
Modified: {{format-date modified "short"}}
{{list snippets}}`)
test("full", `{{style "title" title}} {{style "path" path}}
Created: {{format-date created "short"}}
Modified: {{format-date modified "short"}}
Tags: {{join tags ", "}}
{{prepend " " body}}
`)
// Predefined formats are case sensitive.
test("Path", "Path")
}
func TestListFormatCustom(t *testing.T) {
test := func(format, expectedTemplate string) {
cmd := List{Format: format}
assert.Equal(t, cmd.noteTemplate(), expectedTemplate)
}
// Custom formats are used literally.
test("{{title}}", "{{title}}")
// \n and \t in custom formats are expanded.
test(`{{title}}\t{{path}}\n{{snippet}}`, "{{title}}\t{{path}}\n{{snippet}}")
}