From f07b5d65c31233cc7fe3bf91fd04d830cc708dea Mon Sep 17 00:00:00 2001 From: Pawel Kosiec Date: Fri, 22 Sep 2023 13:52:33 +0200 Subject: [PATCH] Fix message assertion for Cloud Slack --- test/cloud-slack-dev-e2e/e2e_test.go | 8 ++++++-- test/commplatform/discord_tester.go | 15 +++++++++++++++ test/commplatform/generic.go | 2 ++ test/commplatform/slack_tester.go | 16 ++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/test/cloud-slack-dev-e2e/e2e_test.go b/test/cloud-slack-dev-e2e/e2e_test.go index a1204697d7..e47efd5f4d 100644 --- a/test/cloud-slack-dev-e2e/e2e_test.go +++ b/test/cloud-slack-dev-e2e/e2e_test.go @@ -349,9 +349,13 @@ func TestCloudSlackE2E(t *testing.T) { t.Log("Testing ping for not connected deployment #2") command = "ping" - expectedBlockMessage := notConnectedMessage(deployment2.ID, deployment2.Name) + expectedBlockMessage := notConnectedMessage(deployment2.Name, deployment2.ID) tester.PostMessageToBot(t, channel.ID(), fmt.Sprintf("%s --cluster-name %s", command, deployment2.Name)) - err = tester.WaitForLastInteractiveMessagePostedEqual(tester.BotUserID(), channel.ID(), expectedBlockMessage) + + renderedMsg := interactive.RenderMessage(tester.MDFormatter(), expectedBlockMessage) + renderedMsg = strings.Replace(renderedMsg, "\n", " ", -1) + renderedMsg = strings.TrimSuffix(renderedMsg, " ") + err = tester.WaitForLastInteractiveMessagePostedEqualWithCustomRender(tester.BotUserID(), channel.ID(), renderedMsg) require.NoError(t, err) t.Log("Testing ping for not existing deployment") diff --git a/test/commplatform/discord_tester.go b/test/commplatform/discord_tester.go index 9a07b3c269..29aa8dcb84 100644 --- a/test/commplatform/discord_tester.go +++ b/test/commplatform/discord_tester.go @@ -93,6 +93,10 @@ func (d *DiscordTester) ThirdChannel() Channel { return d.thirdChannel } +func (d *DiscordTester) MDFormatter() interactive.MDFormatter { + return d.mdFormatter +} + func (d *DiscordTester) InitUsers(t *testing.T) { t.Helper() @@ -427,6 +431,17 @@ func (d *DiscordTester) WaitForLastInteractiveMessagePostedEqual(userID, channel }) } +func (d *DiscordTester) WaitForLastInteractiveMessagePostedEqualWithCustomRender(userID, channelID string, renderedMsg string) error { + return d.WaitForMessagePosted(userID, channelID, 1, func(msg string) (bool, int, string) { + if !strings.EqualFold(renderedMsg, msg) { + count := diff.CountMatchBlock(renderedMsg, msg) + msgDiff := diff.Diff(renderedMsg, msg) + return false, count, msgDiff + } + return true, 0, "" + }) +} + func (d *DiscordTester) findUserID(t *testing.T, name string) string { t.Logf("Getting user %q...", name) res, err := d.cli.GuildMembersSearch(d.cfg.GuildID, name, 50) diff --git a/test/commplatform/generic.go b/test/commplatform/generic.go index 9e74e23ff6..7ed8a54fc1 100644 --- a/test/commplatform/generic.go +++ b/test/commplatform/generic.go @@ -43,8 +43,10 @@ type BotDriver interface { BotName() string BotUserID() string TesterUserID() string + MDFormatter() interactive.MDFormatter WaitForInteractiveMessagePostedRecentlyEqual(userID string, channelID string, message interactive.CoreMessage) error WaitForLastInteractiveMessagePostedEqual(userID string, channelID string, message interactive.CoreMessage) error + WaitForLastInteractiveMessagePostedEqualWithCustomRender(userID, channelID string, renderedMsg string) error } type MessageAssertion func(content string) (bool, int, string) diff --git a/test/commplatform/slack_tester.go b/test/commplatform/slack_tester.go index 4767399b38..dc497a3e9e 100644 --- a/test/commplatform/slack_tester.go +++ b/test/commplatform/slack_tester.go @@ -134,6 +134,10 @@ func (s *SlackTester) ThirdChannel() Channel { return s.thirdChannel } +func (s *SlackTester) MDFormatter() interactive.MDFormatter { + return s.mdFormatter +} + func (s *SlackTester) PostInitialMessage(t *testing.T, channelName string) { t.Helper() t.Log("Posting welcome message...") @@ -361,6 +365,18 @@ func (s *SlackTester) WaitForLastInteractiveMessagePostedEqual(userID, channelID }) } +func (s *SlackTester) WaitForLastInteractiveMessagePostedEqualWithCustomRender(userID, channelID string, renderedMsg string) error { + return s.WaitForMessagePosted(userID, channelID, 1, func(msg string) (bool, int, string) { + msg = strings.NewReplacer("\n", "\n").Replace(msg) + if !strings.EqualFold(renderedMsg, msg) { + count := diff.CountMatchBlock(renderedMsg, msg) + msgDiff := diff.Diff(renderedMsg, msg) + return false, count, msgDiff + } + return true, 0, "" + }) +} + func (s *SlackTester) findUserID(t *testing.T, name string) string { t.Log("Getting users...") res, err := s.cli.GetUsers()