12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
- // See LICENSE.txt for license information.
- package plugin
- import (
- "github.com/pkg/errors"
- "github.com/stretchr/testify/assert"
- "testing"
- )
- func TestStringify(t *testing.T) {
- t.Run("NilShouldReturnEmpty", func(t *testing.T) {
- strings := stringify(nil)
- assert.Empty(t, strings)
- })
- t.Run("EmptyShouldReturnEmpty", func(t *testing.T) {
- strings := stringify(make([]interface{}, 0))
- assert.Empty(t, strings)
- })
- t.Run("PrimitivesAndCompositesShouldReturnCorrectValues", func(t *testing.T) {
- strings := stringify([]interface{}{
- 1234,
- 3.14159265358979323846264338327950288419716939937510,
- true,
- "foo",
- nil,
- []string{"foo", "bar"},
- map[string]int{"one": 1, "two": 2},
- &WithString{},
- &WithoutString{},
- &WithStringAndError{},
- })
- assert.Equal(t, []string{
- "1234",
- "3.141592653589793",
- "true",
- "foo",
- "<nil>",
- "[foo bar]",
- "map[one:1 two:2]",
- "string",
- "&{}",
- "error",
- }, strings)
- })
- t.Run("ErrorShouldReturnFormattedStack", func(t *testing.T) {
- strings := stringify([]interface{}{
- errors.New("error"),
- errors.WithStack(errors.New("error")),
- })
- stackRegexp := "error\n.*plugin.TestStringify.func\\d+\n\t.*plugin/stringifier_test.go:\\d+\ntesting.tRunner\n\t.*testing.go:\\d+.*"
- assert.Len(t, strings, 2)
- assert.Regexp(t, stackRegexp, strings[0])
- assert.Regexp(t, stackRegexp, strings[1])
- })
- }
- type WithString struct {
- }
- func (*WithString) String() string {
- return "string"
- }
- type WithoutString struct {
- }
- type WithStringAndError struct {
- }
- func (*WithStringAndError) String() string {
- return "string"
- }
- func (*WithStringAndError) Error() string {
- return "error"
- }
- func TestToObjects(t *testing.T) {
- t.Run("NilShouldReturnNil", func(t *testing.T) {
- objects := toObjects(nil)
- assert.Nil(t, objects)
- })
- t.Run("EmptyShouldReturnEmpty", func(t *testing.T) {
- objects := toObjects(make([]string, 0))
- assert.Empty(t, objects)
- })
- t.Run("ShouldReturnSliceOfObjects", func(t *testing.T) {
- objects := toObjects([]string{"foo", "bar"})
- assert.Equal(t, []interface{}{"foo", "bar"}, objects)
- })
- }
|