First draft
MindSift Multi-Arch Docker Build / Lint, Build & Unit Tests (push) Successful in 2m7s
MindSift Multi-Arch Docker Build / Build & Push Docker Image (push) Failing after 29s

This commit is contained in:
sandrodach committed 2026-10-24 16:56:44 +02:00
1 parent aba52f2b3c
commit 84bc6884b0
37 files changed
+6697 -27

No files matched your search

File diff suppressed because it is too large. Load diff
+76
View File
@@ -0,0 +1,76 @@
package storage
import (
"path/filepath"
"testing"
"github.com/sandrodach/mindsift/internal/domain"
)
func TestStoreLifecycle(t *testing.T) {
tmpDir := t.TempDir()
dbPath := filepath.Join(tmpDir, "test_mindsift.db")
store, err := NewStore(dbPath)
if err != nil {
t.Fatalf("NewStore failed: %v", err)
}
defer store.Close()
user, err := store.EnsureDefaultUser()
if err != nil {
t.Fatalf("EnsureDefaultUser failed: %v", err)
}
if user.ID == "" {
t.Fatal("expected valid user ID")
}
// 1. Test Instant Capture
thought, err := store.CreateThought(user.ID, "Milch und Brot kaufen #einkauf #dringend", "high", "manual", "")
if err != nil {
t.Fatalf("CreateThought failed: %v", err)
}
if thought.Status != domain.StatusInbox {
t.Fatalf("expected status inbox, got %s", thought.Status)
}
if len(thought.Tags) != 2 {
t.Fatalf("expected 2 extracted hashtags, got %d", len(thought.Tags))
}
// 2. Test Tinder-Style Triage -> Convert to Document
triaged, err := store.UpdateThoughtTriage(user.ID, thought.ID, "keep", "document", "", "")
if err != nil {
t.Fatalf("UpdateThoughtTriage failed: %v", err)
}
if triaged.Status != domain.StatusConverted || triaged.ConvertedType != "document" || triaged.ConvertedRefID == "" {
t.Fatalf("expected converted document, got status=%s type=%s ref=%s", triaged.Status, triaged.ConvertedType, triaged.ConvertedRefID)
}
// 3. Test Shared Space & Shopping List
sp, err := store.CreateSpace(user.ID, "Test WG", "🍕", "Test Space", false)
if err != nil {
t.Fatalf("CreateSpace failed: %v", err)
}
lst, err := store.CreateList(sp.ID, "REWE Einkauf", "🛒", "shopping")
if err != nil {
t.Fatalf("CreateList failed: %v", err)
}
item, err := store.CreateListItem(lst.ID, "Hafermilch", "Kühlregal", "2L", 0)
if err != nil {
t.Fatalf("CreateListItem failed: %v", err)
}
toggled, err := store.ToggleListItem(item.ID, true, user.ID, user.DisplayName)
if err != nil || !toggled.IsCompleted {
t.Fatalf("ToggleListItem failed: %v", err)
}
// 4. Test Webhook API Key generation & validation
apiKey, err := store.CreateAPIKey(user.ID, "Home Assistant")
if err != nil {
t.Fatalf("CreateAPIKey failed: %v", err)
}
validatedUser, err := store.ValidateAPIKeyAndGetUser(apiKey.RawKey)
if err != nil || validatedUser.ID != user.ID {
t.Fatalf("ValidateAPIKeyAndGetUser failed: %v", err)
}
}