package web
import (
"bytes"
"html/template"
"gitgud.io/mike/mpv-manager/internal/webassets"
"net/http"
"net/http/httptest"
"os"
"path/filepath"
"testing"
"gitgud.io/mike/mpv-manager/pkg/config"
)
func TestOctoberAuditEmptySettingProbe(t *testing.T) {
setupSandboxedConfigHome(t)
path := config.GetConfigPath()
if err := os.MkdirAll(filepath.Dir(path),0700); err != nil {t.Fatal(err)}
original:=[]byte("screenshot-directory=/tmp/existing-shots\nscreenshot-template=old-%n\nscreenshot-avif-opts=crf=20\n")
if err:=os.WriteFile(path,original,0600);err!=nil{t.Fatal(err)}
s:=&Server{}
response:=httptest.NewRecorder()
s.handleConfigApplyAPI(response,httptest.NewRequest(http.MethodPost,"/api/config/apply",bytes.NewBufferString(`{"screenshot_directory":"","screenshot_template":"","screenshot_avif_opts":""}`)))
after,err:=os.ReadFile(path);if err!=nil{t.Fatal(err)}
t.Logf("HTTP=%d body=%s persisted=%q",response.Code,response.Body.String(),after)
if response.Code!=200||!bytes.Equal(original,after){t.Fatal("probe assumptions changed")}
}
func TestOctoberAuditCustomSelectionsProbe(t *testing.T) {
setupSandboxedConfigHome(t)
path := config.GetConfigPath()
if err := os.MkdirAll(filepath.Dir(path),0700); err != nil {t.Fatal(err)}
original:=[]byte("profile=cinema\nscale=ewa_lanczos\nvo=libmpv\nscreenshot-directory=/tmp/old-shots\n[cinema]\nbrightness=3\n")
if err:=os.WriteFile(path,original,0600);err!=nil{t.Fatal(err)}
s:=&Server{}
settings:=s.getConfigSettings(); applyConfigPageDefaults(settings)
tmpl,err:=template.New("").Funcs(templateFuncs).ParseFS(webassets.TemplatesFS,"templates/*.html")
if err!=nil{t.Fatal(err)}
var rendered bytes.Buffer
if err:=tmpl.ExecuteTemplate(&rendered,"config-content",configPageData{DashboardData:DashboardData{Config:settings}});err!=nil{t.Fatal(err)}
if err:=os.WriteFile("/tmp/mpv-manager-ui-audit-custom-config.html",rendered.Bytes(),0600);err!=nil{t.Fatal(err)}
t.Logf("Existing effective values profile=%q scale=%q vo=%q",settings.Profile,settings.VideoScaleFilter,settings.VideoOutputDriver)
response:=httptest.NewRecorder()
s.handleConfigApplyAPI(response,httptest.NewRequest(http.MethodPost,"/api/config/apply",bytes.NewBufferString(`{"profile":"high-quality","video_scale_filter":"ewa_lanczossharp","video_output_driver":"gpu-next","screenshot_directory":"/tmp/new-shots"}`)))
after,err:=os.ReadFile(path);if err!=nil{t.Fatal(err)}
t.Logf("HTTP=%d body=%s persisted=%q",response.Code,response.Body.String(),after)
if response.Code!=200{t.Fatal("probe assumptions changed")}
}