aboutsummaryrefslogtreecommitdiff
path: root/select_test.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-09-15 13:26:02 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-09-15 13:35:09 +0200
commit8d85366bee9c59486b445a9cc21a6271e7244e0a (patch)
tree20d804823e93f048ef150882cf7412d664efa927 /select_test.go
parent92551b9a7b2825b76cb62ad7874ebef8e0c1e9c9 (diff)
downloadgo-oblast-8d85366bee9c59486b445a9cc21a6271e7244e0a.tar.gz
add func Select/SelectOne/SelectOneOrNone
Diffstat (limited to 'select_test.go')
-rw-r--r--select_test.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/select_test.go b/select_test.go
index c2b319e..5520948 100644
--- a/select_test.go
+++ b/select_test.go
@@ -134,6 +134,32 @@ func TestSelectReturningSomeRecords(t *testing.T) {
record := must.Return(query.SelectOneOrNone(ctx, db, 3))(t)
assert.Equal(t, record, Some(basicRecord{1, "ffffffoo"}))
})
+
+ commonSetupForValueSelect := func() {
+ md.ForQuery(`SELECT name FROM basic_records WHERE id < ?`).
+ ExpectQueryWithArgs(3).
+ AndReturnColumns("name").
+ WithRow("foo").
+ WithRow("bar")
+ }
+
+ t.Run("using oblast.Select", func(t *testing.T) {
+ commonSetupForValueSelect()
+ names := must.Return(oblast.Select[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3).Collect())(t)
+ assert.Equal(t, names, []string{"foo", "bar"})
+ })
+
+ t.Run("using oblast.SelectOne", func(t *testing.T) {
+ commonSetupForValueSelect()
+ name := must.Return(oblast.SelectOne[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3))(t)
+ assert.Equal(t, name, "foo")
+ })
+
+ t.Run("using oblast.SelectOneOrNone", func(t *testing.T) {
+ commonSetupForValueSelect()
+ name := must.Return(oblast.SelectOneOrNone[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3))(t)
+ assert.Equal(t, name, Some("foo"))
+ })
}
func TestSelectReturningNoRecords(t *testing.T) {
@@ -225,6 +251,30 @@ func TestSelectReturningNoRecords(t *testing.T) {
record := must.Return(query.SelectOneOrNone(ctx, db, 3))(t)
assert.Equal(t, record, None[basicRecord]())
})
+
+ commonSetupForValueSelect := func() {
+ md.ForQuery(`SELECT name FROM basic_records WHERE id < ?`).
+ ExpectQueryWithArgs(3).
+ AndReturnColumns("name")
+ }
+
+ t.Run("using oblast.Select", func(t *testing.T) {
+ commonSetupForValueSelect()
+ names := must.Return(oblast.Select[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3).Collect())(t)
+ assert.Equal(t, names, nil)
+ })
+
+ t.Run("using oblast.SelectOne", func(t *testing.T) {
+ commonSetupForValueSelect()
+ _, err := oblast.SelectOne[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3)
+ assert.ErrEqual(t, err, sql.ErrNoRows.Error())
+ })
+
+ t.Run("using oblast.SelectOneOrNone", func(t *testing.T) {
+ commonSetupForValueSelect()
+ name := must.Return(oblast.SelectOneOrNone[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3))(t)
+ assert.Equal(t, name, None[string]())
+ })
}
func TestSelectIntoUnexpectedField(t *testing.T) {
@@ -486,6 +536,16 @@ func TestSelectCapturingQueryError(t *testing.T) {
_, err := query.SelectOne(ctx, db, 3)
assert.ErrEqual(t, err, `unexpected query: SELECT "id", "name" FROM "basic_records" WHERE id < ?`)
})
+
+ t.Run("using oblast.Select", func(t *testing.T) {
+ _, err := oblast.Select[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3).Collect()
+ assert.ErrEqual(t, err, "during Query(): unexpected query: SELECT name FROM basic_records WHERE id < ?")
+ })
+
+ t.Run("using oblast.SelectOne", func(t *testing.T) {
+ _, err := oblast.SelectOne[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3)
+ assert.ErrEqual(t, err, "unexpected query: SELECT name FROM basic_records WHERE id < ?")
+ })
}
func TestSelectCapturingCloseError(t *testing.T) {
@@ -549,6 +609,27 @@ func TestSelectCapturingCloseError(t *testing.T) {
_, err := query.SelectOne(ctx, db, 3)
assert.ErrEqual(t, err, "datacenter on fire")
})
+
+ commonSetup = func(query string) {
+ md.ForQuery(query).
+ ExpectQueryWithArgs(3).
+ AndReturnColumns("name").
+ WithRow("foo").
+ WithRow("bar").
+ AndCloseFailsWith(errors.New("datacenter on fire"))
+ }
+
+ t.Run("using oblast.Select", func(t *testing.T) {
+ commonSetup(`SELECT name FROM basic_records WHERE id < ?`)
+ _, err := oblast.Select[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3).Collect()
+ assert.ErrEqual(t, err, "datacenter on fire")
+ })
+
+ t.Run("using oblast.SelectOne", func(t *testing.T) {
+ commonSetup(`SELECT name FROM basic_records WHERE id < ?`)
+ _, err := oblast.SelectOne[string](ctx, db, `SELECT name FROM basic_records WHERE id < ?`, 3)
+ assert.ErrEqual(t, err, "datacenter on fire")
+ })
}
func TestSelectNotPossibleWithoutTableName(t *testing.T) {