package helpers import ( "fmt" "testing" "github.com/stretchr/testify/assert" ) func Test_StructToMap(t *testing.T) { t.Run("Convert simple struct to map", func(t *testing.T) { type User struct { Name string `json:"name"` Age int `json:"age"` Height float32 `json:"height"` } user := &User{ Name: "Pero", Age: 66, Height: 187.6, } result, _ := StructToMap(user) expected := make(map[string]interface{}) expected["name"] = "Pero" expected["age"] = 66 expected["height"] = 187.6 assert.Equal(t, fmt.Sprintf("%v", result), fmt.Sprintf("%v", expected)) }) t.Run("Convert nested struct to map", func(t *testing.T) { type Address struct { City string `json:"city"` PostalCode int `json:"postalCode"` } type User struct { Name string `json:"name"` Age int `json:"age"` Height float32 `json:"height"` Address Address `json:"address"` } user := &User{ Name: "Pero", Age: 66, Height: 187.6, Address: Address{ City: "Zagreb", PostalCode: 10020, }, } result, _ := StructToMap(user) address := make(map[string]interface{}) address["city"] = "Zagreb" address["postalCode"] = 10020 expected := make(map[string]interface{}) expected["name"] = "Pero" expected["age"] = 66 expected["height"] = 187.6 expected["address"] = make(map[string]interface{}) expected["address"] = address assert.Equal(t, fmt.Sprintf("%v", result), fmt.Sprintf("%v", expected)) }) }