cbrfWorker/internal/utils/array_to_map_test.go

70 lines
1.4 KiB
Go
Raw Normal View History

2023-05-22 19:48:44 +00:00
package utils_test
import (
"testing"
2025-01-01 22:10:33 +00:00
"gitea.pena/PenaSide/cbrfWorker/internal/utils"
2023-05-22 19:48:44 +00:00
"github.com/stretchr/testify/assert"
)
func TestArrayToMap(t *testing.T) {
type testModel struct {
ID string
}
t.Run("Успешная конвертация массива в map без коллизий", func(t *testing.T) {
assert.NotPanics(t, func() {
result := utils.ArrayToMap(
[]testModel{{ID: "test"}, {ID: "test2"}},
func(model testModel) string {
return model.ID
},
)
assert.Equal(t,
map[string]testModel{
"test": {ID: "test"},
"test2": {ID: "test2"},
},
result,
)
})
})
t.Run("Успешная конвертация массива в map с коллизиями", func(t *testing.T) {
assert.NotPanics(t, func() {
result := utils.ArrayToMap(
[]testModel{{ID: "test"}, {ID: "test"}},
func(model testModel) string {
return model.ID
},
)
assert.Equal(t,
map[string]testModel{
"test": {ID: "test"},
},
result,
)
})
})
t.Run("Успешная конвертация массива в map с функцией, возаращающая пустую строку", func(t *testing.T) {
assert.NotPanics(t, func() {
result := utils.ArrayToMap(
[]testModel{{ID: "test"}, {ID: "test"}},
func(model testModel) string {
return ""
},
)
assert.Equal(t,
map[string]testModel{
"": {ID: "test"},
},
result,
)
})
})
}