feat: test event reduction to relational tables (#11718)

# Which Problems Are Solved

This PR provides an example for testing DB reduction to relational
tables without exploiting integration tests.

# How the Problems Are Solved

- Set up a disposable embedded Postgres DB used to store the results of
the calls to the reducers and verify such results
- Add utility method to return transactions from the existing DB pool.
These transactions can be used by the single test cases to insert and
read data from DB
- Add a test to verify that the handler contains the expected reducers
(checking also that they are on the right aggregate type)
- Add tests to verify the single reduce functions. A parent test creates
the required objects to satisfy the foreign key constraints.

# Additional Changes

  - Typo fixed in `postgres.DecodeConfig()`
  - Discard unneeded `projectionName` parameter for `Executor` function
 
# Additional Context

- Closes #11430
This commit is contained in:
Marco A.
2026-03-02 16:44:51 +00:00
committed by GitHub
parent d3434dd46c
commit 3ebeb61b80
7 changed files with 338 additions and 318 deletions
+4
View File
@@ -2,6 +2,7 @@ package database
import (
"context"
"database/sql"
)
// Pool is a connection pool. e.g. pgxpool
@@ -20,6 +21,9 @@ type PoolTest interface {
Pool
// MigrateTest is the same as [Migrator] but executes the migrations multiple times instead of only once.
MigrateTest(ctx context.Context) error
// RawDB returns an *[sql.DB] handle backed by the same database as the [PoolTest].
// The returned handle is intended for use in tests, and the caller is responsible for closing it when done.
RawDB() *sql.DB
}
// Connection is a single database connection which can be released back to the pool.