-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete_build_test.go
More file actions
73 lines (60 loc) · 1.58 KB
/
delete_build_test.go
File metadata and controls
73 lines (60 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package squildx
import (
"errors"
"testing"
)
func TestDeleteBuild_NoTable(t *testing.T) {
_, _, err := NewDelete().
Where("id = :id", Params{"id": 1}).
Build()
if !errors.Is(err, ErrDeleteNoTable) {
t.Errorf("expected ErrDeleteNoTable, got: %v", err)
}
}
func TestDeleteBuild_NoWhere(t *testing.T) {
_, _, err := NewDelete().
From("users").
Build()
if !errors.Is(err, ErrDeleteNoWhere) {
t.Errorf("expected ErrDeleteNoWhere, got: %v", err)
}
}
func TestDeleteBuild_StoredError(t *testing.T) {
_, _, err := NewDelete().
From("users").
Where("id = :id", Params{"id": 1, "extra": 2}).
Build()
if !errors.Is(err, ErrExtraParam) {
t.Errorf("expected ErrExtraParam, got: %v", err)
}
}
func TestDeleteBuild_Full(t *testing.T) {
q, params, err := NewDelete().
From("users").
Where("age > :min_age", Params{"min_age": 25}).
Where("active = :active", Params{"active": false}).
Returning("id", "name").
Build()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
expected := "DELETE FROM users WHERE age > :min_age AND active = :active RETURNING id, name"
if q != expected {
t.Errorf("SQL mismatch\n got: %s\nwant: %s", q, expected)
}
assertParam(t, params, "min_age", 25)
assertParam(t, params, "active", false)
}
func TestDeleteBuild_SubqueryBuildFailure(t *testing.T) {
sub := New().Select("1") // missing FROM
_, _, err := NewDelete().
From("users").
WhereExists(sub).
Build()
if err == nil {
t.Fatal("expected error from subquery build failure, got nil")
}
if !errors.Is(err, ErrNoFrom) {
t.Errorf("expected ErrNoFrom, got: %v", err)
}
}