优化
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"kra/internal/conf"
|
||||
)
|
||||
|
||||
func TestDatabaseConnectionConfigured(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
config *conf.Data_Database
|
||||
want bool
|
||||
}{
|
||||
{name: "missing config", config: nil, want: false},
|
||||
{name: "empty database", config: &conf.Data_Database{Driver: "mysql"}, want: false},
|
||||
{name: "named database", config: &conf.Data_Database{Driver: "mysql", Name: "kra"}, want: true},
|
||||
{name: "standalone DSN", config: &conf.Data_Database{Driver: "sqlite", Source: "file:kra.db"}, want: true},
|
||||
{name: "generated DSN still requires a name", config: &conf.Data_Database{Driver: "mysql", Source: "root@tcp(localhost)/", Host: "localhost"}, want: false},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
if got := databaseConnectionConfigured(test.config); got != test.want {
|
||||
t.Fatalf("databaseConnectionConfigured() = %v, want %v", got, test.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestInitializationStateTracksRealDatabaseConnection(t *testing.T) {
|
||||
data := &Data{}
|
||||
repo := &initializationRepo{data: data}
|
||||
|
||||
initialized, err := repo.IsInitialized(context.Background())
|
||||
if err != nil {
|
||||
t.Fatalf("IsInitialized() error = %v", err)
|
||||
}
|
||||
if initialized {
|
||||
t.Fatal("bootstrap state must require initialization")
|
||||
}
|
||||
|
||||
data.databaseReady.Store(true)
|
||||
initialized, err = repo.IsInitialized(context.Background())
|
||||
if err != nil {
|
||||
t.Fatalf("IsInitialized() error = %v", err)
|
||||
}
|
||||
if !initialized {
|
||||
t.Fatal("an active configured database must not require initialization")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user