go-scopes/tests/storage_test.go

68 lines
1.4 KiB
Go

package scopes
import (
tbase "testing"
"git.sr.ht/~cco/go-scopes/common/testing"
"git.sr.ht/~cco/go-scopes/storage/sql"
_ "git.sr.ht/~cco/go-scopes/storage/sql/pgsql"
_ "git.sr.ht/~cco/go-scopes/storage/sql/sqlite"
"git.sr.ht/~cco/go-scopes/tests/etc"
)
func TestSqlite(tb *tbase.T) {
t := testing.SetUp(tb)
cfg := etc.ConfigSqlite()
db := sql.Open(cfg)
resetSqlite(db)
DoTests(t, cfg, db)
}
func TestPgsql(tb *tbase.T) {
t := testing.SetUp(tb)
cfg := etc.ConfigPgsql()
db := sql.Open(cfg)
resetPgsql(db)
DoTests(t, cfg, db)
}
func DoTests(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
t.Run("base", func(t *testing.T) { BaseTest(t, cfg, db) })
}
func BaseTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
//fmt.Println(cfg.Connstr)
db.Exec(insert)
}
func resetSqlite(db *sql.Storage) {
db.Exec(drop_table)
db.Exec(sqlite_create_table)
}
func resetPgsql(db *sql.Storage) {
db.Exec(drop_table)
db.Exec(pgsql_create_table)
}
// SQL statements
var drop_table = `drop table test`
var insert = `insert into test (label) values
('Hello World'),
('Good Afternoon')`
var query = `select label from test
where id = $1`
// database-specific SQL statements
// note: ... integer ... primary key ... automatically fills row sequentially
var sqlite_create_table = `create table test (
id integer not null primary key,
label text)`
var pgsql_create_table = `create table test (
id serial not null primary key,
label text)`