Skip to content

Commit cb61d53

Browse files
committed
test delete with limit
1 parent dd0c05c commit cb61d53

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

sqlite3_nolibsqlite3_test.go

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// Copyright (C) 2020 Yasuhiro Matsumoto <[email protected]>.
2+
//
3+
// Use of this source code is governed by an MIT-style
4+
// license that can be found in the LICENSE file.
5+
6+
// +build !libsqlite3
7+
8+
package sqlite3
9+
10+
import (
11+
"database/sql"
12+
"fmt"
13+
"os"
14+
"testing"
15+
)
16+
17+
func TestDeleteWithLimit(t *testing.T) {
18+
t.Skip("re-enable once bindings are updated to allow delete with limit")
19+
20+
tempFilename := TempFilename(t)
21+
defer os.Remove(tempFilename)
22+
db, err := sql.Open("sqlite3", tempFilename)
23+
if err != nil {
24+
t.Fatal("Failed to open database:", err)
25+
}
26+
defer db.Close()
27+
28+
_, err = db.Exec("drop table foo")
29+
_, err = db.Exec("create table foo (id integer)")
30+
if err != nil {
31+
t.Fatal("Failed to create table:", err)
32+
}
33+
34+
var expected int64
35+
for _, val := range []int{123, 456, 789} {
36+
res, err := db.Exec(fmt.Sprintf("insert into foo(id) values(%d)", val))
37+
if err != nil {
38+
t.Fatal("Failed to insert record:", err)
39+
}
40+
expected, err = res.LastInsertId()
41+
if err != nil {
42+
t.Fatal("Failed to get LastInsertId:", err)
43+
}
44+
affected, err := res.RowsAffected()
45+
if err != nil {
46+
t.Fatal("Failed to get RowsAffected:", err)
47+
}
48+
if affected != 1 {
49+
t.Errorf("Expected %d for cout of affected rows, but %q:", 1, affected)
50+
}
51+
}
52+
53+
res, err := db.Exec("delete from foo where id = 123")
54+
if err != nil {
55+
t.Fatal("Failed to delete record:", err)
56+
}
57+
lastID, err := res.LastInsertId()
58+
if err != nil {
59+
t.Fatal("Failed to get LastInsertId:", err)
60+
}
61+
if expected != lastID {
62+
t.Errorf("Expected %q for last Id, but %q:", expected, lastID)
63+
}
64+
affected, err := res.RowsAffected()
65+
if err != nil {
66+
t.Fatal("Failed to get RowsAffected:", err)
67+
}
68+
if affected != 1 {
69+
t.Errorf("Expected %d for cout of affected rows, but %q:", 1, affected)
70+
}
71+
72+
res, err = db.Exec("delete from foo order by id asc limit 1")
73+
if err != nil {
74+
t.Fatal("Failed to delete record:", err)
75+
}
76+
lastID, err = res.LastInsertId()
77+
if err != nil {
78+
t.Fatal("Failed to get LastInsertId:", err)
79+
}
80+
if expected != lastID {
81+
t.Errorf("Expected %q for last Id, but %q:", expected, lastID)
82+
}
83+
affected, err = res.RowsAffected()
84+
if err != nil {
85+
t.Fatal("Failed to get RowsAffected:", err)
86+
}
87+
if affected != 1 {
88+
t.Errorf("Expected %d for cout of affected rows, but %q:", 1, affected)
89+
}
90+
91+
rows, err := db.Query("select id from foo")
92+
if err != nil {
93+
t.Fatal("Failed to select records:", err)
94+
}
95+
defer rows.Close()
96+
97+
if !rows.Next() {
98+
t.Fatal("Expected remaining row")
99+
}
100+
var val int
101+
if err := rows.Scan(&val); err != nil {
102+
t.Fatal("Unable to scan results:", err)
103+
}
104+
if val != 789 {
105+
t.Errorf("Expected value of last row to be %d, but got %d", 789, val)
106+
}
107+
108+
if rows.Next() {
109+
t.Error("Fetched row but expected not rows")
110+
}
111+
}

0 commit comments

Comments
 (0)