package main

import (
	"os"
	"path/filepath"
	"strings"
	"testing"
)

func TestProfilAnahtari(t *testing.T) {
	cases := map[string]string{
		"Ahmet":          "ahmet",
		"  Ayşe Yılmaz ": "ay_e_y_lmaz",
		"ali.veli-1":     "ali.veli-1",
	}
	for girdi, beklenen := range cases {
		got, err := profilAnahtari(girdi)
		if err != nil {
			t.Fatalf("%q: beklenmeyen hata: %v", girdi, err)
		}
		if got != beklenen {
			t.Errorf("%q: beklenen %q, alinan %q", girdi, beklenen, got)
		}
	}
	if _, err := profilAnahtari("   "); err == nil {
		t.Errorf("bos ad icin hata bekleniyordu")
	}
}

func TestProfilKlasoruAyri(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())
	a, err := profilKlasoru("ahmet")
	if err != nil {
		t.Fatal(err)
	}
	b, err := profilKlasoru("ayse")
	if err != nil {
		t.Fatal(err)
	}
	if a == b {
		t.Fatalf("iki profil ayni klasoru kullaniyor: %s", a)
	}
	if !strings.HasSuffix(a, filepath.Join("profiller", "ahmet")) {
		t.Errorf("beklenmeyen yol: %s", a)
	}
	if st, err := os.Stat(a); err != nil || !st.IsDir() {
		t.Errorf("profil klasoru olusturulmadi: %v", err)
	}
}

func TestProfilKlasoruGecersizAnahtar(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())
	for _, kotu := range []string{"", "../dis", "a/b", "BUYUK", strings.Repeat("a", 65)} {
		if _, err := profilKlasoru(kotu); err == nil {
			t.Errorf("%q icin hata bekleniyordu", kotu)
		}
	}
}
