Files
catalyst/testing/testapp.go
2025-09-02 21:58:08 +02:00

48 lines
1.5 KiB
Go

package testing
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"github.com/SecurityBrewery/catalyst/app"
"github.com/SecurityBrewery/catalyst/app/counter"
"github.com/SecurityBrewery/catalyst/app/data"
"github.com/SecurityBrewery/catalyst/app/hook"
)
func App(t *testing.T) (*app.App, func(), *counter.Counter) {
t.Helper()
dir := t.TempDir()
catalyst, cleanup, err := app.New(t.Context(), dir)
require.NoError(t, err)
data.DefaultTestData(t, dir, catalyst.Queries)
return catalyst, cleanup, countEvents(catalyst.Hooks)
}
func countEvents(hooks *hook.Hooks) *counter.Counter {
c := counter.NewCounter()
hooks.OnRecordsListRequest.Subscribe(count(c, "OnRecordsListRequest"))
hooks.OnRecordViewRequest.Subscribe(count(c, "OnRecordViewRequest"))
hooks.OnRecordBeforeCreateRequest.Subscribe(count(c, "OnRecordBeforeCreateRequest"))
hooks.OnRecordAfterCreateRequest.Subscribe(count(c, "OnRecordAfterCreateRequest"))
hooks.OnRecordBeforeUpdateRequest.Subscribe(count(c, "OnRecordBeforeUpdateRequest"))
hooks.OnRecordAfterUpdateRequest.Subscribe(count(c, "OnRecordAfterUpdateRequest"))
hooks.OnRecordBeforeDeleteRequest.Subscribe(count(c, "OnRecordBeforeDeleteRequest"))
hooks.OnRecordAfterDeleteRequest.Subscribe(count(c, "OnRecordAfterDeleteRequest"))
return c
}
func count(c *counter.Counter, name string) func(ctx context.Context, table string, record any) {
return func(_ context.Context, _ string, _ any) {
c.Increment(name)
}
}