140 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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 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")
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	out, err := f.Logs(logs)
 | |
| 	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)
 | |
| 
 | |
| 	scan.Scan()
 | |
| 	scan.Scan()
 | |
| 	line = scan.Text()
 | |
| 	assert.Equal(t, l2.Name, line)
 | |
| 
 | |
| 	scan.Scan()
 | |
| 	line = scan.Text()
 | |
| 	assert.Equal(t, "#######", line)
 | |
| 
 | |
| 	scan.Scan()
 | |
| 	scan.Scan()
 | |
| 	line = scan.Text()
 | |
| 	assert.Equal(t, "Title: "+e2.Title, line)
 | |
| 
 | |
| 	scan.Scan()
 | |
| 	line = scan.Text()
 | |
| 	assert.Equal(t, "Date: "+e2.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 TestPlainLogNone(t *testing.T) {
 | |
| 	f, _ := New("plain")
 | |
| 	out, err := f.Logs([]models.Log{})
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, out, 0)
 | |
| }
 | |
| 
 | |
| 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))
 | |
| }
 |