✨ Add plain text formatter
This commit is contained in:
parent
286ac4557d
commit
89e6c2b3bd
5 changed files with 276 additions and 0 deletions
109
formatters/plain_test.go
Normal file
109
formatters/plain_test.go
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
package formatters
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"codeberg.org/danjones000/my-log/models"
|
||||
"codeberg.org/danjones000/my-log/tools"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestPlainLog(t *testing.T) {
|
||||
m := []models.Meta{
|
||||
{"foo", "bar"},
|
||||
{"baz", 42},
|
||||
}
|
||||
e := []models.Entry{
|
||||
{Title: "one", Date: time.Now(), Fields: m},
|
||||
{Title: "small", Date: time.Now()},
|
||||
}
|
||||
l := models.Log{"stuff", e}
|
||||
|
||||
f, err := New("plain")
|
||||
require.NoError(t, err)
|
||||
|
||||
out, err := f.Log(l)
|
||||
require.NoError(t, err)
|
||||
|
||||
read := bytes.NewReader(out)
|
||||
scan := bufio.NewScanner(read)
|
||||
|
||||
scan.Scan()
|
||||
line := scan.Text()
|
||||
assert.Equal(t, l.Name, line)
|
||||
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "#######", line)
|
||||
|
||||
scan.Scan()
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "Title: "+e[0].Title, line)
|
||||
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "Date: "+e[0].Date.Format(tools.DateFormat), line)
|
||||
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "foo: bar", line)
|
||||
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "baz: 42", line)
|
||||
|
||||
scan.Scan()
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "Title: "+e[1].Title, line)
|
||||
|
||||
scan.Scan()
|
||||
line = scan.Text()
|
||||
assert.Equal(t, "Date: "+e[1].Date.Format(tools.DateFormat), line)
|
||||
|
||||
more := scan.Scan()
|
||||
assert.False(t, more)
|
||||
}
|
||||
|
||||
func TestPlainName(t *testing.T) {
|
||||
f, _ := New("plain")
|
||||
assert.Equal(t, "plain", f.Name())
|
||||
}
|
||||
|
||||
func TestPlainLogNoEntries(t *testing.T) {
|
||||
f, _ := New("plain")
|
||||
out, err := f.Log(models.Log{Name: "foo"})
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, out, 0)
|
||||
}
|
||||
|
||||
func TestPlainMetaEmpty(t *testing.T) {
|
||||
f, _ := New("plain")
|
||||
out, err := f.Meta(models.Meta{"foo", ""})
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, out, 0)
|
||||
}
|
||||
|
||||
func TestPlainMetaError(t *testing.T) {
|
||||
f, _ := New("plain")
|
||||
out, err := f.Meta(models.Meta{"foo", make(chan bool)})
|
||||
assert.Error(t, err)
|
||||
assert.Len(t, out, 0)
|
||||
}
|
||||
|
||||
func TestPlainEntry(t *testing.T) {
|
||||
f, _ := New("plain")
|
||||
now := time.Now()
|
||||
out, err := f.Entry(models.Entry{
|
||||
Title: "foo",
|
||||
Date: now,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, fmt.Sprintf("Title: foo\nDate: %s", now.Format(tools.DateFormat)), string(out))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue