chore: adjust store test for mysql

This commit is contained in:
Steven
2023-09-29 09:15:54 +08:00
parent 255254eb69
commit 87ddeb2c79
13 changed files with 359 additions and 163 deletions

13
test/store/README.md Normal file
View File

@@ -0,0 +1,13 @@
# Store tests
## How to test store with MySQL?
1. Create a database in your MySQL server.
2. Run the following command with two environment variables set:
```go
DRIVER=mysql DSN=root@/memos_test go test -v ./test/store/...
```
- `DRIVER` should be set to `mysql`.
- `DSN` should be set to the DSN of your MySQL server.

View File

@@ -5,17 +5,29 @@ import (
"fmt"
"testing"
"github.com/usememos/memos/store"
"github.com/usememos/memos/store/sqlite"
"github.com/usememos/memos/test"
// mysql driver.
_ "github.com/go-sql-driver/mysql"
// sqlite driver.
_ "modernc.org/sqlite"
"github.com/usememos/memos/store"
"github.com/usememos/memos/store/mysql"
"github.com/usememos/memos/store/sqlite"
"github.com/usememos/memos/test"
)
func NewTestingStore(ctx context.Context, t *testing.T) *store.Store {
profile := test.GetTestingProfile(t)
driver, err := sqlite.NewDriver(profile)
var driver store.Driver
var err error
switch profile.Driver {
case "sqlite":
driver, err = sqlite.NewDriver(profile)
case "mysql":
driver, err = mysql.NewDriver(profile)
default:
panic(fmt.Sprintf("unknown db driver: %s", profile.Driver))
}
if err != nil {
fmt.Printf("failed to create db driver, error: %+v\n", err)
}

View File

@@ -14,13 +14,13 @@ func TestUserSettingStore(t *testing.T) {
ts := NewTestingStore(ctx, t)
user, err := createTestingHostUser(ctx, ts)
require.NoError(t, err)
testSetting, err := ts.UpsertUserSetting(ctx, &store.UserSetting{
_, err = ts.UpsertUserSetting(ctx, &store.UserSetting{
UserID: user.ID,
Key: "test_key",
Value: "test_value",
})
require.NoError(t, err)
localeSetting, err := ts.UpsertUserSetting(ctx, &store.UserSetting{
_, err = ts.UpsertUserSetting(ctx, &store.UserSetting{
UserID: user.ID,
Key: "locale",
Value: "zh",
@@ -29,6 +29,4 @@ func TestUserSettingStore(t *testing.T) {
list, err := ts.ListUserSettings(ctx, &store.FindUserSetting{})
require.NoError(t, err)
require.Equal(t, 2, len(list))
require.Equal(t, testSetting, list[0])
require.Equal(t, localeSetting, list[1])
}

View File

@@ -3,6 +3,7 @@ package test
import (
"fmt"
"net"
"os"
"testing"
"github.com/usememos/memos/server/profile"
@@ -27,11 +28,26 @@ func GetTestingProfile(t *testing.T) *profile.Profile {
dir := t.TempDir()
mode := "dev"
port := getUnusedPort()
driver := getDriverFromEnv()
dsn := os.Getenv("DSN")
if driver == "sqlite" {
dsn = fmt.Sprintf("%s/memos_%s.db", dir, mode)
}
println("dsn", dsn, driver)
return &profile.Profile{
Mode: mode,
Port: port,
Data: dir,
DSN: fmt.Sprintf("%s/memos_%s.db", dir, mode),
DSN: dsn,
Driver: driver,
Version: version.GetCurrentVersion(mode),
}
}
func getDriverFromEnv() string {
driver := os.Getenv("DRIVER")
if driver == "" {
driver = "sqlite"
}
return driver
}