github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/sugar/query_test.go (about) 1 package sugar_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 "github.com/ydb-platform/ydb-go-genproto/protos/Ydb" 8 9 internalQuery "github.com/ydb-platform/ydb-go-sdk/v3/internal/query" 10 "github.com/ydb-platform/ydb-go-sdk/v3/query" 11 "github.com/ydb-platform/ydb-go-sdk/v3/sugar" 12 ) 13 14 func TestUnmarshallRow(t *testing.T) { 15 v, err := sugar.UnmarshallRow[rowTestStruct](func() query.Row { 16 return newRow(123, "my string") 17 }()) 18 require.NoError(t, err) 19 require.EqualValues(t, 123, v.ID) 20 require.EqualValues(t, "my string", v.Str) 21 } 22 23 func TestUnmarshallResultSet(t *testing.T) { 24 v, err := sugar.UnmarshallResultSet[rowTestStruct](internalQuery.MaterializedResultSet(-1, nil, nil, 25 []query.Row{ 26 func() query.Row { 27 return newRow(123, "my string 1") 28 }(), 29 func() query.Row { 30 return newRow(456, "my string 2") 31 }(), 32 }, 33 )) 34 require.NoError(t, err) 35 require.Len(t, v, 2) 36 require.EqualValues(t, 123, v[0].ID) 37 require.EqualValues(t, "my string 1", v[0].Str) 38 require.EqualValues(t, 456, v[1].ID) 39 require.EqualValues(t, "my string 2", v[1].Str) 40 } 41 42 type rowTestStruct struct { 43 ID uint64 `sql:"id"` 44 Str string `sql:"myStr"` 45 } 46 47 // newRow return row for unmarshal to rowTestStruct 48 func newRow(id uint64, str string) *internalQuery.Row { 49 return internalQuery.NewRow([]*Ydb.Column{ 50 { 51 Name: "id", 52 Type: &Ydb.Type{ 53 Type: &Ydb.Type_TypeId{ 54 TypeId: Ydb.Type_UINT64, 55 }, 56 }, 57 }, 58 { 59 Name: "myStr", 60 Type: &Ydb.Type{ 61 Type: &Ydb.Type_TypeId{ 62 TypeId: Ydb.Type_UTF8, 63 }, 64 }, 65 }, 66 }, &Ydb.Value{ 67 Items: []*Ydb.Value{{ 68 Value: &Ydb.Value_Uint64Value{ 69 Uint64Value: id, 70 }, 71 }, { 72 Value: &Ydb.Value_TextValue{ 73 TextValue: str, 74 }, 75 }}, 76 }) 77 }