Path: blob/main/components/gitpod-db/go/dbtest/usage.go
2500 views
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package dbtest56import (7"context"8"testing"910db "github.com/gitpod-io/gitpod/components/gitpod-db/go"11"github.com/google/uuid"12"github.com/stretchr/testify/require"13"gorm.io/gorm"14)1516func NewUsage(t *testing.T, record db.Usage) db.Usage {17t.Helper()1819workspaceInstanceId := uuid.New()2021result := db.Usage{22ID: uuid.New(),23AttributionID: db.NewTeamAttributionID(uuid.New().String()),24Description: "some description",25CreditCents: 42,26EffectiveTime: db.VarcharTime{},27Kind: db.WorkspaceInstanceUsageKind,28WorkspaceInstanceID: &workspaceInstanceId,29}3031if record.ID.ID() != 0 {32result.ID = record.ID33}34if record.EffectiveTime.IsSet() {35result.EffectiveTime = record.EffectiveTime36}37if record.AttributionID != "" {38result.AttributionID = record.AttributionID39}40if record.Description != "" {41result.Description = record.Description42}43if record.CreditCents != 0 {44result.CreditCents = record.CreditCents45}46if record.WorkspaceInstanceID != nil && (*record.WorkspaceInstanceID).ID() != 0 {47result.WorkspaceInstanceID = record.WorkspaceInstanceID48}49if record.Kind != "" {50result.Kind = record.Kind51}52if record.Draft {53result.Draft = true54}55if record.Metadata != nil {56result.Metadata = record.Metadata57}58return result59}6061func CreateUsageRecords(t *testing.T, conn *gorm.DB, entries ...db.Usage) []db.Usage {62t.Helper()6364var records []db.Usage65var ids []string66for _, usageEntry := range entries {67record := NewUsage(t, usageEntry)68records = append(records, record)69ids = append(ids, record.ID.String())70}7172require.NoError(t, db.InsertUsage(context.Background(), conn, entries...))73t.Cleanup(func() {74if len(ids) > 0 {75require.NoError(t, conn.Where(ids).Delete(&db.Usage{}).Error)76}77})7879return records80}818283