fix: improve test infrastructure and add ID validation
- Add TestMain to set test env vars and testdb.TruncateTables for test isolation - Add chi routing context to test helpers for path parameter extraction - Fix SQL error handling to use errors.Is() instead of == - Add validators package with ID validation - Fix admin test middleware chain (RequireAdmin wrapper) - Update test user inserts to include phone and date_of_birth fields - Update service delete test to check soft-delete (is_active=false) - Update holiday hours test to use new schema (weekday, is_open) - Add phone number validation tests for UK mobile numbers
This commit is contained in:
+2
-2
@@ -6,7 +6,6 @@ package db
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
@@ -60,6 +59,7 @@ func getEnv(key string) string {
|
||||
if val := os.Getenv(key); val != "" {
|
||||
return val
|
||||
}
|
||||
log.Fatal("FATAL: Environment variable not set:", key)
|
||||
// Return empty string instead of fatal error - allows tests to run without prod env vars
|
||||
// Tests should use testdb.Pool() and set db.DB before running handler code
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ package db
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
@@ -59,6 +58,6 @@ func getEnv(key string) string {
|
||||
if val := os.Getenv(key); val != "" {
|
||||
return val
|
||||
}
|
||||
log.Fatal("FATAL: Environment variable not set:", key)
|
||||
// Return empty string instead of fatal error - allows tests to run without prod env vars
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
//go:build test
|
||||
// +build test
|
||||
|
||||
package db
|
||||
|
||||
import (
|
||||
"os"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Set defaults for test environment if not already set
|
||||
if os.Getenv("POSTGRES_USER") == "" {
|
||||
os.Setenv("POSTGRES_USER", "myuser")
|
||||
}
|
||||
if os.Getenv("POSTGRES_PASSWORD") == "" {
|
||||
os.Setenv("POSTGRES_PASSWORD", "mypassword")
|
||||
}
|
||||
if os.Getenv("POSTGRES_HOST") == "" {
|
||||
os.Setenv("POSTGRES_HOST", "localhost")
|
||||
}
|
||||
if os.Getenv("POSTGRES_DB") == "" {
|
||||
os.Setenv("POSTGRES_DB", "crussell_test")
|
||||
}
|
||||
if os.Getenv("GO_TESTING") == "" {
|
||||
os.Setenv("GO_TESTING", "true")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user