| 
									
										
										
										
											2024-03-10 11:33:51 -05:00
										 |  |  | 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) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-03-10 12:14:21 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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)) | 
					
						
							|  |  |  | } |