package config

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestBucketName(t *testing.T) {
	t.Run("explicit bucket overrides derived name", func(t *testing.T) {
		Bucket = "custom-bucket"
		Env = "prod"
		Region = "us-east-1"
		LogicalRegion = "us-east-1-premium"
		t.Cleanup(func() {
			Bucket = ""
			Env = ""
			Region = ""
			LogicalRegion = ""
		})

		assert.Equal(t, "custom-bucket", BucketName())
	})

	t.Run("logical region used when bucket is empty", func(t *testing.T) {
		Bucket = ""
		Env = "prod"
		Region = "us-east-1"
		LogicalRegion = "us-east-1-premium"
		t.Cleanup(func() {
			Env = ""
			Region = ""
			LogicalRegion = ""
		})

		assert.Equal(t, "o11y-prod-shared-us-east-1-premium", BucketName())
	})

	t.Run("region used when logical region is empty", func(t *testing.T) {
		Bucket = ""
		Env = "dev"
		Region = "us-west-2"
		LogicalRegion = ""
		t.Cleanup(func() {
			Env = ""
			Region = ""
		})

		assert.Equal(t, "o11y-dev-shared-us-west-2", BucketName())
	})
}

func TestValidateConprofHalvingDays(t *testing.T) {
	assert.NoError(t, validateConprofHalvingDays(7, 15))
	assert.NoError(t, validateConprofHalvingDays(3, 7))

	assert.Error(t, validateConprofHalvingDays(0, 15))
	assert.Error(t, validateConprofHalvingDays(7, 0))
	assert.Error(t, validateConprofHalvingDays(15, 7))
}

func TestConprofHalvingAgeSeconds(t *testing.T) {
	ConprofFirstHalvingDays = 3
	ConprofSecondHalvingDays = 7
	t.Cleanup(func() {
		ConprofFirstHalvingDays = defaultConprofFirstHalvingDays
		ConprofSecondHalvingDays = defaultConprofSecondHalvingDays
	})

	assert.Equal(t, int64(3*24*3600), ConprofFirstHalvingAgeSeconds())
	assert.Equal(t, int64(7*24*3600), ConprofSecondHalvingAgeSeconds())
}
