my-log/formatters/plain_test.go
Dan Jones 1110288d84 Migrate from testify to nalgeon/be testing library
- Replace all testify/assert and testify/require with be library
- Update go.mod to use be v0.3.0 instead of testify
- Simplify test assertions using be.Equal, be.Err, and be.True
- Refactor append_test, entry_test, meta_test, log_test, and formatter tests
2026-02-13 16:02:38 -06:00

139 lines
2.6 KiB
Go

package formatters
import (
"bufio"
"bytes"
"fmt"
"testing"
"time"
"codeberg.org/danjones000/my-log/models"
"codeberg.org/danjones000/my-log/tools"
"github.com/nalgeon/be"
)
func TestPlainLogs(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}
e2 := models.Entry{
Title: "three",
Date: time.Now(),
}
l2 := models.Log{"more-stuff", []models.Entry{e2}}
logs := []models.Log{l, l2}
f, err := New("plain")
be.Err(t, err, nil)
out, err := f.Logs(logs)
be.Err(t, err, nil)
read := bytes.NewReader(out)
scan := bufio.NewScanner(read)
scan.Scan()
line := scan.Text()
be.Equal(t, line, l.Name)
scan.Scan()
line = scan.Text()
be.Equal(t, line, "#######")
scan.Scan()
scan.Scan()
line = scan.Text()
be.Equal(t, line, "Title: "+e[0].Title)
scan.Scan()
line = scan.Text()
be.Equal(t, line, "Date: "+e[0].Date.Format(tools.DateFormat))
scan.Scan()
line = scan.Text()
be.Equal(t, line, "foo: bar")
scan.Scan()
line = scan.Text()
be.Equal(t, line, "baz: 42")
scan.Scan()
scan.Scan()
line = scan.Text()
be.Equal(t, line, "Title: "+e[1].Title)
scan.Scan()
line = scan.Text()
be.Equal(t, line, "Date: "+e[1].Date.Format(tools.DateFormat))
scan.Scan()
scan.Scan()
line = scan.Text()
be.Equal(t, line, l2.Name)
scan.Scan()
line = scan.Text()
be.Equal(t, line, "#######")
scan.Scan()
scan.Scan()
line = scan.Text()
be.Equal(t, line, "Title: "+e2.Title)
scan.Scan()
line = scan.Text()
be.Equal(t, line, "Date: "+e2.Date.Format(tools.DateFormat))
more := scan.Scan()
be.True(t, !more)
}
func TestPlainName(t *testing.T) {
f, _ := New("plain")
be.Equal(t, f.Name(), "plain")
}
func TestPlainLogNone(t *testing.T) {
f, _ := New("plain")
out, err := f.Logs([]models.Log{})
be.Err(t, err, nil)
be.Equal(t, len(out), 0)
}
func TestPlainLogNoEntries(t *testing.T) {
f, _ := New("plain")
out, err := f.Log(models.Log{Name: "foo"})
be.Err(t, err, nil)
be.Equal(t, len(out), 0)
}
func TestPlainMetaEmpty(t *testing.T) {
f, _ := New("plain")
out, err := f.Meta(models.Meta{"foo", ""})
be.Err(t, err, nil)
be.Equal(t, len(out), 0)
}
func TestPlainMetaError(t *testing.T) {
f, _ := New("plain")
out, err := f.Meta(models.Meta{"foo", make(chan bool)})
be.Err(t, err)
be.Equal(t, len(out), 0)
}
func TestPlainEntry(t *testing.T) {
f, _ := New("plain")
now := time.Now()
out, err := f.Entry(models.Entry{
Title: "foo",
Date: now,
})
be.Err(t, err, nil)
be.Equal(t, string(out), fmt.Sprintf("Title: foo\nDate: %s", now.Format(tools.DateFormat)))
}