Select Git revision
writer_test.go

Semyon Krestyaninov authored
writer_test.go 1.45 KiB
package encode_test
import (
"bytes"
"testing"
"git.perx.ru/perxis/perxis-go/encode"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestWriter(t *testing.T) {
type user struct {
Name string `json:"name"`
}
t.Run("json", func(t *testing.T) {
t.Run("valid array", func(t *testing.T) {
buf := &bytes.Buffer{}
writer := encode.NewWriter[int](encode.JSONCodec(), buf)
err := writer.Write(1, 2, 3)
require.NoError(t, err)
err = writer.Write(4, 5)
require.NoError(t, err)
err = writer.Close()
require.NoError(t, err)
assert.JSONEq(t, "[1, 2, 3, 4, 5]", buf.String())
})
t.Run("struct", func(t *testing.T) {
buf := &bytes.Buffer{}
writer := encode.NewWriter[user](encode.JSONCodec(), buf)
err := writer.Write(user{"Gopher"}, user{"John"})
require.NoError(t, err)
err = writer.Close()
require.NoError(t, err)
assert.JSONEq(t, `[{"name": "Gopher"}, {"name": "John"}]`, buf.String())
})
})
t.Run("yaml", func(t *testing.T) {
t.Run("valid array", func(t *testing.T) {
buf := &bytes.Buffer{}
writer := encode.NewWriter[user](encode.YAMLCodec(), buf)
err := writer.Write(
user{Name: "Gopher"},
user{Name: "John"},
)
require.NoError(t, err)
err = writer.Write(user{Name: "Stefan"})
require.NoError(t, err)
err = writer.Close()
require.NoError(t, err)
assert.YAMLEq(t, `name: "Gopher"
---
name: "John
---
name: "Stefan"`, buf.String())
})
})
}