Initial commit
This commit is contained in:
+148
@@ -0,0 +1,148 @@
|
||||
package sse
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestEncodeOnlyData(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Data: "junk\n\njk\nid:fake",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "data: junk\\n\\njk\\nid:fake\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeWithEvent(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "t\n:<>\r\test",
|
||||
Data: "junk\n\njk\nid:fake",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: t\\n:<>\\r\test\ndata: junk\\n\\njk\\nid:fake\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeWithId(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Id: "t\n:<>\r\test",
|
||||
Data: "junk\n\njk\nid:fa\rke",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "id: t\\n:<>\\r\test\ndata: junk\\n\\njk\\nid:fa\\rke\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeWithRetry(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Retry: 11,
|
||||
Data: "junk\n\njk\nid:fake\n",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "retry: 11\ndata: junk\\n\\njk\\nid:fake\\n\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeWithEverything(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "abc",
|
||||
Id: "12345",
|
||||
Retry: 10,
|
||||
Data: "some data",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "id: 12345\nevent: abc\nretry: 10\ndata: some data\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeMap(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "a map",
|
||||
Data: map[string]interface{}{
|
||||
"foo": "b\n\rar",
|
||||
"bar": "id: 2",
|
||||
},
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: a map\ndata: {\"bar\":\"id: 2\",\"foo\":\"b\\n\\rar\"}\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeSlice(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "a slice",
|
||||
Data: []interface{}{1, "text", map[string]interface{}{"foo": "bar"}},
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: a slice\ndata: [1,\"text\",{\"foo\":\"bar\"}]\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeStruct(t *testing.T) {
|
||||
myStruct := struct {
|
||||
A int
|
||||
B string `json:"value"`
|
||||
}{1, "number"}
|
||||
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "a struct",
|
||||
Data: myStruct,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: a struct\ndata: {\"A\":1,\"value\":\"number\"}\n\n")
|
||||
|
||||
w.Reset()
|
||||
err = Encode(w, Event{
|
||||
Event: "a struct",
|
||||
Data: &myStruct,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: a struct\ndata: {\"A\":1,\"value\":\"number\"}\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeInteger(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "an integer",
|
||||
Data: 1,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: an integer\ndata: 1\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeFloat(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
err := Encode(w, Event{
|
||||
Event: "Float",
|
||||
Data: 1.5,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, w.String(), "event: Float\ndata: 1.5\n\n")
|
||||
}
|
||||
|
||||
func TestEncodeStream(t *testing.T) {
|
||||
w := new(bytes.Buffer)
|
||||
|
||||
Encode(w, Event{
|
||||
Event: "float",
|
||||
Data: 1.5,
|
||||
})
|
||||
|
||||
Encode(w, Event{
|
||||
Id: "123",
|
||||
Data: map[string]interface{}{"foo": "bar", "bar": "foo"},
|
||||
})
|
||||
|
||||
Encode(w, Event{
|
||||
Id: "124",
|
||||
Event: "chat",
|
||||
Data: "hi! dude",
|
||||
})
|
||||
fmt.Println(w.String())
|
||||
assert.Equal(t, w.String(), "event: float\ndata: 1.5\n\nid: 123\ndata: {\"bar\":\"foo\",\"foo\":\"bar\"}\n\nid: 124\nevent: chat\ndata: hi! dude\n\n")
|
||||
}
|
||||
Reference in New Issue
Block a user