// 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 usage

import (
	"testing"

	"github.com/gitpod-io/gitpod/installer/pkg/config/v1/experimental"
	"github.com/stretchr/testify/require"
	corev1 "k8s.io/api/core/v1"
)

func TestConfigMap_ContainsSchedule(t *testing.T) {
	ctx := renderContextWithUsageConfig(t, &experimental.UsageConfig{Enabled: true, Schedule: "2m", ResetUsageSchedule: "5m"})

	objs, err := configmap(ctx)
	require.NoError(t, err)

	cfgmap, ok := objs[0].(*corev1.ConfigMap)
	require.True(t, ok)

	require.JSONEq(t,
		`{
       "controllerSchedule": "2m",
	   "resetUsageSchedule": "5m",
       "stripeCredentialsFile": "stripe-secret/apikeys",
	   "defaultSpendingLimit": {
		"forUsers": 1000000000,
		"forTeams": 1000000000,
		"minForUsersOnStripe": 0
	   },
	   "stripePrices": {
		"individualUsagePriceIds": {
		  "eur": "",
		  "usd": ""
		},
		"teamUsagePriceIds": {
		  "eur": "",
		  "usd": ""
		}
	   },
       "server": {
         "services": {
           "grpc": {
             "address": "0.0.0.0:9001"
           }
         }
       }
     }`,
		cfgmap.Data[configJSONFilename],
	)
}
