package postgres import ( "context" "testing" "github.com/stretchr/testify/assert" ) func setupTestDB(t *testing.T) *DB { db, err := New(getTestConnString()) if err != nil { t.Fatalf("failed to setup test database: %v", err) } return db } func TestNew_Success(t *testing.T) { connString := getTestConnString() db, err := New(connString) assert.NoError(t, err) assert.NotNil(t, db) defer db.Close() assert.NotNil(t, db.Users()) assert.NotNil(t, db.Chats()) assert.NotNil(t, db.Facts()) assert.NotNil(t, db.Contacts()) assert.NotNil(t, db.Notifications()) assert.NotNil(t, db.Actions()) } func TestNew_PingFailed(t *testing.T) { _, err := New("postgres://user:pass@localhost:54321/db?sslmode=disable") assert.Error(t, err) assert.Contains(t, err.Error(), "ping database") } func TestNew_RunMigrationsFailed(t *testing.T) { conn := getTestConn(t) dropSchema(t, conn) _, err := conn.ExecContext(context.Background(), `CREATE TABLE users ()`) assert.NoError(t, err) _, err = New(getTestConnString()) assert.Error(t, err) assert.Contains(t, err.Error(), "run migrations") dropSchema(t, conn) }