-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtransfer_test.go
79 lines (63 loc) · 2.13 KB
/
transfer_test.go
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
package db
import (
"context"
"testing"
"time"
"github.com/hhow09/simple_bank/util"
"github.com/stretchr/testify/require"
)
func createRandomTransfer(t *testing.T, account1, account2 Account) Transfer {
arg := CreateTransferParams{
FromAccountID: account1.ID,
ToAccountID: account2.ID,
Amount: util.RandomMoney(),
}
transfer, err := testQueries.CreateTransfer(context.Background(), arg)
require.NoError(t, err)
require.NotEmpty(t, transfer)
require.Equal(t, arg.FromAccountID, transfer.FromAccountID)
require.Equal(t, arg.ToAccountID, transfer.ToAccountID)
require.Equal(t, arg.Amount, transfer.Amount)
require.NotZero(t, transfer.ID)
require.NotZero(t, transfer.CreatedAt)
return transfer
}
func TestCreateTransfer(t *testing.T) {
account1 := createRandomAccount(t)
account2 := createRandomAccount(t)
createRandomTransfer(t, account1, account2)
}
func TestGetTransfer(t *testing.T) {
account1 := createRandomAccount(t)
account2 := createRandomAccount(t)
transfer1 := createRandomTransfer(t, account1, account2)
transfer2, err := testQueries.GetTransfer(context.Background(), transfer1.ID)
require.NoError(t, err)
require.NotEmpty(t, transfer2)
require.Equal(t, transfer1.ID, transfer2.ID)
require.Equal(t, transfer1.FromAccountID, transfer2.FromAccountID)
require.Equal(t, transfer1.ToAccountID, transfer2.ToAccountID)
require.Equal(t, transfer1.Amount, transfer2.Amount)
require.WithinDuration(t, transfer1.CreatedAt, transfer2.CreatedAt, time.Second)
}
func TestListTransfer(t *testing.T) {
account1 := createRandomAccount(t)
account2 := createRandomAccount(t)
for i := 0; i < 5; i++ {
createRandomTransfer(t, account1, account2)
createRandomTransfer(t, account2, account1)
}
arg := ListTransfersParams{
FromAccountID: account1.ID,
ToAccountID: account1.ID,
Limit: 5,
Offset: 5,
}
transfers, err := testQueries.ListTransfers(context.Background(), arg)
require.NoError(t, err)
require.Len(t, transfers, 5)
for _, transfer := range transfers {
require.NotEmpty(t, transfer)
require.True(t, transfer.FromAccountID == account1.ID || transfer.ToAccountID == account1.ID)
}
}