Files
task-master/internal/server/import_json_test.go
T
skrueckenandCursor 4adfcdb95a Add tm_server with SQLite, Svelte UI, and task-master TUI sync.
Introduces the web backend (auth, RBAC, project tokens, revisions),
YouTrack-or-taskmaster backend choice in the TUI, and a first-pass
embedded Svelte UI. The frontend is functional but needs a major rework.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-27 22:23:11 +01:00

56 lines
1.2 KiB
Go

package server
import (
"os"
"path/filepath"
"testing"
"task/internal/project"
"task/internal/sqlite"
"task/internal/ticket"
)
func TestImportJSONDataDir(t *testing.T) {
dataDir := t.TempDir()
ps := project.NewDirStore(dataDir)
if err := ps.Ensure("inbox"); err != nil {
t.Fatal(err)
}
ts := ticket.NewJSONStore(dataDir)
created, err := ts.Create(ticket.Ticket{Title: "From JSON", ProjectID: "inbox"})
if err != nil {
t.Fatal(err)
}
dbPath := filepath.Join(t.TempDir(), "import.db")
db, err := sqlite.Open(dbPath, []byte("sec"))
if err != nil {
t.Fatal(err)
}
defer db.Close()
u, err := db.CreateUser("admin", "x", true)
if err != nil {
t.Fatal(err)
}
srv := New(db)
if err := srv.ImportJSONDataDir(dataDir, u.ID); err != nil {
t.Fatal(err)
}
got, err := srv.Tickets.Get(created.ID)
if err != nil {
t.Fatal(err)
}
if got.Title != "From JSON" {
t.Fatalf("title=%q", got.Title)
}
role, _ := db.MemberRole("inbox", u.ID)
if role != sqlite.RoleOwner {
t.Fatalf("role=%s", role)
}
// second import is idempotent
if err := srv.ImportJSONDataDir(dataDir, u.ID); err != nil {
t.Fatal(err)
}
_ = os.RemoveAll(dataDir) // ensure we don't rely on JSON after import for this test cleanup
}