Path: blob/main/components/usage/pkg/stripe/stripe_test.go
2499 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 stripe56import (7"fmt"8"testing"910db "github.com/gitpod-io/gitpod/components/gitpod-db/go"11"github.com/stretchr/testify/require"12)1314func TestQueriesForCustomersWithAttributionID_Single(t *testing.T) {15testCases := []struct {16Name string17AttributionIDs map[db.AttributionID]int6418ExpectedQueries []string19}{20{21Name: "1 team id",22AttributionIDs: map[db.AttributionID]int64{23db.NewTeamAttributionID("abcd-123"): 1,24},25ExpectedQueries: []string{"metadata['attributionId']:'team:abcd-123'"},26},27{28Name: "1 team id, 1 user id",29AttributionIDs: map[db.AttributionID]int64{30db.NewTeamAttributionID("abcd-123"): 1,31db.NewTeamAttributionID("abcd-456"): 1,32},33ExpectedQueries: []string{"metadata['attributionId']:'team:abcd-123' OR metadata['attributionId']:'team:abcd-456'"},34},35}3637for _, tc := range testCases {38t.Run(tc.Name, func(t *testing.T) {39actualQueries := queriesForCustomersWithAttributionIDs(tc.AttributionIDs)4041require.Equal(t, tc.ExpectedQueries, actualQueries)42})43}44}4546func TestCustomerQueriesForTeamIds_MultipleQueries(t *testing.T) {47testCases := []struct {48Name string49NumberOfTeamIds int50ExpectedNumberOfQueries int51}{52{53Name: "1 team id",54NumberOfTeamIds: 1,55ExpectedNumberOfQueries: 1,56},57{58Name: "10 team ids",59NumberOfTeamIds: 10,60ExpectedNumberOfQueries: 1,61},62{63Name: "11 team ids",64NumberOfTeamIds: 11,65ExpectedNumberOfQueries: 2,66},67{68Name: "1000 team ids",69NumberOfTeamIds: 1000,70ExpectedNumberOfQueries: 100,71},72}7374buildTeamIds := func(numberOfTeamIds int) map[db.AttributionID]int64 {75attributionIDs := map[db.AttributionID]int64{}76for i := 0; i < numberOfTeamIds; i++ {77attributionIDs[db.NewTeamAttributionID(fmt.Sprintf("abcd-%d", i))] = 178}79return attributionIDs80}8182for _, tc := range testCases {83t.Run(tc.Name, func(t *testing.T) {84teamIds := buildTeamIds(tc.NumberOfTeamIds)85actualQueries := queriesForCustomersWithAttributionIDs(teamIds)8687require.Equal(t, tc.ExpectedNumberOfQueries, len(actualQueries))88})89}90}919293