Skip to content

Commit

Permalink
separateCreate
Browse files Browse the repository at this point in the history
  • Loading branch information
flimzy committed Nov 23, 2023
1 parent d50a1e6 commit 1c18261
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
35 changes: 19 additions & 16 deletions bootstrap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,59 @@ package txdb_test

import (
"database/sql"
"fmt"
"strings"
"testing"
)

const (
mysql_sql = `CREATE TABLE %s.users (
mysql_sql = `CREATE TABLE users (
id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL,
username VARCHAR(32) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX uniq_email (email)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB`

psql_sql = `CREATE TABLE %s.users (
psql_sql = `CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(32) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL
)`

inserts = `INSERT INTO %s.users (username, email) VALUES ('gopher', 'gopher@go.com'), ('john', 'john@doe.com'), ('jane', 'jane@doe.com')`
inserts = `INSERT INTO users (username, email) VALUES ('gopher', 'gopher@go.com'), ('john', 'john@doe.com'), ('jane', 'jane@doe.com')`

testDB = "txdb_test"
)

// bootstrap bootstraps the database with the nfor tests.
func bootstrap(t *testing.T, driver, dsn string) {
fmt.Println("bootstrapping", dsn)
dsn = strings.TrimSuffix(dsn, "/"+testDB)
db, err := sql.Open(driver, dsn)
if err != nil {
t.Fatal(err)
}
if _, err := db.Exec("DROP DATABASE IF EXISTS txdb_test"); err != nil {
t.Fatal(err)
}
if _, err := db.Exec("CREATE DATABASE txdb_test"); err != nil {
t.Fatal(err)
}
switch driver {
case "mysql":
if _, err := db.Exec(fmt.Sprintf(mysql_sql, testDB)); err != nil {
if _, err := db.Exec(mysql_sql); err != nil {
t.Fatal(err)
}
case "postgresql":
if _, err := db.Exec(fmt.Sprintf(psql_sql, testDB)); err != nil {
if _, err := db.Exec(psql_sql); err != nil {
t.Fatal(err)
}
}
if _, err := db.Exec(fmt.Sprintf(inserts, testDB)); err != nil {
if _, err := db.Exec(inserts); err != nil {
t.Fatal(err)
}
}

func createDB(t *testing.T, driver, dsn string) {
db, err := sql.Open(driver, dsn)
if err != nil {
t.Fatal(err)
}
if _, err := db.Exec("DROP DATABASE IF EXISTS txdb_test"); err != nil {
t.Fatal(err)
}
if _, err := db.Exec("CREATE DATABASE txdb_test"); err != nil {
t.Fatal(err)
}
}
3 changes: 2 additions & 1 deletion db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ func (d *testDriver) register(t *testing.T) {
if !d.registered {
base, full := d.dsn(t)
d.registered = true
bootstrap(t, d.driver, base)
createDB(t, d.driver, base)
bootstrap(t, d.driver, full)
txdb.Register(d.name, d.driver, full)
}
}
Expand Down

0 comments on commit 1c18261

Please sign in to comment.