First draft
This commit is contained in:
1 parent
aba52f2b3c
commit
84bc6884b0
37 files changed
+6697
-27
No files matched your search
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user