feat(eventsub): implement automod message hold (#6005)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "common/Literals.hpp"
|
||||
#include "controllers/accounts/AccountController.hpp"
|
||||
#include "controllers/highlights/HighlightController.hpp"
|
||||
#include "lib/Snapshot.hpp"
|
||||
#include "messages/Message.hpp"
|
||||
#include "mocks/BaseApplication.hpp"
|
||||
@@ -62,12 +63,34 @@ const std::map<QString, std::string_view, QCompareCaseInsensitive>
|
||||
"cost": 0
|
||||
})",
|
||||
},
|
||||
{
|
||||
"automod-message-hold",
|
||||
R"({
|
||||
"id": "a3122e32-6498-4847-8675-109b9b94f29c",
|
||||
"status": "enabled",
|
||||
"type": "automod.message.hold",
|
||||
"version": "2",
|
||||
"condition": {
|
||||
"broadcaster_user_id": "489584266",
|
||||
"moderator_user_id": "489584266"
|
||||
},
|
||||
"transport": {
|
||||
"method":"websocket",
|
||||
"session_id":"AgoQ59RRLw0mS6S000QtK8f54BIGY2VsbC1j"
|
||||
},
|
||||
"created_at": "2025-02-28T15:55:37.85489173Z",
|
||||
"cost": 0
|
||||
})",
|
||||
},
|
||||
};
|
||||
|
||||
class MockApplication : public mock::BaseApplication
|
||||
{
|
||||
public:
|
||||
MockApplication() = default;
|
||||
MockApplication()
|
||||
: highlights(this->settings, &this->accounts)
|
||||
{
|
||||
}
|
||||
|
||||
ILogging *getChatLogger() override
|
||||
{
|
||||
@@ -84,9 +107,15 @@ public:
|
||||
return &this->accounts;
|
||||
}
|
||||
|
||||
HighlightController *getHighlights() override
|
||||
{
|
||||
return &this->highlights;
|
||||
}
|
||||
|
||||
mock::EmptyLogging logging;
|
||||
mock::MockTwitchIrcServer twitch;
|
||||
AccountController accounts;
|
||||
HighlightController highlights;
|
||||
};
|
||||
|
||||
std::shared_ptr<TwitchChannel> makeMockTwitchChannel(const QString &name)
|
||||
|
||||
@@ -578,3 +578,38 @@ TEST(Helpers, chronoToQDateTime)
|
||||
ASSERT_EQ(qPointSinceEpoch.toString(Qt::ISODateWithMs),
|
||||
"2025-02-26T12:49:49.131Z");
|
||||
}
|
||||
|
||||
TEST(Helpers, codepointSlice)
|
||||
{
|
||||
ASSERT_EQ(codepointSlice(u"", 0, 0), u"");
|
||||
ASSERT_EQ(codepointSlice(u"", 0, 1), u"");
|
||||
ASSERT_EQ(codepointSlice(u"", 1, 1), u"");
|
||||
ASSERT_EQ(codepointSlice(u"", -1, 1), u"");
|
||||
|
||||
ASSERT_EQ(codepointSlice(u"a", 0, 0), u"");
|
||||
ASSERT_EQ(codepointSlice(u"a", 0, 1), u"a");
|
||||
ASSERT_EQ(codepointSlice(u"a", 0, 2), u"");
|
||||
ASSERT_EQ(codepointSlice(u"a", -1, 1), u"");
|
||||
|
||||
ASSERT_EQ(codepointSlice(u"abcd", 1, 3), u"bc");
|
||||
ASSERT_EQ(codepointSlice(u"abcd", 0, 3), u"abc");
|
||||
ASSERT_EQ(codepointSlice(u"abcd", 1, 4), u"bcd");
|
||||
ASSERT_EQ(codepointSlice(u"abcd", 0, 4), u"abcd");
|
||||
ASSERT_EQ(codepointSlice(u"abcd", 0, 5), u"");
|
||||
ASSERT_EQ(codepointSlice(u"abcd", 5, 0), u"");
|
||||
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 1, 3), u"🍟🥚");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 0, 3), u"🍩🍟🥚");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 0, 9),
|
||||
u"🍩🍟🥚🍳🌮🍞🌭🥞🍳");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 3, 9), u"🍳🌮🍞🌭🥞🍳");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 3, 10), u"");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 3, 8), u"🍳🌮🍞🌭🥞");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 3, 7), u"🍳🌮🍞🌭");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟🥚🍳🌮🍞🌭🥞🍳", 3, 4), u"🍳");
|
||||
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟\xD83E\xDD5A", 0, 3), u"🍩🍟🥚");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟\xD83E\xDD5A", 0, 4), u"");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟\xD83E", 0, 3), u"🍩🍟\xD83E");
|
||||
ASSERT_EQ(codepointSlice(u"🍩🍟\xD83E🥚", 0, 4), u"🍩🍟\xD83E🥚");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user