Files
goext/sq/commentTrimmer_test.go
T
Mikescher 02d6894ec6
Build Docker and Deploy / Run goext test-suite (push) Successful in 1m34s
[🤖] Add Unit-Tests
2026-04-27 16:31:29 +02:00

75 lines
2.3 KiB
Go

package sq
import (
"context"
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
"strings"
"testing"
)
func TestFnTrimCommentsLineOnly(t *testing.T) {
// The line-only comment is replaced with an empty line.
sql := "SELECT *\n-- this is a comment\nFROM users"
pp := PP{}
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
tst.AssertNoErr(t, err)
tst.AssertTrue(t, !strings.Contains(sql, "comment"))
tst.AssertTrue(t, strings.Contains(sql, "SELECT *"))
tst.AssertTrue(t, strings.Contains(sql, "FROM users"))
}
func TestFnTrimCommentsTrailing(t *testing.T) {
sql := "SELECT * -- inline\nFROM users -- end"
pp := PP{}
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
tst.AssertNoErr(t, err)
tst.AssertEqual(t, "SELECT *\nFROM users", sql)
}
func TestFnTrimCommentsIndented(t *testing.T) {
sql := "SELECT *\n -- indented comment\nFROM users"
pp := PP{}
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
tst.AssertNoErr(t, err)
tst.AssertTrue(t, !strings.Contains(sql, "indented comment"))
tst.AssertTrue(t, strings.Contains(sql, "SELECT *"))
tst.AssertTrue(t, strings.Contains(sql, "FROM users"))
}
func TestFnTrimCommentsTrimsTrailingWhitespace(t *testing.T) {
sql := "SELECT * \t\nFROM users "
pp := PP{}
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
tst.AssertNoErr(t, err)
tst.AssertEqual(t, "SELECT *\nFROM users", sql)
}
func TestFnTrimCommentsNoComment(t *testing.T) {
sql := "SELECT id\nFROM users\nWHERE id=1"
pp := PP{}
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
tst.AssertNoErr(t, err)
tst.AssertEqual(t, "SELECT id\nFROM users\nWHERE id=1", sql)
}
func TestFnTrimCommentsEmpty(t *testing.T) {
sql := ""
pp := PP{}
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
tst.AssertNoErr(t, err)
tst.AssertEqual(t, "", sql)
}
func TestCommentTrimmerListener(t *testing.T) {
sql := "SELECT *\n-- a comment\nFROM x"
pp := PP{}
err := CommentTrimmer.PreQuery(context.Background(), nil, &sql, &pp, PreQueryMeta{})
tst.AssertNoErr(t, err)
tst.AssertTrue(t, !strings.Contains(sql, "a comment"))
sql2 := "INSERT INTO x VALUES (1) -- xx"
err = CommentTrimmer.PreExec(context.Background(), nil, &sql2, &pp, PreExecMeta{})
tst.AssertNoErr(t, err)
tst.AssertEqual(t, "INSERT INTO x VALUES (1)", sql2)
}