package config

import (
	"testing"

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

func TestMain(m *testing.M) {
	ConfigPath = "../config.json"
	m.Run()
	ConfigPath = "config.json"
	Config.ImgPath = "./pics"
}

func TestLoadConfig(t *testing.T) {
	LoadConfig()
	assert.Equal(t, Config.Host, "127.0.0.1")
	assert.Equal(t, Config.Port, "3333")
	assert.Equal(t, Config.Quality, 80)
	assert.Equal(t, Config.ImgPath, "./pics")
	assert.Equal(t, Config.ImageMap, map[string]string{})
	assert.Equal(t, Config.ExhaustPath, "./exhaust")
	assert.Equal(t, Config.CacheTTL, 259200)
}

func TestSwitchProxyMode(t *testing.T) {
	switchProxyMode()
	assert.False(t, ProxyMode)
	Config.ImgPath = "https://picsum.photos"
	switchProxyMode()
	assert.True(t, ProxyMode)
}

func TestParseImgMap(t *testing.T) {
	empty := map[string]string{}
	good := map[string]string{
		"/1": "../pics/dir1",
		"http://example.com": "../pics",
		"https://example.com": "../pics",
	}
	bad := map[string]string{
		"1": "../pics/dir1",
		"httpx://example.com": "../pics",
		"ftp://example.com": "../pics",
	}
	
	assert.Equal(t, empty, parseImgMap(empty))
	assert.Equal(t, empty, parseImgMap(bad))
	assert.Equal(t, good, parseImgMap(good))

	for k, v := range good {
		bad[k] = v
	}
	assert.Equal(t, good, parseImgMap(bad))
}