✨ Add Formatter.Logs
This commit is contained in:
		
					parent
					
						
							
								8d238d0d76
							
						
					
				
			
			
				commit
				
					
						d1b3604e1e
					
				
			
		
					 3 changed files with 54 additions and 2 deletions
				
			
		|  | @ -4,6 +4,7 @@ import "codeberg.org/danjones000/my-log/models" | ||||||
| 
 | 
 | ||||||
| type Formatter interface { | type Formatter interface { | ||||||
| 	Name() string | 	Name() string | ||||||
|  | 	Logs([]models.Log) (out []byte, err error) | ||||||
| 	Log(models.Log) (out []byte, err error) | 	Log(models.Log) (out []byte, err error) | ||||||
| 	Entry(models.Entry) (out []byte, err error) | 	Entry(models.Entry) (out []byte, err error) | ||||||
| 	Meta(models.Meta) (out []byte, err error) | 	Meta(models.Meta) (out []byte, err error) | ||||||
|  |  | ||||||
|  | @ -20,6 +20,26 @@ func (pt *PlainText) Name() string { | ||||||
| 	return "plain" | 	return "plain" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (pt *PlainText) Logs(logs []models.Log) (out []byte, err error) { | ||||||
|  | 	if len(logs) == 0 { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	buff := &bytes.Buffer{} | ||||||
|  | 	first := true | ||||||
|  | 	for _, log := range logs { | ||||||
|  | 		o, _ := pt.Log(log) | ||||||
|  | 		if !first { | ||||||
|  | 			buff.WriteByte(10) | ||||||
|  | 			buff.WriteByte(10) | ||||||
|  | 		} | ||||||
|  | 		first = false | ||||||
|  | 		buff.Write(o) | ||||||
|  | 	} | ||||||
|  | 	out = buff.Bytes() | ||||||
|  | 	return | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (pt *PlainText) Log(log models.Log) (out []byte, err error) { | func (pt *PlainText) Log(log models.Log) (out []byte, err error) { | ||||||
| 	if len(log.Entries) == 0 { | 	if len(log.Entries) == 0 { | ||||||
| 		return | 		return | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ import ( | ||||||
| 	"github.com/stretchr/testify/require" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func TestPlainLog(t *testing.T) { | func TestPlainLogs(t *testing.T) { | ||||||
| 	m := []models.Meta{ | 	m := []models.Meta{ | ||||||
| 		{"foo", "bar"}, | 		{"foo", "bar"}, | ||||||
| 		{"baz", 42}, | 		{"baz", 42}, | ||||||
|  | @ -23,11 +23,17 @@ func TestPlainLog(t *testing.T) { | ||||||
| 		{Title: "small", Date: time.Now()}, | 		{Title: "small", Date: time.Now()}, | ||||||
| 	} | 	} | ||||||
| 	l := models.Log{"stuff", e} | 	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") | 	f, err := New("plain") | ||||||
| 	require.NoError(t, err) | 	require.NoError(t, err) | ||||||
| 
 | 
 | ||||||
| 	out, err := f.Log(l) | 	out, err := f.Logs(logs) | ||||||
| 	require.NoError(t, err) | 	require.NoError(t, err) | ||||||
| 
 | 
 | ||||||
| 	read := bytes.NewReader(out) | 	read := bytes.NewReader(out) | ||||||
|  | @ -67,6 +73,24 @@ func TestPlainLog(t *testing.T) { | ||||||
| 	line = scan.Text() | 	line = scan.Text() | ||||||
| 	assert.Equal(t, "Date: "+e[1].Date.Format(tools.DateFormat), line) | 	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() | 	more := scan.Scan() | ||||||
| 	assert.False(t, more) | 	assert.False(t, more) | ||||||
| } | } | ||||||
|  | @ -76,6 +100,13 @@ func TestPlainName(t *testing.T) { | ||||||
| 	assert.Equal(t, "plain", f.Name()) | 	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) { | func TestPlainLogNoEntries(t *testing.T) { | ||||||
| 	f, _ := New("plain") | 	f, _ := New("plain") | ||||||
| 	out, err := f.Log(models.Log{Name: "foo"}) | 	out, err := f.Log(models.Log{Name: "foo"}) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue