mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-19 20:56:23 -07:00
95 lines
2.2 KiB
Go
95 lines
2.2 KiB
Go
package gcsql
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/DATA-DOG/go-sqlmock"
|
|
"github.com/gochan-org/gochan/pkg/config"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func closeMock(t *testing.T, mock sqlmock.Sqlmock) {
|
|
t.Helper()
|
|
if gcdb == nil || gcdb.db == nil || mock == nil {
|
|
return
|
|
}
|
|
mock.ExpectClose()
|
|
assert.NoError(t, Close())
|
|
err := mock.ExpectationsWereMet()
|
|
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 initMock(t *testing.T, dbDriver string) (sqlmock.Sqlmock, error) {
|
|
t.Helper()
|
|
err := Close()
|
|
assert.NoError(t, err)
|
|
|
|
gcdb, err = setupDBConn(setupSQLConfig(dbDriver, "gochan", ""))
|
|
if !assert.NoError(t, err) {
|
|
return nil, err
|
|
}
|
|
|
|
var mock sqlmock.Sqlmock
|
|
gcdb.db, mock, err = sqlmock.New()
|
|
return mock, err
|
|
}
|
|
|
|
func TestOpenMySQL(t *testing.T) {
|
|
var err error
|
|
gcdb, err = setupDBConn(setupSQLConfig("mysql", "gochan", ""))
|
|
if !assert.NoError(t, err) {
|
|
return
|
|
}
|
|
|
|
var mock sqlmock.Sqlmock
|
|
gcdb.db, mock, err = sqlmock.New()
|
|
assert.NoError(t, err)
|
|
defer closeMock(t, mock)
|
|
}
|
|
|
|
func TestOpenPostgres(t *testing.T) {
|
|
var err error
|
|
gcdb, err = setupDBConn(setupSQLConfig("postgres", "gochan", ""))
|
|
if !assert.NoError(t, err) {
|
|
return
|
|
}
|
|
|
|
var mock sqlmock.Sqlmock
|
|
gcdb.db, mock, err = sqlmock.New()
|
|
assert.NoError(t, err)
|
|
defer closeMock(t, mock)
|
|
}
|
|
|
|
func TestOpenSQLite3(t *testing.T) {
|
|
var err error
|
|
gcdb, err = setupDBConn(setupSQLConfig("sqlite3", "gochan", ""))
|
|
if !assert.NoError(t, err) {
|
|
return
|
|
}
|
|
|
|
var mock sqlmock.Sqlmock
|
|
gcdb.db, mock, err = sqlmock.New()
|
|
assert.NoError(t, err)
|
|
defer closeMock(t, mock)
|
|
}
|
|
|
|
func TestOpenUnrecognizedDriver(t *testing.T) {
|
|
assert.NoError(t, Close())
|
|
_, err := setupDBConn(setupSQLConfig("wat", "gochan", ""))
|
|
assert.Error(t, err)
|
|
}
|