mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
chore: adjust store test for mysql
This commit is contained in:
13
test/store/README.md
Normal file
13
test/store/README.md
Normal 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.
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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])
|
||||
}
|
||||
|
||||
18
test/test.go
18
test/test.go
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user