110 lines
2.3 KiB
Go
110 lines
2.3 KiB
Go
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)
|
|
})
|
|
}
|