Skip to content

Commit d24b409

Browse files
authored
Merge pull request #65 from ahmadmuzakki29/master
Build query before regex
2 parents 947ce30 + 9758862 commit d24b409

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

expectations_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,27 @@ func ExampleExpectedExec() {
103103
fmt.Println(err)
104104
// Output: some error
105105
}
106+
107+
func TestBuildQuery(t *testing.T){
108+
db, mock, _ := New()
109+
query := `
110+
SELECT
111+
name,
112+
email,
113+
address,
114+
anotherfield
115+
FROM user
116+
`
117+
118+
mock.ExpectQuery(query)
119+
mock.ExpectExec(query)
120+
mock.ExpectPrepare(query)
121+
122+
db.QueryRow(query)
123+
db.Exec(query)
124+
db.Prepare(query)
125+
126+
if err:=mock.ExpectationsWereMet(); err!=nil{
127+
t.Error(err)
128+
}
129+
}

sqlmock.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ func (c *sqlmock) Exec(query string, args []driver.Value) (res driver.Result, er
255255

256256
func (c *sqlmock) ExpectExec(sqlRegexStr string) *ExpectedExec {
257257
e := &ExpectedExec{}
258+
sqlRegexStr = buildQuery(sqlRegexStr)
258259
e.sqlRegex = regexp.MustCompile(sqlRegexStr)
259260
c.expected = append(c.expected, e)
260261
return e
@@ -301,6 +302,7 @@ func (c *sqlmock) Prepare(query string) (driver.Stmt, error) {
301302
}
302303

303304
func (c *sqlmock) ExpectPrepare(sqlRegexStr string) *ExpectedPrepare {
305+
sqlRegexStr = buildQuery(sqlRegexStr)
304306
e := &ExpectedPrepare{sqlRegex: regexp.MustCompile(sqlRegexStr), mock: c}
305307
c.expected = append(c.expected, e)
306308
return e
@@ -369,6 +371,7 @@ func (c *sqlmock) Query(query string, args []driver.Value) (rw driver.Rows, err
369371

370372
func (c *sqlmock) ExpectQuery(sqlRegexStr string) *ExpectedQuery {
371373
e := &ExpectedQuery{}
374+
sqlRegexStr = buildQuery(sqlRegexStr)
372375
e.sqlRegex = regexp.MustCompile(sqlRegexStr)
373376
c.expected = append(c.expected, e)
374377
return e

util.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,14 @@ var re = regexp.MustCompile("\\s+")
1111
func stripQuery(q string) (s string) {
1212
return strings.TrimSpace(re.ReplaceAllString(q, " "))
1313
}
14+
15+
// mimicking how sql.DB build their queries
16+
func buildQuery(q string)string{
17+
q = strings.TrimSpace(q)
18+
lines := strings.Split(q,"\n")
19+
var newQuery string
20+
for _,l := range lines{
21+
newQuery = newQuery +" " +strings.TrimSpace(l)
22+
}
23+
return strings.TrimSpace(newQuery)
24+
}

0 commit comments

Comments
 (0)