-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrows_test.go
More file actions
80 lines (65 loc) · 1.91 KB
/
Copy pathrows_test.go
File metadata and controls
80 lines (65 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package entpgx_test
import (
"errors"
"testing"
"github.com/incroy/entpgx"
"github.com/stretchr/testify/require"
)
func TestRowsAdapter_ColumnTypes(t *testing.T) {
adapter := entpgx.NewRowsAdapter(&dummyRows{}, nil)
ct, err := adapter.ColumnTypes()
require.Nil(t, ct)
require.ErrorContains(t, err, "entpgx: ColumnTypes is not supported")
}
func TestRowsAdapter_NextResultSet(t *testing.T) {
adapter := entpgx.NewRowsAdapter(&dummyRows{}, nil)
require.False(t, adapter.NextResultSet())
}
func TestRowsAdapter_CloseAndCleanup(t *testing.T) {
t.Run("cleanup executed on close", func(t *testing.T) {
cleanupCalled := false
mockRows := &dummyRows{}
adapter := entpgx.NewRowsAdapter(mockRows, func() error {
cleanupCalled = true
return nil
})
err := adapter.Close()
require.NoError(t, err)
require.True(t, mockRows.closed)
require.True(t, cleanupCalled)
})
t.Run("cleanup error returned on close", func(t *testing.T) {
cleanupErr := errors.New("reset variable error")
mockRows := &dummyRows{}
adapter := entpgx.NewRowsAdapter(mockRows, func() error {
return cleanupErr
})
err := adapter.Close()
require.ErrorIs(t, err, cleanupErr)
require.True(t, mockRows.closed)
})
}
func TestRowsAdapter_ErrAndColumns(t *testing.T) {
expectedErr := errors.New("rows iteration error")
mockRows := &dummyRows{
cols: []string{"id", "title"},
err: expectedErr,
}
adapter := entpgx.NewRowsAdapter(mockRows, nil)
require.ErrorIs(t, adapter.Err(), expectedErr)
cols, err := adapter.Columns()
require.NoError(t, err)
require.Equal(t, []string{"id", "title"}, cols)
}
func TestRowsAdapter_NextAndScan(t *testing.T) {
mockRows := &dummyRows{
cols: []string{"val"},
vals: [][]any{{"hello"}},
}
adapter := entpgx.NewRowsAdapter(mockRows, nil)
require.True(t, adapter.Next())
var val string
require.NoError(t, adapter.Scan(&val))
require.Equal(t, "hello", val)
require.False(t, adapter.Next())
}