From 5f0d89877d5aa39afa2934252153a44a59a93d29 Mon Sep 17 00:00:00 2001 From: Demian Date: Fri, 3 Nov 2023 00:21:13 +0100 Subject: [PATCH] tests: refactor middleware test cases --- bot_test.go | 99 ++++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 46 deletions(-) diff --git a/bot_test.go b/bot_test.go index 56d0063..8de89aa 100644 --- a/bot_test.go +++ b/bot_test.go @@ -374,10 +374,17 @@ func TestBotOnError(t *testing.T) { } func TestBotMiddleware(t *testing.T) { - t.Run("call order", func(t *testing.T) { + t.Run("calling order", func(t *testing.T) { var trace []string - mwTrace := func(name string) MiddlewareFunc { + handler := func(name string) HandlerFunc { + return func(c Context) error { + trace = append(trace, name) + return nil + } + } + + middleware := func(name string) MiddlewareFunc { return func(next HandlerFunc) HandlerFunc { return func(c Context) error { trace = append(trace, name+":in") @@ -392,85 +399,85 @@ func TestBotMiddleware(t *testing.T) { if err != nil { t.Fatal(err) } - b.Use(mwTrace("global-1"), mwTrace("global-2")) - b.Handle("/a", func(c Context) error { - trace = append(trace, "/a") - return nil - }, mwTrace("handler-1-a"), mwTrace("handler-2-a")) + b.Use(middleware("global1"), middleware("global2")) + b.Handle("/a", handler("/a"), middleware("handler1a"), middleware("handler2a")) group := b.Group() - group.Use(mwTrace("group-1"), mwTrace("group-2")) - - group.Handle("/b", func(c Context) error { - trace = append(trace, "/b") - return nil - }, mwTrace("handler-1-b")) - - b.ProcessUpdate(Update{Message: &Message{Text: "/a"}}) + group.Use(middleware("group1"), middleware("group2")) + group.Handle("/b", handler("/b"), middleware("handler1b")) - expectedOrder := []string{ - "global-1:in", "global-2:in", - "handler-1-a:in", "handler-2-a:in", + b.ProcessUpdate(Update{ + Message: &Message{Text: "/a"}, + }) + assert.Equal(t, []string{ + "global1:in", "global2:in", + "handler1a:in", "handler2a:in", "/a", - "handler-2-a:out", "handler-1-a:out", - "global-2:out", "global-1:out", - } - assert.Equal(t, expectedOrder, trace) + "handler2a:out", "handler1a:out", + "global2:out", "global1:out", + }, trace) trace = trace[:0] - b.ProcessUpdate(Update{Message: &Message{Text: "/b"}}) - expectedOrder = []string{ - "global-1:in", "global-2:in", - "group-1:in", "group-2:in", - "handler-1-b:in", + b.ProcessUpdate(Update{ + Message: &Message{Text: "/b"}, + }) + assert.Equal(t, []string{ + "global1:in", "global2:in", + "group1:in", "group2:in", + "handler1b:in", "/b", - "handler-1-b:out", - "group-2:out", "group-1:out", - "global-2:out", "global-1:out", - } - assert.Equal(t, expectedOrder, trace) + "handler1b:out", + "group2:out", "group1:out", + "global2:out", "global1:out", + }, trace) }) - fatalMiddleware := func(next HandlerFunc) HandlerFunc { + fatal := func(next HandlerFunc) HandlerFunc { return func(c Context) error { - t.Fatal("fatalMiddleware should not be called") + t.Fatal("fatal middleware should not be called") return nil } } - nopMiddleware := func(next HandlerFunc) HandlerFunc { - return func(c Context) error { return next(c) } + + nop := func(next HandlerFunc) HandlerFunc { + return func(c Context) error { + return next(c) + } } - t.Run("handler middleware is not clobbered when combined with global middleware", func(t *testing.T) { + t.Run("combining with global middleware", func(t *testing.T) { b, err := NewBot(Settings{Synchronous: true, Offline: true}) if err != nil { t.Fatal(err) } - // Pre-allocate middleware slice to make sure it has extra capacity after group-level middleware is added. + + // Pre-allocate middleware slice to make sure + // it has extra capacity after group-level middleware is added. b.group.middleware = make([]MiddlewareFunc, 0, 2) - b.Use(nopMiddleware) + b.Use(nop) - b.Handle("/a", func(c Context) error { return nil }, nopMiddleware) - b.Handle("/b", func(c Context) error { return nil }, fatalMiddleware) + b.Handle("/a", func(c Context) error { return nil }, nop) + b.Handle("/b", func(c Context) error { return nil }, fatal) b.ProcessUpdate(Update{Message: &Message{Text: "/a"}}) }) - t.Run("handler middleware is not clobbered when combined with group middleware", func(t *testing.T) { + t.Run("combining with group middleware", func(t *testing.T) { b, err := NewBot(Settings{Synchronous: true, Offline: true}) if err != nil { t.Fatal(err) } g := b.Group() - // Pre-allocate middleware slice to make sure it has extra capacity after group-level middleware is added. + // Pre-allocate middleware slice to make sure + // it has extra capacity after group-level middleware is added. g.middleware = make([]MiddlewareFunc, 0, 2) - g.Use(nopMiddleware) + g.Use(nop) - g.Handle("/a", func(c Context) error { return nil }, nopMiddleware) - g.Handle("/b", func(c Context) error { return nil }, fatalMiddleware) + g.Handle("/a", func(c Context) error { return nil }, nop) + g.Handle("/b", func(c Context) error { return nil }, fatal) b.ProcessUpdate(Update{Message: &Message{Text: "/a"}}) })