Skip to content

Commit f70e93a

Browse files
dialect/sql: improved tests
1 parent 16f5219 commit f70e93a

File tree

1 file changed

+62
-6
lines changed

1 file changed

+62
-6
lines changed

dialect/sql/builder_test.go

Lines changed: 62 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ func TestBuilder(t *testing.T) {
7272
wantQuery: "INSERT INTO `users` (`age`) VALUES (?)",
7373
wantArgs: []any{1},
7474
},
75+
{
76+
input: Dialect(dialect.YDB).Insert("users").Columns("age").Values(1),
77+
wantQuery: "INSERT INTO `users` (`age`) VALUES ($p0)",
78+
wantArgs: []any{driver.NamedValue{Name: "p0", Value: 1}},
79+
},
7580
{
7681
input: Dialect(dialect.Postgres).Insert("users").Columns("age").Values(1).Returning("id"),
7782
wantQuery: `INSERT INTO "users" ("age") VALUES ($1) RETURNING "id"`,
@@ -146,6 +151,11 @@ func TestBuilder(t *testing.T) {
146151
wantQuery: "UPDATE `users` SET `name` = ?",
147152
wantArgs: []any{"foo"},
148153
},
154+
{
155+
input: Dialect(dialect.YDB).Update("users").Set("name", "foo"),
156+
wantQuery: "UPDATE `users` SET `name` = $p0",
157+
wantArgs: []any{driver.NamedValue{Name: "p0", Value: "foo"}},
158+
},
149159
{
150160
input: Update("users").Set("name", "foo").Set("age", 10),
151161
wantQuery: "UPDATE `users` SET `name` = ?, `age` = ?",
@@ -483,6 +493,14 @@ func TestBuilder(t *testing.T) {
483493
wantQuery: `SELECT * FROM "users" WHERE "name" = $1`,
484494
wantArgs: []any{"Ariel"},
485495
},
496+
{
497+
input: Dialect(dialect.YDB).
498+
Select().
499+
From(Table("users")).
500+
Where(EQ("name", "Alex")),
501+
wantQuery: "SELECT * FROM `users` WHERE `name` = $p0",
502+
wantArgs: []any{driver.NamedValue{Name: "p0", Value: "Alex"}},
503+
},
486504
{
487505
input: Select().
488506
From(Table("users")).
@@ -533,6 +551,12 @@ func TestBuilder(t *testing.T) {
533551
Schema("mydb"),
534552
wantQuery: "DELETE FROM `users` WHERE `parent_id` IS NOT NULL",
535553
},
554+
{
555+
input: Dialect(dialect.YDB).
556+
Delete("users").
557+
Where(NotNull("parent_id")),
558+
wantQuery: "DELETE FROM `users` WHERE `parent_id` IS NOT NULL",
559+
},
536560
{
537561
input: Dialect(dialect.Postgres).
538562
Delete("users").
@@ -712,6 +736,18 @@ func TestBuilder(t *testing.T) {
712736
}(),
713737
wantQuery: `SELECT "u"."id", "g"."name" FROM "users" AS "u" JOIN "groups" AS "g" ON "u"."id" = "g"."user_id"`,
714738
},
739+
{
740+
input: func() Querier {
741+
d := Dialect(dialect.YDB)
742+
t1 := d.Table("users").As("u")
743+
t2 := d.Table("groups").As("g")
744+
return d.Select(t1.C("id"), t2.C("name")).
745+
From(t1).
746+
Join(t2).
747+
On(t1.C("id"), t2.C("user_id"))
748+
}(),
749+
wantQuery: "SELECT `u`.`id`, `g`.`name` FROM `users` AS `u` JOIN `groups` AS `g` ON `u`.`id` = `g`.`user_id`",
750+
},
715751
{
716752
input: func() Querier {
717753
t1 := Table("users").As("u")
@@ -1092,6 +1128,11 @@ func TestBuilder(t *testing.T) {
10921128
Select().Count().From(Table("users")),
10931129
wantQuery: `SELECT COUNT(*) FROM "users"`,
10941130
},
1131+
{
1132+
input: Dialect(dialect.YDB).
1133+
Select().Count().From(Table("users")),
1134+
wantQuery: "SELECT COUNT(*) FROM `users`",
1135+
},
10951136
{
10961137
input: Select().Count(Distinct("id")).From(Table("users")),
10971138
wantQuery: "SELECT COUNT(DISTINCT `id`) FROM `users`",
@@ -1159,6 +1200,13 @@ func TestBuilder(t *testing.T) {
11591200
GroupBy("name"),
11601201
wantQuery: `SELECT "name", COUNT(*) FROM "users" GROUP BY "name"`,
11611202
},
1203+
{
1204+
input: Dialect(dialect.YDB).
1205+
Select("name", Count("*")).
1206+
From(Table("users")).
1207+
GroupBy("name"),
1208+
wantQuery: "SELECT `name`, COUNT(*) FROM `users` GROUP BY `name`",
1209+
},
11621210
{
11631211
input: Select("name", Count("*")).
11641212
From(Table("users")).
@@ -1202,6 +1250,14 @@ func TestBuilder(t *testing.T) {
12021250
Limit(1),
12031251
wantQuery: `SELECT * FROM "users" LIMIT 1`,
12041252
},
1253+
{
1254+
input: Dialect(dialect.YDB).
1255+
Select("*").
1256+
From(Table("users")).
1257+
OrderBy("id").
1258+
Limit(10),
1259+
wantQuery: "SELECT * FROM `users` ORDER BY `id` LIMIT 10",
1260+
},
12051261
{
12061262
input: Select("age").Distinct().From(Table("users")),
12071263
wantQuery: "SELECT DISTINCT `age` FROM `users`",
@@ -2175,7 +2231,7 @@ func TestSelector_AssumeOrderBy_YDB(t *testing.T) {
21752231
From(Table("users")).
21762232
OrderBy("id").
21772233
AssumeOrderBy("id")
2178-
2234+
21792235
err := selector.Err()
21802236
require.Error(t, err)
21812237
})
@@ -2196,7 +2252,7 @@ func TestSelector_AssumeOrderBy_YDB(t *testing.T) {
21962252
Select("*").
21972253
From(Table("users")).
21982254
AssumeOrderBy("name")
2199-
2255+
22002256
err := selector.Err()
22012257
require.Error(t, err)
22022258
})
@@ -2209,7 +2265,7 @@ func TestSelector_VIEW_SecondaryIndex_YDB(t *testing.T) {
22092265
From(d.Table("series").View("views_index")).
22102266
Where(GTE("views", 1000)).
22112267
Query()
2212-
2268+
22132269
require.Equal(t, "SELECT `series_id`, `title`, `info`, `release_date`, `views`, `uploaded_user_id` FROM `series` VIEW `views_index` WHERE `views` >= $p0", query)
22142270
require.Equal(t, []any{driver.NamedValue{Name: "p0", Value: 1000}}, args)
22152271
})
@@ -2218,22 +2274,22 @@ func TestSelector_VIEW_SecondaryIndex_YDB(t *testing.T) {
22182274
d := Dialect(dialect.YDB)
22192275
series := d.Table("series").View("users_index").As("t1")
22202276
users := d.Table("users").View("name_index").As("t2")
2221-
2277+
22222278
query, args := d.Select(series.C("series_id"), series.C("title")).
22232279
From(series).
22242280
Join(users).
22252281
On(series.C("uploaded_user_id"), users.C("user_id")).
22262282
Where(EQ(users.C("name"), "John Doe")).
22272283
Query()
2228-
2284+
22292285
require.Equal(t, "SELECT `t1`.`series_id`, `t1`.`title` FROM `series` VIEW `users_index` AS `t1` JOIN `users` VIEW `name_index` AS `t2` ON `t1`.`uploaded_user_id` = `t2`.`user_id` WHERE `t2`.`name` = $p0", query)
22302286
require.Equal(t, []any{driver.NamedValue{Name: "p0", Value: "John Doe"}}, args)
22312287
})
22322288

22332289
t.Run("VIEW on non-YDB dialect should error", func(t *testing.T) {
22342290
d := Dialect(dialect.Postgres)
22352291
table := d.Table("users").View("idx_name")
2236-
2292+
22372293
err := table.Err()
22382294
require.Error(t, err)
22392295
})

0 commit comments

Comments
 (0)