encoders/encoding_cache_test.go
Rama main · réplica de lectura del repositorio original.
package encoders
import (
"testing"
"github.com/anycable/anycable-go/ws"
"github.com/stretchr/testify/assert"
)
type MockMessage struct {
Encoded int
Value string
}
func (m *MockMessage) GetType() string {
return "mock"
}
func TestEncodingCache(t *testing.T) {
msg := &MockMessage{Value: "mock"}
c := NewEncodingCache()
callback := func(msg EncodedMessage) (*ws.SentFrame, error) {
if m, ok := msg.(*MockMessage); ok {
m.Encoded++
return &ws.SentFrame{FrameType: ws.TextFrame, Payload: []byte(m.Value)}, nil
}
return nil, nil
}
v, _ := c.Fetch(msg, "mock", callback)
assert.Equal(t, []byte("mock"), v.Payload)
v, _ = c.Fetch(msg, "mock", callback)
assert.Equal(t, []byte("mock"), v.Payload)
assert.Equal(t, 1, msg.Encoded)
}