1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-26 18:56:24 -07:00

Add public function to gcsql for SQL mock access

This commit is contained in:
Eggbertx 2024-05-31 14:43:35 -07:00
parent 8be391ba5c
commit 9fe6df52ee
5 changed files with 105 additions and 59 deletions

View file

@ -8,6 +8,7 @@ import (
"sync"
"time"
"github.com/DATA-DOG/go-sqlmock"
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
@ -388,6 +389,33 @@ func setupDBConn(cfg *config.SQLConfig) (db *GCDB, err error) {
return db, nil
}
func setupSqlTestConfig(dbDriver string, dbName string, dbPrefix string) *config.SQLConfig {
return &config.SQLConfig{
DBtype: dbDriver,
DBhost: "localhost",
DBname: dbName,
DBusername: "gochan",
DBpassword: "gochan",
DBprefix: dbPrefix,
DBTimeoutSeconds: config.DefaultSQLTimeout,
DBMaxOpenConnections: config.DefaultSQLMaxConns,
DBMaxIdleConnections: config.DefaultSQLMaxConns,
DBConnMaxLifetimeMin: config.DefaultSQLConnMaxLifetimeMin,
}
}
func SetupMockDB(driver string) (sqlmock.Sqlmock, error) {
var err error
gcdb, err = setupDBConn(setupSqlTestConfig(driver, "gochan", ""))
if err != nil {
return nil, err
}
var mock sqlmock.Sqlmock
gcdb.db, mock, err = sqlmock.New()
return mock, err
}
// Open opens and returns a new gochan database connection with the provided host, driver, DB name,
// username, password, and table prefix
func Open(cfg *config.SQLConfig) (db *GCDB, err error) {

View file

@ -4,7 +4,6 @@ import (
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/gochan-org/gochan/pkg/config"
"github.com/stretchr/testify/assert"
)
@ -19,24 +18,9 @@ func closeMock(t *testing.T, mock sqlmock.Sqlmock) {
assert.NoError(t, err)
}
func setupSQLConfig(dbDriver string, dbName string, dbPrefix string) *config.SQLConfig {
return &config.SQLConfig{
DBtype: dbDriver,
DBhost: "localhost",
DBname: dbName,
DBusername: "gochan",
DBpassword: "gochan",
DBprefix: dbPrefix,
DBTimeoutSeconds: config.DefaultSQLTimeout,
DBMaxOpenConnections: config.DefaultSQLMaxConns,
DBMaxIdleConnections: config.DefaultSQLMaxConns,
DBConnMaxLifetimeMin: config.DefaultSQLConnMaxLifetimeMin,
}
}
func TestOpenMySQL(t *testing.T) {
var err error
gcdb, err = setupDBConn(setupSQLConfig("mysql", "gochan", ""))
gcdb, err = setupDBConn(setupSqlTestConfig("mysql", "gochan", ""))
if !assert.NoError(t, err) {
return
}
@ -49,7 +33,7 @@ func TestOpenMySQL(t *testing.T) {
func TestOpenPostgres(t *testing.T) {
var err error
gcdb, err = setupDBConn(setupSQLConfig("postgres", "gochan", ""))
gcdb, err = setupDBConn(setupSqlTestConfig("postgres", "gochan", ""))
if !assert.NoError(t, err) {
return
}
@ -62,7 +46,7 @@ func TestOpenPostgres(t *testing.T) {
func TestOpenSQLite3(t *testing.T) {
var err error
gcdb, err = setupDBConn(setupSQLConfig("sqlite3", "gochan", ""))
gcdb, err = setupDBConn(setupSqlTestConfig("sqlite3", "gochan", ""))
if !assert.NoError(t, err) {
return
}
@ -75,6 +59,6 @@ func TestOpenSQLite3(t *testing.T) {
func TestOpenUnrecognizedDriver(t *testing.T) {
assert.NoError(t, Close())
_, err := setupDBConn(setupSQLConfig("wat", "gochan", ""))
_, err := setupDBConn(setupSqlTestConfig("wat", "gochan", ""))
assert.Error(t, err)
}

View file

@ -25,7 +25,7 @@ func TestProvision(t *testing.T) {
t.Run(driver, func(t *testing.T) {
config.SetTestDBConfig(driver, "localhost", "gochan", "gochan", "gochan", "")
gcdb, err = setupDBConn(setupSQLConfig(driver, "gochan", ""))
gcdb, err = setupDBConn(setupSqlTestConfig(driver, "gochan", ""))
if !assert.NoError(t, err) {
return
}