MCPcopy
hub / github.com/pocketbase/pocketbase / TestBaseAppDBDualBuilder

Function TestBaseAppDBDualBuilder

core/base_test.go:404–478  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

402}
403
404func TestBaseAppDBDualBuilder(t *testing.T) {
405 t.Parallel()
406
407 app, _ := tests.NewTestApp()
408 defer app.Cleanup()
409
410 concurrentQueries := []string{}
411 nonconcurrentQueries := []string{}
412 app.ConcurrentDB().(*dbx.DB).QueryLogFunc = func(ctx context.Context, t time.Duration, sql string, rows *sql.Rows, err error) {
413 concurrentQueries = append(concurrentQueries, sql)
414 }
415 app.ConcurrentDB().(*dbx.DB).ExecLogFunc = func(ctx context.Context, t time.Duration, sql string, result sql.Result, err error) {
416 concurrentQueries = append(concurrentQueries, sql)
417 }
418 app.NonconcurrentDB().(*dbx.DB).QueryLogFunc = func(ctx context.Context, t time.Duration, sql string, rows *sql.Rows, err error) {
419 nonconcurrentQueries = append(nonconcurrentQueries, sql)
420 }
421 app.NonconcurrentDB().(*dbx.DB).ExecLogFunc = func(ctx context.Context, t time.Duration, sql string, result sql.Result, err error) {
422 nonconcurrentQueries = append(nonconcurrentQueries, sql)
423 }
424
425 type testQuery struct {
426 query string
427 isConcurrent bool
428 }
429
430 regularTests := []testQuery{
431 {" \n sEleCt 1", true},
432 {"With abc(x) AS (select 2) SELECT x FROM abc", true},
433 {"create table t1(x int)", false},
434 {"insert into t1(x) values(1)", false},
435 {"update t1 set x = 2", false},
436 {"delete from t1", false},
437 }
438
439 txTests := []testQuery{
440 {"select 3", false},
441 {" \n WITH abc(x) AS (select 4) SELECT x FROM abc", false},
442 {"create table t2(x int)", false},
443 {"insert into t2(x) values(1)", false},
444 {"update t2 set x = 2", false},
445 {"delete from t2", false},
446 }
447
448 for _, item := range regularTests {
449 _, err := app.DB().NewQuery(item.query).Execute()
450 if err != nil {
451 t.Fatalf("Failed to execute query %q error: %v", item.query, err)
452 }
453 }
454
455 app.RunInTransaction(func(txApp core.App) error {
456 for _, item := range txTests {
457 _, err := txApp.DB().NewQuery(item.query).Execute()
458 if err != nil {
459 t.Fatalf("Failed to execute query %q error: %v", item.query, err)
460 }
461 }

Callers

nothing calls this directly

Calls 8

CleanupMethod · 0.95
NewTestAppFunction · 0.92
ExecuteMethod · 0.80
NewQueryMethod · 0.80
ConcurrentDBMethod · 0.65
NonconcurrentDBMethod · 0.65
DBMethod · 0.65
RunInTransactionMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…