package ui import ( "net/http" "net/http/httptest" "os" "path/filepath" "strings" "testing" "github.com/hireme/hireme/internal/config" "github.com/hireme/hireme/internal/db" ) func TestHandleDeleteTarget(t *testing.T) { tempDir := t.TempDir() dbPath := filepath.Join(tempDir, "test_ui_delete_target.db") yamlPath := filepath.Join(tempDir, "targets.yaml") initialYAML := `targets: - name: "Test Target" target_url: "https://example.com/test-jobs" platform: "google_jobs" is_active: true ` if err := osWriteFile(yamlPath, []byte(initialYAML)); err != nil { t.Fatalf("failed to write yaml: %v", err) } database, err := db.InitDB(dbPath) if err != nil { t.Fatalf("failed to init db: %v", err) } defer func() { _ = database.Close() }() target, err := database.CreateTarget("Test Target", "https://example.com/test-jobs", "google_jobs") if err != nil { t.Fatalf("failed to create target: %v", err) } _, _, err = database.InsertRawJob("canon-ui-test", &target.ID, "Software Engineer", "Google", "Seattle", "https://example.com/job/1", "Go backend") if err != nil { t.Fatalf("failed to insert raw job: %v", err) } cfg := &config.Config{ TargetConfig: yamlPath, } server := NewServer(cfg, database, nil) mux := http.NewServeMux() server.RegisterRoutes(mux) // Send POST /targets/{id}/delete req := httptest.NewRequest("POST", "/targets/1/delete", nil) w := httptest.NewRecorder() mux.ServeHTTP(w, req) if w.Code != http.StatusOK { t.Fatalf("expected status 200, got %d: %s", w.Code, w.Body.String()) } // Verify target table in response does not contain the deleted target body := w.Body.String() if strings.Contains(body, "Test Target") { t.Errorf("expected target list in response to not contain 'Test Target', got:\n%s", body) } // Verify DB is empty of targets and jobs targets, err := database.GetAllTargets() if err != nil || len(targets) != 0 { t.Errorf("expected 0 targets in DB, got %v (err: %v)", targets, err) } jobs, err := database.GetJobsWithAnalysis() if err != nil || len(jobs) != 0 { t.Errorf("expected 0 jobs in DB, got %v (err: %v)", jobs, err) } } func osWriteFile(path string, data []byte) error { return os.WriteFile(path, data, 0644) }