MCPcopy
hub / github.com/gofiber/fiber / Test_App_ReloadViews_BlocksRenderUntilLoadCompletes

Function Test_App_ReloadViews_BlocksRenderUntilLoadCompletes

app_test.go:2221–2267  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2219}
2220
2221func Test_App_ReloadViews_BlocksRenderUntilLoadCompletes(t *testing.T) {
2222 t.Parallel()
2223 view := &blockingView{
2224 loadStarted: make(chan struct{}),
2225 loadRelease: make(chan struct{}),
2226 renderEntered: make(chan struct{}),
2227 }
2228 app := New(Config{Views: view})
2229 app.Get("/", func(c Ctx) error {
2230 return c.Render("home", nil)
2231 })
2232 handler := app.Handler()
2233
2234 reloadDone := make(chan error, 1)
2235 go func() {
2236 reloadDone <- app.ReloadViews()
2237 }()
2238
2239 <-view.loadStarted
2240
2241 renderDone := make(chan int, 1)
2242 go func() {
2243 renderDone <- runGetHandlerRequest(handler, "/")
2244 }()
2245
2246 select {
2247 case <-view.renderEntered:
2248 t.Fatal("render should wait until ReloadViews Load finishes")
2249 case <-time.After(20 * time.Millisecond):
2250 }
2251
2252 close(view.loadRelease)
2253
2254 select {
2255 case err := <-reloadDone:
2256 require.NoError(t, err)
2257 case <-time.After(time.Second):
2258 t.Fatal("reload did not finish")
2259 }
2260
2261 select {
2262 case status := <-renderDone:
2263 require.Equal(t, StatusOK, status)
2264 case <-time.After(time.Second):
2265 t.Fatal("render request did not finish")
2266 }
2267}
2268
2269func Test_App_ReloadViews_PanicUnlocksRender(t *testing.T) {
2270 t.Parallel()

Callers

nothing calls this directly

Calls 7

runGetHandlerRequestFunction · 0.85
HandlerMethod · 0.80
ReloadViewsMethod · 0.80
NewFunction · 0.70
GetMethod · 0.65
RenderMethod · 0.65
FatalMethod · 0.65

Tested by

no test coverage detected