MCPcopy Index your code
hub / github.com/netdata/netdata / TestScanTypedRows

Function TestScanTypedRows

src/go/plugin/go.d/pkg/sqlquery/scan_test.go:14–116  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

12)
13
14func TestScanTypedRows(t *testing.T) {
15 t.Run("all supported types", func(t *testing.T) {
16 db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
17 require.NoError(t, err)
18 defer func() { _ = db.Close() }()
19
20 mock.ExpectQuery("SELECT test").
21 WillReturnRows(sqlmock.NewRows([]string{"s", "i", "f"}).
22 AddRow("abc", int64(7), float64(1.5)))
23
24 rows, err := db.Query("SELECT test")
25 require.NoError(t, err)
26 defer func() { _ = rows.Close() }()
27
28 data, err := ScanTypedRows(rows, []ScanColumnSpec{
29 {Type: ScanValueString},
30 {Type: ScanValueInteger},
31 {Type: ScanValueFloat},
32 })
33 require.NoError(t, err)
34 require.Len(t, data, 1)
35 assert.Equal(t, "abc", data[0][0])
36 assert.EqualValues(t, 7, data[0][1])
37 assert.EqualValues(t, 1.5, data[0][2])
38 assert.NoError(t, mock.ExpectationsWereMet())
39 })
40
41 t.Run("null defaults", func(t *testing.T) {
42 db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
43 require.NoError(t, err)
44 defer func() { _ = db.Close() }()
45
46 mock.ExpectQuery("SELECT test").
47 WillReturnRows(sqlmock.NewRows([]string{"s", "i", "f"}).
48 AddRow(nil, nil, nil))
49
50 rows, err := db.Query("SELECT test")
51 require.NoError(t, err)
52 defer func() { _ = rows.Close() }()
53
54 data, err := ScanTypedRows(rows, []ScanColumnSpec{
55 {Type: ScanValueString},
56 {Type: ScanValueInteger},
57 {Type: ScanValueFloat},
58 })
59 require.NoError(t, err)
60 require.Len(t, data, 1)
61 assert.Equal(t, "", data[0][0])
62 assert.EqualValues(t, 0, data[0][1])
63 assert.EqualValues(t, 0.0, data[0][2])
64 assert.NoError(t, mock.ExpectationsWereMet())
65 })
66
67 t.Run("transform on non-null only", func(t *testing.T) {
68 db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
69 require.NoError(t, err)
70 defer func() { _ = db.Close() }()
71

Callers

nothing calls this directly

Calls 9

ScanTypedRowsFunction · 0.85
EqualMethod · 0.80
RunMethod · 0.65
NewMethod · 0.65
CloseMethod · 0.65
LenMethod · 0.65
ContainsMethod · 0.65
QueryMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…