package main

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

// Tek hesap donemindeki dosyalar (kok klasor) ilk profil hazirlanınca o profile tasinir.
func TestEskiDosyalarIlkProfileTasinir(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())

	kok, err := veriKlasoru()
	if err != nil {
		t.Fatal(err)
	}
	for _, ad := range []string{"oturum.json", "eslesmeler.json", "cihaz-kimlik"} {
		if err := os.WriteFile(filepath.Join(kok, ad), []byte("x"), 0o600); err != nil {
			t.Fatal(err)
		}
	}

	if err := profilHazirla("ahmet"); err != nil {
		t.Fatalf("profil hazirlama basarisiz: %v", err)
	}
	for _, ad := range []string{"oturum.json", "eslesmeler.json", "cihaz-kimlik"} {
		if _, err := os.Stat(filepath.Join(kok, "profiller", "ahmet", ad)); err != nil {
			t.Errorf("%s ilk profile tasinmaliydi: %v", ad, err)
		}
		if _, err := os.Stat(filepath.Join(kok, ad)); !os.IsNotExist(err) {
			t.Errorf("%s kok klasorden kalkmaliydi", ad)
		}
	}
}

// Ikinci profil hazirlaninca dosyalar tasinmaz: tasima yalnizca profil hic yokken yapilir.
func TestIkinciProfilDosyalariCalmaz(t *testing.T) {
	t.Setenv("APPDATA", t.TempDir())

	if err := profilHazirla("ahmet"); err != nil {
		t.Fatal(err)
	}
	kok, _ := veriKlasoru()
	// Kok klasorde sonradan olusan bir dosya ikinci profile gecmemeli.
	if err := os.WriteFile(filepath.Join(kok, "oturum.json"), []byte("y"), 0o600); err != nil {
		t.Fatal(err)
	}
	if err := profilHazirla("ayse"); err != nil {
		t.Fatal(err)
	}
	if _, err := os.Stat(filepath.Join(kok, "profiller", "ayse", "oturum.json")); !os.IsNotExist(err) {
		t.Errorf("ikinci profil mevcut dosyayi almamaliydi")
	}
}
