...
1 package encoding
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8 )
9
10 type encoder struct {
11 b []byte
12 }
13
14 func (e encoder) Encode(_ map[string]any) ([]byte, error) {
15 return e.b, nil
16 }
17
18 func TestEncoderRegistry_RegisterEncoder(t *testing.T) {
19 t.Run("OK", func(t *testing.T) {
20 registry := NewEncoderRegistry()
21
22 err := registry.RegisterEncoder("myformat", encoder{})
23 require.NoError(t, err)
24 })
25
26 t.Run("AlreadyRegistered", func(t *testing.T) {
27 registry := NewEncoderRegistry()
28
29 err := registry.RegisterEncoder("myformat", encoder{})
30 require.NoError(t, err)
31
32 err = registry.RegisterEncoder("myformat", encoder{})
33 assert.ErrorIs(t, err, ErrEncoderFormatAlreadyRegistered)
34 })
35 }
36
37 func TestEncoderRegistry_Decode(t *testing.T) {
38 t.Run("OK", func(t *testing.T) {
39 registry := NewEncoderRegistry()
40 encoder := encoder{
41 b: []byte("key: value"),
42 }
43
44 err := registry.RegisterEncoder("myformat", encoder)
45 require.NoError(t, err)
46
47 b, err := registry.Encode("myformat", map[string]any{"key": "value"})
48 require.NoError(t, err)
49
50 assert.Equal(t, "key: value", string(b))
51 })
52
53 t.Run("EncoderNotFound", func(t *testing.T) {
54 registry := NewEncoderRegistry()
55
56 _, err := registry.Encode("myformat", map[string]any{"key": "value"})
57 assert.ErrorIs(t, err, ErrEncoderNotFound)
58 })
59 }
60
View as plain text