(t *testing.T)
| 1756 | } |
| 1757 | |
| 1758 | func 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 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…