81 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package formatters
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"codeberg.org/danjones000/my-log/models"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestJsonName(t *testing.T) {
 | |
| 	f, _ := New("json")
 | |
| 	assert.Equal(t, "json", f.Name())
 | |
| }
 | |
| 
 | |
| func TestJsonMeta(t *testing.T) {
 | |
| 	f, _ := New("json")
 | |
| 	m := models.Meta{"foo", 42}
 | |
| 	exp := `{"foo":42}`
 | |
| 	o, err := f.Meta(m)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.JSONEq(t, exp, string(o))
 | |
| }
 | |
| 
 | |
| func TestJsonEntry(t *testing.T) {
 | |
| 	when := time.Now()
 | |
| 	f, _ := New("json")
 | |
| 	m := models.Meta{"foo", 42}
 | |
| 	e := models.Entry{
 | |
| 		Title:  "Homer",
 | |
| 		Date:   when,
 | |
| 		Fields: []models.Meta{m},
 | |
| 	}
 | |
| 	exp := fmt.Sprintf(`{"title":"%s","date":"%s","foo":42}`, e.Title, when.Format(time.RFC3339))
 | |
| 	o, err := f.Entry(e)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.JSONEq(t, exp, string(o))
 | |
| }
 | |
| 
 | |
| func TestJsonLog(t *testing.T) {
 | |
| 	when := time.Now()
 | |
| 	f, _ := New("json")
 | |
| 	m := models.Meta{"foo", 42}
 | |
| 	e := models.Entry{
 | |
| 		Title:  "Homer",
 | |
| 		Date:   when,
 | |
| 		Fields: []models.Meta{m},
 | |
| 	}
 | |
| 	l := models.Log{"stuff", []models.Entry{e}}
 | |
| 	exp := fmt.Sprintf(`{"%s":[{"title":"%s","date":"%s","foo":42}]}`, l.Name, e.Title, when.Format(time.RFC3339))
 | |
| 	o, err := f.Log(l)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.JSONEq(t, exp, string(o))
 | |
| }
 | |
| 
 | |
| func TestJsonNoLogs(t *testing.T) {
 | |
| 	f, _ := New("json")
 | |
| 	o, err := f.Logs([]models.Log{})
 | |
| 	var exp []byte
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Equal(t, exp, o)
 | |
| }
 | |
| 
 | |
| func TestJsonErr(t *testing.T) {
 | |
| 	f, _ := New("json")
 | |
| 	o, err := f.Meta(models.Meta{"foo", make(chan bool)})
 | |
| 	var exp []byte
 | |
| 	assert.Error(t, err)
 | |
| 	assert.Equal(t, exp, o)
 | |
| }
 | |
| 
 | |
| func TestJsonPretty(t *testing.T) {
 | |
| 	f := Json{true}
 | |
| 	o, err := f.Meta(models.Meta{"foo", 42})
 | |
| 	exp := `{
 | |
| 	"foo": 42
 | |
| }`
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Equal(t, exp, string(o))
 | |
| }
 |