57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package handlers_test
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"erp_system/internal/database"
|
|
"erp_system/internal/handlers"
|
|
|
|
"github.com/gorilla/sessions"
|
|
)
|
|
|
|
func TestJournalEntries_List(t *testing.T) {
|
|
// Setup temporary DB
|
|
dbFile := "test_ledger.db"
|
|
db, err := database.Initialize(dbFile)
|
|
if err != nil {
|
|
t.Fatalf("Failed to initialize DB: %v", err)
|
|
}
|
|
defer func() {
|
|
db.Close()
|
|
os.Remove(dbFile)
|
|
}()
|
|
|
|
// Setup Handler
|
|
store := sessions.NewCookieStore([]byte("secret"))
|
|
h := &handlers.Handler{
|
|
DB: db,
|
|
Store: store,
|
|
}
|
|
|
|
// Insert a dummy entry so the loop runs
|
|
db.Exec("INSERT INTO journal_entries (description) VALUES ('Test')")
|
|
|
|
// Create a timeout channel to detect freeze
|
|
done := make(chan bool)
|
|
go func() {
|
|
req := httptest.NewRequest("GET", "/ledger/journal", nil)
|
|
w := httptest.NewRecorder()
|
|
|
|
// Execute Handler
|
|
h.JournalEntries(w, req)
|
|
|
|
done <- true
|
|
}()
|
|
|
|
select {
|
|
case <-done:
|
|
t.Log("Handler completed successfully")
|
|
case <-time.After(2 * time.Second):
|
|
t.Fatal("Handler timed out - DEADLOCK DETECTED")
|
|
}
|
|
}
|