Skip to content

Commit f460ce1

Browse files
committed
add tests for pretty
1 parent 5731315 commit f460ce1

File tree

3 files changed

+116
-0
lines changed

3 files changed

+116
-0
lines changed

go.mod

+8
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,29 @@ module github.com/olezhek28/platform_common
33
go 1.20
44

55
require (
6+
github.com/Masterminds/squirrel v1.5.4
7+
github.com/brianvoe/gofakeit/v6 v6.23.1
68
github.com/georgysavva/scany v1.2.1
79
github.com/jackc/pgconn v1.14.1
810
github.com/jackc/pgx/v4 v4.18.1
911
github.com/pkg/errors v0.9.1
12+
github.com/stretchr/testify v1.8.1
1013
)
1114

1215
require (
16+
github.com/davecgh/go-spew v1.1.1 // indirect
1317
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
1418
github.com/jackc/pgio v1.0.0 // indirect
1519
github.com/jackc/pgpassfile v1.0.0 // indirect
1620
github.com/jackc/pgproto3/v2 v2.3.2 // indirect
1721
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
1822
github.com/jackc/pgtype v1.14.0 // indirect
1923
github.com/jackc/puddle v1.3.0 // indirect
24+
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
25+
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
26+
github.com/pmezard/go-difflib v1.0.0 // indirect
2027
golang.org/x/crypto v0.6.0 // indirect
2128
golang.org/x/sys v0.7.0 // indirect
2229
golang.org/x/text v0.9.0 // indirect
30+
gopkg.in/yaml.v3 v3.0.1 // indirect
2331
)

go.sum

+11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
22
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
3+
github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM=
4+
github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10=
5+
github.com/brianvoe/gofakeit/v6 v6.23.1 h1:k2gX0hQpJStvixDbbw8oJOvPBg0XmHJWbSOF5JkiUHw=
6+
github.com/brianvoe/gofakeit/v6 v6.23.1/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8=
37
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
48
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
59
github.com/cockroachdb/cockroach-go/v2 v2.2.0 h1:/5znzg5n373N/3ESjHF5SMLxiW4RKB05Ql//KWfeTFs=
@@ -93,10 +97,16 @@ github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXL
9397
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
9498
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
9599
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
100+
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
96101
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
97102
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
98103
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
104+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
99105
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
106+
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=
107+
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
108+
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
109+
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
100110
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
101111
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
102112
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -235,6 +245,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
235245
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
236246
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
237247
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
248+
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
238249
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
239250
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
240251
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package prettier
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
sq "github.com/Masterminds/squirrel"
8+
"github.com/brianvoe/gofakeit/v6"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
func TestQueryPrettier(t *testing.T) {
13+
var (
14+
id = gofakeit.Int64()
15+
name = gofakeit.FirstName()
16+
safeName = fmt.Sprintf("\"%s\"", name)
17+
age = gofakeit.Int64()
18+
)
19+
20+
t.Run("query with no params", func(t *testing.T) {
21+
builder := sq.Select("id, name, age").
22+
PlaceholderFormat(sq.Dollar).
23+
From("users")
24+
25+
query, v, err := builder.ToSql()
26+
require.NoError(t, err)
27+
28+
pretty := Pretty(query, PlaceholderDollar, v...)
29+
require.Equal(t, "SELECT id, name, age FROM users", pretty)
30+
})
31+
32+
t.Run("query with spaces", func(t *testing.T) {
33+
builder := sq.Select("id, name, age").
34+
PlaceholderFormat(sq.Dollar).
35+
From("users ")
36+
37+
query, v, err := builder.ToSql()
38+
require.NoError(t, err)
39+
40+
pretty := Pretty(query, PlaceholderDollar, v...)
41+
42+
require.Equal(t, "SELECT id, name, age FROM users", pretty)
43+
})
44+
45+
t.Run("SELECT by one param", func(t *testing.T) {
46+
builder := sq.Select("id, name, age").
47+
PlaceholderFormat(sq.Dollar).
48+
From("users").
49+
Where(sq.Eq{"id": id})
50+
51+
query, v, err := builder.ToSql()
52+
require.NoError(t, err)
53+
54+
pretty := Pretty(query, PlaceholderDollar, v...)
55+
require.Equal(t, fmt.Sprintf("SELECT id, name, age FROM users WHERE id = %v", id), pretty)
56+
})
57+
58+
t.Run("select with IN clause", func(t *testing.T) {
59+
builder := sq.Select("id, name, age").
60+
PlaceholderFormat(sq.Dollar).
61+
From("users").
62+
Where(sq.Eq{"id": []int64{id, 123, 321}})
63+
64+
query, v, err := builder.ToSql()
65+
require.NoError(t, err)
66+
67+
pretty := Pretty(query, PlaceholderDollar, v...)
68+
require.Equal(t, fmt.Sprintf("SELECT id, name, age FROM users WHERE id IN (%v,%v,%v)", id, 123, 321), pretty)
69+
})
70+
71+
t.Run("insert", func(t *testing.T) {
72+
builder := sq.Insert("users").
73+
PlaceholderFormat(sq.Dollar).
74+
Columns("name, age").
75+
Values(name, age)
76+
77+
query, v, err := builder.ToSql()
78+
require.NoError(t, err)
79+
80+
pretty := Pretty(query, PlaceholderDollar, v...)
81+
require.Equal(t, fmt.Sprintf("INSERT INTO users (name, age) VALUES (%v,%v)", safeName, age), pretty)
82+
})
83+
84+
t.Run("update", func(t *testing.T) {
85+
builder := sq.Update("users").
86+
PlaceholderFormat(sq.Dollar).
87+
Set("name", name).
88+
Set("age", age).
89+
Where(sq.Eq{"name": name})
90+
91+
query, v, err := builder.ToSql()
92+
require.NoError(t, err)
93+
94+
pretty := Pretty(query, PlaceholderDollar, v...)
95+
require.Equal(t, fmt.Sprintf("UPDATE users SET name = %v, age = %v WHERE name = %v", safeName, age, safeName), pretty)
96+
})
97+
}

0 commit comments

Comments
 (0)