package infra import ( "database/sql" "testing" _ "github.com/mattn/go-sqlite3" ) func openMemDB(t *testing.T) *sql.DB { t.Helper() db, err := sql.Open("sqlite3", ":memory:") if err != nil { t.Fatalf("open :memory: db: %v", err) } t.Cleanup(func() { db.Close() }) return db } func TestColumnExists(t *testing.T) { t.Run("columna existente retorna true", func(t *testing.T) { db := openMemDB(t) if _, err := db.Exec(`CREATE TABLE t (id INTEGER PRIMARY KEY, name TEXT)`); err != nil { t.Fatal(err) } got, err := ColumnExists(db, "t", "name") if err != nil { t.Fatalf("unexpected error: %v", err) } if !got { t.Errorf("expected true for existing column 'name'") } }) t.Run("columna inexistente retorna false", func(t *testing.T) { db := openMemDB(t) if _, err := db.Exec(`CREATE TABLE t (id INTEGER PRIMARY KEY)`); err != nil { t.Fatal(err) } got, err := ColumnExists(db, "t", "missing") if err != nil { t.Fatalf("unexpected error: %v", err) } if got { t.Errorf("expected false for missing column") } }) t.Run("tabla inexistente retorna false sin error", func(t *testing.T) { db := openMemDB(t) got, err := ColumnExists(db, "no_such_table", "col") if err != nil { t.Fatalf("unexpected error: %v", err) } if got { t.Errorf("expected false for non-existent table") } }) }