MCPcopy
hub / github.com/pocketbase/pocketbase / TestRouterBinds

Function TestRouterBinds

plugins/jsvm/binds_test.go:1758–1856  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1756}
1757
1758func TestRouterBinds(t *testing.T) {
1759 app, _ := tests.NewTestApp()
1760 defer app.Cleanup()
1761
1762 result := &struct {
1763 RouteMiddlewareCalls int
1764 GlobalMiddlewareCalls int
1765 }{}
1766
1767 vmFactory := func() *goja.Runtime {
1768 vm := goja.New()
1769 BindCore(vm)
1770 BindApis(vm)
1771 vm.Set("$app", app)
1772 vm.Set("result", result)
1773 return vm
1774 }
1775
1776 pool := newPool(1, vmFactory)
1777
1778 vm := vmFactory()
1779 routerBinds(app, vm, pool)
1780
1781 _, err := vm.RunString(`
1782 routerAdd("GET", "/test", (e) => {
1783 result.routeMiddlewareCalls++;
1784 }, (e) => {
1785 result.routeMiddlewareCalls++;
1786 return e.next();
1787 })
1788
1789 // Promise is not technically supported as return result
1790 // but we try to resolve it at least for thrown errors
1791 routerAdd("GET", "/error", async (e) => {
1792 throw new ApiError(456, 'test', null)
1793 })
1794
1795 routerUse((e) => {
1796 result.globalMiddlewareCalls++;
1797
1798 return e.next();
1799 })
1800 `)
1801 if err != nil {
1802 t.Fatal(err)
1803 }
1804
1805 pbRouter, err := apis.NewRouter(app)
1806 if err != nil {
1807 t.Fatal(err)
1808 }
1809
1810 serveEvent := new(core.ServeEvent)
1811 serveEvent.App = app
1812 serveEvent.Router = pbRouter
1813 if err = app.OnServe().Trigger(serveEvent); err != nil {
1814 t.Fatal(err)
1815 }

Callers

nothing calls this directly

Calls 12

CleanupMethod · 0.95
NewTestAppFunction · 0.92
NewRouterFunction · 0.92
BindCoreFunction · 0.85
BindApisFunction · 0.85
newPoolFunction · 0.85
routerBindsFunction · 0.85
TriggerMethod · 0.80
BuildMuxMethod · 0.80
SetMethod · 0.65
OnServeMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…