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") } }