diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2026-09-15 13:26:02 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2026-09-15 13:35:09 +0200 |
| commit | 8d85366bee9c59486b445a9cc21a6271e7244e0a (patch) | |
| tree | 20d804823e93f048ef150882cf7412d664efa927 /select_test.go | |
| parent | 92551b9a7b2825b76cb62ad7874ebef8e0c1e9c9 (diff) | |
| download | go-oblast-8d85366bee9c59486b445a9cc21a6271e7244e0a.tar.gz | |
add func Select/SelectOne/SelectOneOrNone
Diffstat (limited to 'select_test.go')
| -rw-r--r-- | select_test.go | 81 |
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) { |
