Repository navigation
Expand file tree
/
Copy pathlogger_test.go
More file actions
80 lines (64 loc) · 1.69 KB
/
Copy pathlogger_test.go
File metadata and controls
80 lines (64 loc) · 1.69 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
74
75
76
77
78
79
80
package makroud_test
import (
"context"
"fmt"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/ulule/loukoum/v3/format"
"github.com/ulule/makroud"
)
type logger struct {
logs chan string
}
func (e *logger) Log(ctx context.Context, query string, duration time.Duration) {
e.logs <- query
}
var ErrLogTimeout = fmt.Errorf("logger timeout")
func (e *logger) read() (string, error) {
select {
case log := <-e.logs:
return log, nil
case <-time.After(500 * time.Millisecond):
return "", ErrLogTimeout
}
}
func TestLogger(t *testing.T) {
logger := &logger{
logs: make(chan string, 10),
}
Setup(t, makroud.WithLogger(logger))(func(driver makroud.Driver) {
ctx := context.Background()
is := require.New(t)
owl := &Owl{
Name: "Guacamowle",
FeatherColor: "lavender",
FavoriteFood: "Shrimps",
}
err := makroud.Save(ctx, driver, owl)
is.NoError(err)
expected := fmt.Sprint(
`INSERT INTO ztp_owl (favorite_food, feather_color, group_id, name) VALUES `,
`('Shrimps', 'lavender', NULL, 'Guacamowle') RETURNING id`,
)
log, err := logger.read()
is.NoError(err)
is.Equal(expected, log)
owl.Name = "Nibbles"
err = makroud.Save(ctx, driver, owl)
is.NoError(err)
expected = fmt.Sprint(
`UPDATE ztp_owl SET favorite_food = 'Shrimps', feather_color = 'lavender', group_id = NULL, `,
`name = 'Nibbles' WHERE (id = `, format.Int(owl.ID), `)`,
)
log, err = logger.read()
is.NoError(err)
is.Equal(expected, log)
err = makroud.Delete(ctx, driver, owl)
is.NoError(err)
expected = fmt.Sprint(`DELETE FROM ztp_owl WHERE (id = `, format.Int(owl.ID), `)`)
log, err = logger.read()
is.NoError(err)
is.Equal(expected, log)
})
}