test: fill remaining V1 test coverage
Add JSONB, pointer/filter, MustFetchOne, and dialect logger registration tests for dbxm and dbxp. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,15 @@
|
|||||||
|
package dbxm_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"gitea.auvem.com/go-toolkit/dbx"
|
||||||
|
"gitea.auvem.com/go-toolkit/dbx/internal/dbxshared"
|
||||||
|
_ "gitea.auvem.com/go-toolkit/dbx/dbxm"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMySQLDebugLoggerRegistered(t *testing.T) {
|
||||||
|
err := dbxshared.InitLogger(dbx.DialectMySQL)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package dbxp_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"gitea.auvem.com/go-toolkit/dbx"
|
||||||
|
"gitea.auvem.com/go-toolkit/dbx/internal/dbxshared"
|
||||||
|
_ "gitea.auvem.com/go-toolkit/dbx/dbxp"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPostgresDebugLoggerRegistered(t *testing.T) {
|
||||||
|
err := dbxshared.InitLogger(dbx.DialectPostgres)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package dbx
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestJSONB_ScanValue(t *testing.T) {
|
||||||
|
original := JSONB{"key": "value", "num": float64(1)}
|
||||||
|
|
||||||
|
val, err := original.Value()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
var scanned JSONB
|
||||||
|
require.NoError(t, scanned.Scan(val))
|
||||||
|
assert.Equal(t, original["key"], scanned["key"])
|
||||||
|
|
||||||
|
require.NoError(t, scanned.Scan([]byte(`{"a":1}`)))
|
||||||
|
assert.Equal(t, float64(1), scanned["a"])
|
||||||
|
|
||||||
|
require.NoError(t, scanned.Scan(`{"b":2}`))
|
||||||
|
assert.Equal(t, float64(2), scanned["b"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJSONB_ScanNil(t *testing.T) {
|
||||||
|
j := JSONB{"x": 1}
|
||||||
|
require.NoError(t, j.Scan(nil))
|
||||||
|
assert.Nil(t, j)
|
||||||
|
|
||||||
|
val, err := JSONB(nil).Value()
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Nil(t, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJSONB_ScanUnsupportedType(t *testing.T) {
|
||||||
|
var j JSONB
|
||||||
|
err := j.Scan(123)
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNewJSONB(t *testing.T) {
|
||||||
|
data := map[string]any{"k": "v"}
|
||||||
|
j := NewJSONB(data)
|
||||||
|
assert.Equal(t, JSONB(data), j)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJSONB_String(t *testing.T) {
|
||||||
|
j := JSONB{"a": "b"}
|
||||||
|
assert.JSONEq(t, `{"a":"b"}`, j.String())
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
package dbx
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPtr_Val(t *testing.T) {
|
||||||
|
assert.Nil(t, Ptr(""))
|
||||||
|
assert.Equal(t, Ptr("hi"), Ptr("hi"))
|
||||||
|
assert.Equal(t, "", Val((*string)(nil)))
|
||||||
|
assert.Equal(t, "hi", Val(Ptr("hi")))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestStringToFilter(t *testing.T) {
|
||||||
|
assert.Equal(t, "%hello%world%", StringToFilter("hello world"))
|
||||||
|
assert.Equal(t, "%test%", StringToFilter("%test%"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTrimPtr(t *testing.T) {
|
||||||
|
s := " hello "
|
||||||
|
assert.Equal(t, "hello", *TrimPtr(&s))
|
||||||
|
assert.Nil(t, TrimPtr(nil))
|
||||||
|
assert.Nil(t, TrimPtrToNil(Ptr(" ")))
|
||||||
|
}
|
||||||
@@ -78,3 +78,16 @@ func TestFetchOne_NilWhenEmpty(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Nil(t, result)
|
assert.Nil(t, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMustFetchOne_NotFound(t *testing.T) {
|
||||||
|
errNotFound := errors.New("not found")
|
||||||
|
stmt := mockStatement{
|
||||||
|
queryContextFn: func(_ context.Context, _ any) error {
|
||||||
|
return ErrNoRows
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := MustFetchOne[row](mockQueryable{}, stmt, errNotFound)
|
||||||
|
assert.Nil(t, result)
|
||||||
|
assert.ErrorIs(t, err, errNotFound)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user