From 4f2996037857ad604de05fea56076a2baa76b8a2 Mon Sep 17 00:00:00 2001 From: go-jet Date: Thu, 20 Jan 2022 17:07:29 +0100 Subject: [PATCH] Add custom function call test. --- tests/mysql/delete_test.go | 2 +- tests/postgres/select_test.go | 38 +++++++++++++++++++++++++++++++++++ tests/testdata | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/tests/mysql/delete_test.go b/tests/mysql/delete_test.go index 31c2579..709ce1a 100644 --- a/tests/mysql/delete_test.go +++ b/tests/mysql/delete_test.go @@ -116,5 +116,5 @@ USING dvds.rental WHERE (staff.staff_id != ?) AND (rental.rental_id < ?); `) - testutils.AssertExec(t, stmt, tx, 42) + testutils.AssertExec(t, stmt, tx) } diff --git a/tests/postgres/select_test.go b/tests/postgres/select_test.go index 5a18ceb..b3d3e63 100644 --- a/tests/postgres/select_test.go +++ b/tests/postgres/select_test.go @@ -2541,3 +2541,41 @@ FROM dvds.staff; err := stmt.Query(db, &struct{}{}) require.NoError(t, err) } + +func GET_FILM_COUNT(lenFrom, lenTo IntegerExpression) IntegerExpression { + return IntExp(Func("dvds.get_film_count", lenFrom, lenTo)) +} + +func TestCustomFunctionCall(t *testing.T) { + stmt := SELECT( + GET_FILM_COUNT(Int(100), Int(120)).AS("film_count"), + ) + + testutils.AssertDebugStatementSql(t, stmt, ` +SELECT dvds.get_film_count(100, 120) AS "film_count"; +`) + + var dest struct { + FilmCount int + } + + err := stmt.Query(db, &dest) + require.NoError(t, err) + require.Equal(t, dest.FilmCount, 165) + + stmt2 := SELECT( + Raw("dvds.get_film_count(#1, #2)", RawArgs{"#1": 100, "#2": 120}).AS("film_count"), + ) + + err = stmt2.Query(db, &dest) + require.NoError(t, err) + require.Equal(t, dest.FilmCount, 165) + + stmt3 := RawStatement(` + SELECT dvds.get_film_count(#1, #2) AS "film_count";`, RawArgs{"#1": 100, "#2": 120}, + ) + + err = stmt3.Query(db, &dest) + require.NoError(t, err) + require.Equal(t, dest.FilmCount, 165) +} diff --git a/tests/testdata b/tests/testdata index aa46ddd..895bf57 160000 --- a/tests/testdata +++ b/tests/testdata @@ -1 +1 @@ -Subproject commit aa46ddd9aad89455f73b898a46e7410e36d03272 +Subproject commit 895bf5760d055c717df77c3b872af276f34d06f1