Skip to content

Commit c88c99d

Browse files
committed
remove forked riverinternaltest in favor of shared variants
Also refactor to leverage shared DB test TX helpers and parallelize endpoint detection tests which modify the schema (by disbling sharing on those tests).
1 parent 6977cde commit c88c99d

15 files changed

Lines changed: 214 additions & 280 deletions

File tree

common_test.go

Lines changed: 0 additions & 32 deletions
This file was deleted.

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ toolchain go1.24.4
77
require (
88
github.com/jackc/pgx/v5 v5.7.6
99
github.com/riverqueue/apiframe v0.0.0-20250408034821-b206bbbd0fb4
10-
github.com/riverqueue/river v0.25.0
11-
github.com/riverqueue/river/riverdriver v0.25.0
12-
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.25.0
13-
github.com/riverqueue/river/rivershared v0.25.0
14-
github.com/riverqueue/river/rivertype v0.25.0
10+
github.com/riverqueue/river v0.25.1-0.20250930132154-eb7b19e2bbab
11+
github.com/riverqueue/river/riverdriver v0.25.1-0.20250930132154-eb7b19e2bbab
12+
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.25.1-0.20250930132154-eb7b19e2bbab
13+
github.com/riverqueue/river/rivershared v0.25.1-0.20250930132154-eb7b19e2bbab
14+
github.com/riverqueue/river/rivertype v0.25.1-0.20250930132154-eb7b19e2bbab
1515
github.com/rs/cors v1.11.1
1616
github.com/samber/slog-http v1.8.2
1717
github.com/stretchr/testify v1.11.1

go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
3535
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3636
github.com/riverqueue/apiframe v0.0.0-20250408034821-b206bbbd0fb4 h1:ejJogJ57bF+jMbvGjZQ6H6LR0NCTDQr30SJ/wSVepgs=
3737
github.com/riverqueue/apiframe v0.0.0-20250408034821-b206bbbd0fb4/go.mod h1:6aXA9FSXKkxwjbOUSXdrIOuw478Lvtz/eEu45R4MoQk=
38-
github.com/riverqueue/river v0.25.0 h1:dRnA9ltq9hTYRMmZgBnhqRh3AzBIFVu+qVLpBqy6b+g=
39-
github.com/riverqueue/river v0.25.0/go.mod h1:KetN5MQQu9IjtganQrIt0OFubweeh+qkAqJaCdalwtI=
40-
github.com/riverqueue/river/riverdriver v0.25.0 h1:RkvBWBlybYGaU1DoQ/mSwnWp1hm0FfS8yyksr/dM5tI=
41-
github.com/riverqueue/river/riverdriver v0.25.0/go.mod h1:p2Jvr1N6NfPA+ngIKK8urqxG2vmusX4jO7g/UH/soQY=
42-
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.25.0 h1:Ed6dtSSwsj7VwbquG6Bh+2+271sBOL6WyRbisY/XHiY=
43-
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.25.0/go.mod h1:h77bWaGJyA5GMKEKmANQN9mhsV3XWYt4sRUx6FtQa84=
44-
github.com/riverqueue/river/rivershared v0.25.0 h1:grjuTHJEVvi4srzcspQ2UXWjISxdqbubQl+9DDg3agQ=
45-
github.com/riverqueue/river/rivershared v0.25.0/go.mod h1:ZdVeOnT8X8PiAZRUfWHc+Ne6fNXqe1oYb2eioZb6URM=
46-
github.com/riverqueue/river/rivertype v0.25.0 h1:DPwd0DGqajLIv9zsB+BOwlum0D1/4Iiqz34+nwIZaZ0=
47-
github.com/riverqueue/river/rivertype v0.25.0/go.mod h1:9bbWVYkr1B/YzW43lUs/Vk/tEYqLrabrZWrtUWQ+Goo=
38+
github.com/riverqueue/river v0.25.1-0.20250930132154-eb7b19e2bbab h1:sSpVllioUosyszhIV4VgLNbt0YyTeBGZQ2jYxDqHsvI=
39+
github.com/riverqueue/river v0.25.1-0.20250930132154-eb7b19e2bbab/go.mod h1:KetN5MQQu9IjtganQrIt0OFubweeh+qkAqJaCdalwtI=
40+
github.com/riverqueue/river/riverdriver v0.25.1-0.20250930132154-eb7b19e2bbab h1:Hdrw3Iz1pY0OxZKRCPPz87z7r9gUI8t5+HbQsMQtbiQ=
41+
github.com/riverqueue/river/riverdriver v0.25.1-0.20250930132154-eb7b19e2bbab/go.mod h1:p2Jvr1N6NfPA+ngIKK8urqxG2vmusX4jO7g/UH/soQY=
42+
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.25.1-0.20250930132154-eb7b19e2bbab h1:nT4VUiZHO1p91+MAZ+RMzoCVEpmzCnRfNBp7RY0OYFE=
43+
github.com/riverqueue/river/riverdriver/riverpgxv5 v0.25.1-0.20250930132154-eb7b19e2bbab/go.mod h1:h77bWaGJyA5GMKEKmANQN9mhsV3XWYt4sRUx6FtQa84=
44+
github.com/riverqueue/river/rivershared v0.25.1-0.20250930132154-eb7b19e2bbab h1:7+0DQgJpSe69I9fqzzLQZhglvxBkCBHGD1dhHz2EG0w=
45+
github.com/riverqueue/river/rivershared v0.25.1-0.20250930132154-eb7b19e2bbab/go.mod h1:ZdVeOnT8X8PiAZRUfWHc+Ne6fNXqe1oYb2eioZb6URM=
46+
github.com/riverqueue/river/rivertype v0.25.1-0.20250930132154-eb7b19e2bbab h1:NDoNQetGP4bA1wmZ8zdU156LDANUB1IkyF0hkvukDpI=
47+
github.com/riverqueue/river/rivertype v0.25.1-0.20250930132154-eb7b19e2bbab/go.mod h1:9bbWVYkr1B/YzW43lUs/Vk/tEYqLrabrZWrtUWQ+Goo=
4848
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
4949
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
5050
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=

handler_api_endpoint_test.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ import (
1414
"github.com/riverqueue/apiframe/apitest"
1515
"github.com/riverqueue/apiframe/apitype"
1616
"github.com/riverqueue/river"
17+
"github.com/riverqueue/river/riverdbtest"
1718
"github.com/riverqueue/river/riverdriver"
19+
"github.com/riverqueue/river/riverdriver/riverpgxv5"
1820
"github.com/riverqueue/river/rivershared/riversharedtest"
1921
"github.com/riverqueue/river/rivershared/startstop"
2022
"github.com/riverqueue/river/rivershared/util/ptrutil"
2123
"github.com/riverqueue/river/rivertype"
2224

2325
"riverqueue.com/riverui/internal/apibundle"
24-
"riverqueue.com/riverui/internal/riverinternaltest"
2526
"riverqueue.com/riverui/internal/riverinternaltest/testfactory"
2627
"riverqueue.com/riverui/internal/uicommontest"
2728
)
@@ -37,12 +38,17 @@ func setupEndpoint[TEndpoint any](ctx context.Context, t *testing.T, initFunc fu
3738
t.Helper()
3839

3940
var (
40-
logger = riverinternaltest.Logger(t)
41-
client, driver = insertOnlyClient(t, logger)
42-
tx = riverinternaltest.TestTx(ctx, t)
43-
exec = driver.UnwrapExecutor(tx)
41+
logger = riversharedtest.Logger(t)
42+
driver = riverpgxv5.New(riversharedtest.DBPool(ctx, t))
43+
tx, _ = riverdbtest.TestTxWithDriver(ctx, t, driver, nil)
44+
exec = driver.UnwrapExecutor(tx)
4445
)
4546

47+
client, err := river.NewClient(driver, &river.Config{
48+
Logger: logger,
49+
})
50+
require.NoError(t, err)
51+
4652
endpoint := initFunc(apibundle.APIBundle[pgx.Tx]{
4753
Archetype: riversharedtest.BaseServiceArchetype(t),
4854
Client: client,
@@ -68,7 +74,7 @@ func setupEndpoint[TEndpoint any](ctx context.Context, t *testing.T, initFunc fu
6874
func testMountOpts(t *testing.T) *apiendpoint.MountOpts {
6975
t.Helper()
7076
return &apiendpoint.MountOpts{
71-
Logger: riverinternaltest.Logger(t),
77+
Logger: riversharedtest.Logger(t),
7278
Validator: apitype.NewValidator(),
7379
}
7480
}

handler_test.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package riverui
33
import (
44
"context"
55
"fmt"
6+
"log/slog"
67
"net/http"
78
"net/http/httptest"
89
"testing"
@@ -12,10 +13,12 @@ import (
1213

1314
"github.com/riverqueue/apiframe/apitype"
1415
"github.com/riverqueue/river"
16+
"github.com/riverqueue/river/riverdbtest"
1517
"github.com/riverqueue/river/riverdriver"
18+
"github.com/riverqueue/river/riverdriver/riverpgxv5"
19+
"github.com/riverqueue/river/rivershared/riversharedtest"
1620

1721
"riverqueue.com/riverui/internal/handlertest"
18-
"riverqueue.com/riverui/internal/riverinternaltest"
1922
"riverqueue.com/riverui/internal/riverinternaltest/testfactory"
2023
"riverqueue.com/riverui/internal/uicommontest"
2124
"riverqueue.com/riverui/uiendpoints"
@@ -24,7 +27,19 @@ import (
2427
func TestNewHandlerIntegration(t *testing.T) {
2528
t.Parallel()
2629

27-
createClient := insertOnlyClient
30+
createClient := func(ctx context.Context, tb testing.TB, logger *slog.Logger) (*river.Client[pgx.Tx], riverdriver.Driver[pgx.Tx], pgx.Tx) {
31+
tb.Helper()
32+
33+
driver := riverpgxv5.New(riversharedtest.DBPool(ctx, tb))
34+
tx, _ := riverdbtest.TestTxWithDriver(ctx, tb, driver, nil)
35+
36+
client, err := river.NewClient(driver, &river.Config{
37+
Logger: logger,
38+
})
39+
require.NoError(tb, err)
40+
41+
return client, driver, tx
42+
}
2843

2944
createBundle := func(client *river.Client[pgx.Tx], tx pgx.Tx) uiendpoints.Bundle {
3045
return NewEndpoints(client, &EndpointsOpts[pgx.Tx]{
@@ -35,7 +50,7 @@ func TestNewHandlerIntegration(t *testing.T) {
3550
createHandler := func(t *testing.T, bundle uiendpoints.Bundle) http.Handler {
3651
t.Helper()
3752

38-
logger := riverinternaltest.Logger(t)
53+
logger := riversharedtest.Logger(t)
3954
server, err := NewHandler(&HandlerOpts{
4055
DevMode: true,
4156
Endpoints: bundle,
@@ -105,7 +120,7 @@ func TestMountStaticFiles(t *testing.T) {
105120
t.Parallel()
106121

107122
var (
108-
logger = riverinternaltest.Logger(t)
123+
logger = riversharedtest.Logger(t)
109124
mux = http.NewServeMux()
110125
)
111126

internal/handlertest/handlertest.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,21 @@ import (
1313
"github.com/stretchr/testify/require"
1414

1515
"github.com/riverqueue/river/riverdriver"
16+
"github.com/riverqueue/river/rivershared/riversharedtest"
1617

17-
"riverqueue.com/riverui/internal/riverinternaltest"
1818
"riverqueue.com/riverui/uiendpoints"
1919
)
2020

2121
type APICallFunc = func(t *testing.T, testCaseName, method, path string, payload []byte)
2222

23-
func RunIntegrationTest[TClient any](t *testing.T, createClient func(t *testing.T, logger *slog.Logger) (TClient, riverdriver.Driver[pgx.Tx]), createBundle func(client TClient, tx pgx.Tx) uiendpoints.Bundle, createHandler func(t *testing.T, bundle uiendpoints.Bundle) http.Handler, testRunner func(exec riverdriver.Executor, makeAPICall APICallFunc)) {
23+
func RunIntegrationTest[TClient any](t *testing.T, createClient func(ctx context.Context, tb testing.TB, logger *slog.Logger) (TClient, riverdriver.Driver[pgx.Tx], pgx.Tx), createBundle func(client TClient, tx pgx.Tx) uiendpoints.Bundle, createHandler func(t *testing.T, bundle uiendpoints.Bundle) http.Handler, testRunner func(exec riverdriver.Executor, makeAPICall APICallFunc)) {
2424
t.Helper()
2525

2626
var (
27-
ctx = context.Background()
28-
logger = riverinternaltest.Logger(t)
29-
client, driver = createClient(t, logger)
30-
tx = riverinternaltest.TestTx(ctx, t)
31-
exec = driver.UnwrapExecutor(tx)
27+
ctx = t.Context()
28+
logger = riversharedtest.Logger(t)
29+
client, driver, tx = createClient(ctx, t, logger)
30+
exec = driver.UnwrapExecutor(tx)
3231
)
3332

3433
makeAPICall := func(t *testing.T, testCaseName, method, path string, payload []byte) {

internal/querycacher/query_cacher_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import (
77

88
"github.com/stretchr/testify/require"
99

10+
"github.com/riverqueue/river/riverdbtest"
1011
"github.com/riverqueue/river/riverdriver"
1112
"github.com/riverqueue/river/riverdriver/riverpgxv5"
1213
"github.com/riverqueue/river/rivershared/riversharedtest"
1314
"github.com/riverqueue/river/rivershared/startstoptest"
1415
"github.com/riverqueue/river/rivertype"
1516

16-
"riverqueue.com/riverui/internal/riverinternaltest"
1717
"riverqueue.com/riverui/internal/riverinternaltest/testfactory"
1818
)
1919

@@ -32,7 +32,7 @@ func TestQueryCacher(t *testing.T) {
3232
var (
3333
archetype = riversharedtest.BaseServiceArchetype(t)
3434
driver = riverpgxv5.New(nil)
35-
tx = riverinternaltest.TestTx(ctx, t)
35+
tx = riverdbtest.TestTxPgx(ctx, t)
3636
runQuery = func(ctx context.Context) (map[rivertype.JobState]int, error) {
3737
return driver.UnwrapExecutor(tx).JobCountByAllStates(ctx, &riverdriver.JobCountByAllStatesParams{Schema: ""})
3838
}

internal/riverinternaltest/riverinternaltest.go

Lines changed: 0 additions & 116 deletions
This file was deleted.

main_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package riverui
2+
3+
import (
4+
"testing"
5+
6+
"github.com/riverqueue/river/rivershared/riversharedtest"
7+
)
8+
9+
func TestMain(m *testing.M) {
10+
riversharedtest.WrapTestMain(m)
11+
}

0 commit comments

Comments
 (0)