gitpod/components/gitpod-db/go/dbtest/stripe_customer.go
2023-06-23 20:09:13 +08:00

60 lines
1.5 KiB
Go

// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package dbtest
import (
"fmt"
"testing"
"time"
db "github.com/gitpod-io/gitpod/components/gitpod-db/go"
"github.com/google/uuid"
"github.com/stretchr/testify/require"
"gorm.io/gorm"
)
func NewStripeCustomer(t *testing.T, customer db.StripeCustomer) db.StripeCustomer {
t.Helper()
result := db.StripeCustomer{
StripeCustomerID: fmt.Sprintf("cus_%s", uuid.New().String()),
AttributionID: db.NewTeamAttributionID(uuid.New().String()),
CreationTime: db.NewVarCharTime(time.Now()),
}
if customer.StripeCustomerID != "" {
result.StripeCustomerID = customer.StripeCustomerID
}
if customer.AttributionID != "" {
result.AttributionID = customer.AttributionID
}
if customer.CreationTime.IsSet() {
result.CreationTime = customer.CreationTime
}
return result
}
func CreateStripeCustomers(t *testing.T, conn *gorm.DB, customers ...db.StripeCustomer) []db.StripeCustomer {
t.Helper()
var records []db.StripeCustomer
var ids []string
for _, c := range customers {
record := NewStripeCustomer(t, c)
records = append(records, record)
ids = append(ids, record.StripeCustomerID)
}
require.NoError(t, conn.CreateInBatches(&records, 1000).Error)
t.Cleanup(func() {
require.NoError(t, conn.Where(ids).Delete(&db.StripeCustomer{}).Error)
})
return records
}