Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/gitpod-db/go/stripe_customer_test.go
2497 views
1
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package db_test
6
7
import (
8
"context"
9
"testing"
10
"time"
11
12
db "github.com/gitpod-io/gitpod/components/gitpod-db/go"
13
14
"github.com/gitpod-io/gitpod/components/gitpod-db/go/dbtest"
15
"github.com/google/uuid"
16
"github.com/stretchr/testify/require"
17
)
18
19
func TestCreateStripeCustomer(t *testing.T) {
20
conn := dbtest.ConnectForTests(t)
21
22
customer := db.StripeCustomer{
23
StripeCustomerID: "cus_1234",
24
AttributionID: db.NewTeamAttributionID(uuid.New().String()),
25
CreationTime: db.NewVarCharTime(time.Now()),
26
}
27
t.Cleanup(func() {
28
require.NoError(t, conn.Delete(&customer).Error)
29
})
30
31
require.NoError(t, db.CreateStripeCustomer(context.Background(), conn, customer))
32
33
// second create should fail due to PK contstraint
34
require.Error(t, db.CreateStripeCustomer(context.Background(), conn, customer))
35
}
36
37
func TestGetStripeCustomer(t *testing.T) {
38
conn := dbtest.ConnectForTests(t)
39
40
customers := dbtest.CreateStripeCustomers(t, conn, dbtest.NewStripeCustomer(t, db.StripeCustomer{}))
41
customer := customers[0]
42
43
retrieved, err := db.GetStripeCustomer(context.Background(), conn, customer.StripeCustomerID)
44
require.NoError(t, err)
45
require.Equal(t, customer.StripeCustomerID, retrieved.StripeCustomerID)
46
require.Equal(t, customer.AttributionID, retrieved.AttributionID)
47
}
48
49
func TestGetStripeCustomer_NotFound_WhenNotExists(t *testing.T) {
50
conn := dbtest.ConnectForTests(t)
51
52
_, err := db.GetStripeCustomer(context.Background(), conn, "cus_12314141")
53
require.Error(t, err)
54
require.ErrorIs(t, err, db.ErrorNotFound)
55
}
56
57
func TestGetStripeCustomerByAttributionID_ReturnsLatestRecord(t *testing.T) {
58
conn := dbtest.ConnectForTests(t)
59
now := time.Now()
60
61
attributionID := db.NewTeamAttributionID(uuid.New().String())
62
first := dbtest.NewStripeCustomer(t, db.StripeCustomer{
63
AttributionID: attributionID,
64
CreationTime: db.NewVarCharTime(now.Add(-1 * time.Hour)),
65
})
66
second := dbtest.NewStripeCustomer(t, db.StripeCustomer{
67
AttributionID: attributionID,
68
CreationTime: db.NewVarCharTime(now),
69
})
70
dbtest.CreateStripeCustomers(t, conn, first, second)
71
72
retrieved, err := db.GetStripeCustomerByAttributionID(context.Background(), conn, attributionID)
73
require.NoError(t, err)
74
require.Equal(t, second.StripeCustomerID, retrieved.StripeCustomerID)
75
require.Equal(t, second.AttributionID, retrieved.AttributionID)
76
}
77
78
func TestGetStripeCustomerByAttributionID_NotFound_WhenNotExists(t *testing.T) {
79
conn := dbtest.ConnectForTests(t)
80
81
attributionID := db.NewTeamAttributionID(uuid.New().String())
82
83
_, err := db.GetStripeCustomerByAttributionID(context.Background(), conn, attributionID)
84
require.Error(t, err)
85
require.ErrorIs(t, err, db.ErrorNotFound)
86
}
87
88