...

Source file src/github.com/spf13/viper/internal/encoding/encoder_test.go

Documentation: github.com/spf13/viper/internal/encoding

     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