package main

import (
	"strings"
	"testing"
)

func TestEklentiAyarSemasi(t *testing.T) {
	if ayarAlanlari("dosya-yoneticisi") != nil {
		t.Fatal("dosya-yoneticisi icin bridge ayari tanimli olmamaliydi")
	}
	var parola, takma bool
	for _, a := range ayarAlanlari("everything") {
		if a.Ad == "parola" && a.Tur == ayarParola {
			parola = true
		}
	}
	for _, a := range ayarAlanlari("usb") {
		if a.Ad == "takmaBildir" && a.Tur == ayarOnay {
			takma = true
		}
	}
	if !parola || !takma {
		t.Fatalf("beklenen alanlar eksik: everything parola=%v usb takmaBildir=%v", parola, takma)
	}
}

func TestAyarBirlestirKucukSinirlar(t *testing.T) {
	kuruluSifirla(t)
	if _, err := ayarBirlestir(testProfil, "everything", []byte(`{"kucukSureSn":31}`)); err == nil {
		t.Fatal("kucukSureSn 31 kabul edilmemeliydi")
	}
	if _, err := ayarBirlestir(testProfil, "everything", []byte(`{"kucukToplamKb":49}`)); err == nil {
		t.Fatal("kucukToplamKb 49 kabul edilmemeliydi")
	}
	if _, err := ayarBirlestir(testProfil, "everything", []byte(`{"kucukMaksDeneme":200,"kucukSureSn":30,"kucukToplamKb":500}`)); err != nil {
		t.Fatalf("sinir degerleri kabul edilmeliydi: %v", err)
	}
}

func TestEklentiAyarFormu(t *testing.T) {
	kuruluSifirla(t)
	p := profilBilgi{Anahtar: testProfil}
	f := eklentiAyarFormuHTML(p, kuruluEklenti{Anahtar: "everything"})
	if !strings.Contains(f, `data-ayar="port"`) || !strings.Contains(f, `value="8888"`) {
		t.Fatalf("everything formunda port alani/varsayilani yok")
	}
	if strings.Contains(f, `value="`+"gizli") {
		t.Fatal("parola degeri forma yazilmamaliydi")
	}
	y := eklentiAyarFormuHTML(p, kuruluEklenti{Anahtar: "dosya-yoneticisi"})
	if !strings.Contains(y, "ayari yok") {
		t.Fatal("ayarsiz eklenti icin bilgi metni yok")
	}
}
