From 21a519fdbe7e6a6d1a337b9bd39793b9a7bc3e5a Mon Sep 17 00:00:00 2001 From: krau <71133316+krau@users.noreply.github.com> Date: Mon, 24 Aug 2026 08:38:07 +0800 Subject: [PATCH] test(bot): added regression test for callback sender resolution --- client/bot/handlers/middleware_test.go | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 client/bot/handlers/middleware_test.go diff --git a/client/bot/handlers/middleware_test.go b/client/bot/handlers/middleware_test.go new file mode 100644 index 0000000..627885a --- /dev/null +++ b/client/bot/handlers/middleware_test.go @@ -0,0 +1,51 @@ +package handlers + +import ( + "testing" + + "github.com/celestix/gotgproto/ext" + "github.com/celestix/gotgproto/types" + "github.com/gotd/td/tg" +) + +func TestResponsibleUserID(t *testing.T) { + tests := []struct { + name string + update *ext.Update + want int64 + }{ + { + name: "callback query uses native user id", + update: &ext.Update{CallbackQuery: &tg.UpdateBotCallbackQuery{UserID: 42}}, + want: 42, + }, + { + name: "message resolves through entity map", + update: &ext.Update{ + EffectiveMessage: &types.Message{Message: &tg.Message{PeerID: &tg.PeerUser{UserID: 7}}}, + Entities: &tg.Entities{Users: map[int64]*tg.User{7: {ID: 7}}}, + }, + want: 7, + }, + { + name: "callback query ignores entity map", + update: &ext.Update{ + CallbackQuery: &tg.UpdateBotCallbackQuery{UserID: 9}, + Entities: &tg.Entities{Users: map[int64]*tg.User{8: {ID: 8}}}, + }, + want: 9, + }, + { + name: "unresolvable update yields zero", + update: &ext.Update{}, + want: 0, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := responsibleUserID(tt.update); got != tt.want { + t.Fatalf("responsibleUserID() = %d, want %d", got, tt.want) + } + }) + } +}