package database import ( "os" "path/filepath" "testing" "gitm/internal/models" ) func TestDatabase(t *testing.T) { tmpDB := filepath.Join(os.TempDir(), "test_gitm.db") defer os.Remove(tmpDB) if err := Initialize(tmpDB); err != nil { t.Fatalf("Initialize failed: %v", err) } defer Close() t.Run("Settings", func(t *testing.T) { if err := SetSetting("test_key", "test_value"); err != nil { t.Fatal(err) } val, err := GetSetting("test_key") if err != nil { t.Fatal(err) } if val != "test_value" { t.Errorf("expected test_value, got %s", val) } }) t.Run("ServerCRUD", func(t *testing.T) { s := &models.GiteaServer{Name: "Test", URL: "https://test.com", Token: "tok", Status: "active"} if err := CreateServer(s); err != nil { t.Fatal(err) } if s.ID == 0 { t.Error("ID not set") } got, err := GetServer(s.ID) if err != nil { t.Fatal(err) } if got.Name != "Test" { t.Error("name mismatch") } servers, err := GetServers() if err != nil { t.Fatal(err) } if len(servers) != 1 { t.Errorf("expected 1, got %d", len(servers)) } if err := DeleteServer(s.ID); err != nil { t.Fatal(err) } }) t.Run("RepoCRUD", func(t *testing.T) { s := &models.GiteaServer{Name: "RepoTest", URL: "https://test.com", Token: "tok", Status: "active"} CreateServer(s) r := &models.Repo{ServerID: s.ID, Name: "repo1", FullName: "user/repo1", CloneURL: "https://test.com/user/repo1.git", SyncStatus: "pending"} if err := CreateRepo(r); err != nil { t.Fatal(err) } got, err := GetRepoByFullName(s.ID, "user/repo1") if err != nil { t.Fatal(err) } if got == nil || got.Name != "repo1" { t.Error("repo not found") } repos, err := GetReposByServer(s.ID) if err != nil { t.Fatal(err) } if len(repos) != 1 { t.Errorf("expected 1, got %d", len(repos)) } DeleteServer(s.ID) }) t.Run("SyncLogs", func(t *testing.T) { s := &models.GiteaServer{Name: "LogTest", URL: "https://test.com", Token: "tok", Status: "active"} CreateServer(s) l := &models.SyncLog{ServerID: s.ID, Status: "success", Message: "test"} if err := CreateSyncLog(l); err != nil { t.Fatal(err) } logs, err := GetSyncLogs(s.ID, 10, 0) if err != nil { t.Fatal(err) } if len(logs) != 1 { t.Errorf("expected 1, got %d", len(logs)) } DeleteServer(s.ID) }) }