feat(workspace): synchronize folders with server and add folder deletion
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 58s
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 58s
This commit is contained in:
1 parent
1be0909344
commit
c4b2a00348
5 files changed
+382
-49
No files matched your search
@@ -1,6 +1,7 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
@@ -317,3 +318,83 @@ func TestEnsureDemoAccountsAndLoginLookup(t *testing.T) {
|
||||
t.Fatalf("second EnsureDemoAccounts call failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFolderManagementAndDeletion(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
dbPath := filepath.Join(tmpDir, "folder_test.db")
|
||||
docDir := filepath.Join(tmpDir, "workspace")
|
||||
|
||||
store, err := NewStore(dbPath)
|
||||
if err != nil {
|
||||
t.Fatalf("NewStore failed: %v", err)
|
||||
}
|
||||
defer store.Close()
|
||||
|
||||
user, err := store.CreateUser("folderuser@example.com", "hash", "Folder User", "member")
|
||||
if err != nil {
|
||||
t.Fatalf("CreateUser failed: %v", err)
|
||||
}
|
||||
|
||||
// 1. Create folders on disk
|
||||
f1, err := store.CreateFolder(user.ID, "Projekte/MindSift")
|
||||
if err != nil || f1 != "Projekte/MindSift" {
|
||||
t.Fatalf("CreateFolder failed: %v, f1=%s", err, f1)
|
||||
}
|
||||
f2, err := store.CreateFolder(user.ID, "Archiv")
|
||||
if err != nil || f2 != "Archiv" {
|
||||
t.Fatalf("CreateFolder Archiv failed: %v", err)
|
||||
}
|
||||
|
||||
// 2. Create document in subfolder
|
||||
doc1, err := store.CreateDocument(user.ID, "", "Doc in MindSift", "📄", "Projekte/MindSift", nil, nil, false)
|
||||
if err != nil {
|
||||
t.Fatalf("CreateDocument failed: %v", err)
|
||||
}
|
||||
doc2, err := store.CreateDocument(user.ID, "", "SubDoc", "📝", "Projekte/MindSift/Sub", nil, nil, false)
|
||||
if err != nil {
|
||||
t.Fatalf("CreateDocument 2 failed: %v", err)
|
||||
}
|
||||
|
||||
// 3. GetFolders
|
||||
folders, err := store.GetFolders(user.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("GetFolders failed: %v", err)
|
||||
}
|
||||
expected := map[string]bool{
|
||||
"Archiv": true,
|
||||
"Projekte": true,
|
||||
"Projekte/MindSift": true,
|
||||
"Projekte/MindSift/Sub": true,
|
||||
}
|
||||
for _, f := range folders {
|
||||
delete(expected, f)
|
||||
}
|
||||
if len(expected) > 0 {
|
||||
t.Fatalf("GetFolders missing expected folders: %v (got %v)", expected, folders)
|
||||
}
|
||||
|
||||
// 4. DeleteFolder "Projekte/MindSift" -> should remove doc1 & doc2
|
||||
deletedDocs, err := store.DeleteFolder(user.ID, "Projekte/MindSift")
|
||||
if err != nil {
|
||||
t.Fatalf("DeleteFolder failed: %v", err)
|
||||
}
|
||||
if len(deletedDocs) != 2 {
|
||||
t.Fatalf("expected 2 deleted docs, got %d (%v)", len(deletedDocs), deletedDocs)
|
||||
}
|
||||
|
||||
// Verify docs are gone from DB
|
||||
_, err = store.GetDocumentByID(user.ID, doc1.ID)
|
||||
if err == nil {
|
||||
t.Fatalf("expected doc1 to be deleted")
|
||||
}
|
||||
_, err = store.GetDocumentByID(user.ID, doc2.ID)
|
||||
if err == nil {
|
||||
t.Fatalf("expected doc2 to be deleted")
|
||||
}
|
||||
|
||||
// Verify disk directory was deleted
|
||||
diskFolder := filepath.Join(docDir, user.ID, "Projekte/MindSift")
|
||||
if _, err := os.Stat(diskFolder); !os.IsNotExist(err) {
|
||||
t.Fatalf("expected directory %s to be deleted on disk", diskFolder)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user