package beachcomber import ( "testing" "git.golem15.com/golem15/summercms/modules/backpack" "git.golem15.com/golem15/summercms/modules/compass" "git.golem15.com/golem15/summercms/modules/lagoon" "gorm.io/gorm" ) // DocsApp returns an app with the given config settings on a fresh migrated // database of this package's Postgres harness, with the database published, // for the database-backed docs examples in example_test.go. It skips under // -short and fails when the harness has no database, like the package's // other database tests. func DocsApp(t *testing.T, settings map[string]any) (*backpack.App, *gorm.DB) { t.Helper() db, dsn := migratedDB(t) cfg, err := compass.Open(compass.Options{Dir: t.TempDir(), Env: "testing", Environ: []string{}}) if err != nil { t.Fatal(err) } if err := cfg.Set("database.dsn", dsn); err != nil { t.Fatal(err) } for k, v := range settings { if err := cfg.Set(k, v); err != nil { t.Fatal(err) } } app := backpack.New(cfg) gdb, err := lagoon.Use(t.Context(), db) if err != nil { t.Fatal(err) } if err := lagoon.Publish(app, db, gdb); err != nil { t.Fatal(err) } return app, gdb } // DocsUseEngine replaces the engine of svc, for docs examples whose toy // engine must not join the global engine registry. func DocsUseEngine(svc *Service, e Engine) { svc.engine = e }