mirror of
https://github.com/go-shiori/shiori.git
synced 2025-01-16 04:48:30 +08:00
05fee53bd0
* chore: updated go-migrate dependencies * fix: specify if we're saving bookmarks expecting a creation up until now the SaveBookmarks method was doing some "magic" to do "upserts" on the databases, but consistency between engines was scarce and not knowing if we were expecting saving a new bookmark or updating an existing one was leading to errors and inconsistencies in logic all around the place. Now we need to specify a creation boolean when saving and a differnt query will be make (INSERT vs UPDATE). * fix(api): using incorrect bookmark for content downlaod * test(db): added test pipeline for databases Added functions that will share logic among the engines and will be called on fresh databases on each test run * dev: added basic docker-compose for development * chore: uncommented tests * ci(test): added mysql service * typo * test(mysql): select database after reset * fix(mysql): ignore empty row errors when parsing tags * fix(mysql): handle insert errors * chore: added mysql variables to compose * ci: explicit mysql service port exposed
40 lines
806 B
Go
40 lines
806 B
Go
package database
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"log"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/golang-migrate/migrate/v4"
|
|
)
|
|
|
|
func init() {
|
|
connString := os.Getenv("SHIORI_TEST_PG_URL")
|
|
if connString == "" {
|
|
log.Fatal("psql tests can't run without a PSQL database, set SHIORI_TEST_PG_URL environment variable")
|
|
}
|
|
}
|
|
|
|
func postgresqlTestDatabaseFactory(ctx context.Context) (DB, error) {
|
|
db, err := OpenPGDatabase(ctx, os.Getenv("SHIORI_TEST_PG_URL"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
_, err = db.Exec("DROP SCHEMA public CASCADE; CREATE SCHEMA public;")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err := db.Migrate(); err != nil && !errors.Is(migrate.ErrNoChange, err) {
|
|
return nil, err
|
|
}
|
|
|
|
return db, nil
|
|
}
|
|
|
|
func TestPostgresDatabase(t *testing.T) {
|
|
testDatabase(t, postgresqlTestDatabaseFactory)
|
|
}
|