Ctrl K
ComunidadGuías…

encoders/encoding_cache_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
}