Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F325637
matrix-sticker-pack-test.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
4 KB
Referenced Files
None
Subscribers
None
matrix-sticker-pack-test.cpp
View Options
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include
<libkazv-config.hpp>
#include
<immer/config.hpp>
// https://github.com/arximboldi/immer/issues/168
#include
<memory>
#include
<QtTest>
#include
<lager/state.hpp>
#include
<base/event.hpp>
#include
<testfixtures/factory.hpp>
#include
"test-model.hpp"
#include
"test-utils.hpp"
#include
"matrix-sticker-pack-list.hpp"
#include
"matrix-sticker-pack.hpp"
#include
"matrix-sticker.hpp"
#include
"matrix-event.hpp"
#include
"matrix-sdk.hpp"
using
namespace
Kazv
;
using
namespace
Kazv
::
Factory
;
class
MatrixStickerPackTest
:
public
QObject
{
Q_OBJECT
private
Q_SLOTS
:
void
testStickerPack
();
void
testStickerPackList
();
void
testAddToPack
();
};
// https://github.com/Sorunome/matrix-doc/blob/soru/emotes/proposals/2545-emotes.md
static
auto
stickerPackEvent
=
Event
{
R
"
(
{
"content": {
"images": {
"myemote": {
"url": "mxc://example.org/blah"
},
"mysticker": {
"body": "my sticker",
"url": "mxc://example.org/sticker",
"usage": ["sticker"],
"info": {
"mimetype": "image/png"
}
}
},
"pack": {
"display_name": "Awesome Pack",
"usage": ["emoticon"]
}
},
"type": "im.ponies.user_emotes"
}
)
"
_json
};
void
MatrixStickerPackTest::testStickerPack
()
{
auto
sourceCursor
=
lager
::
make_state
(
MatrixStickerPackSource
{
MatrixStickerPackSource
::
AccountData
,
"im.ponies.user_emotes"
,
stickerPackEvent
,
},
lager
::
automatic_tag
{});
auto
stickerPack
=
toUniquePtr
(
new
MatrixStickerPack
(
sourceCursor
));
QCOMPARE
(
stickerPack
->
rowCount
(
QModelIndex
()),
2
);
QCOMPARE
(
stickerPack
->
count
(),
2
);
QVERIFY
(
stickerPack
->
hasShortCode
(
QStringLiteral
(
"myemote"
)));
QVERIFY
(
!
stickerPack
->
hasShortCode
(
QStringLiteral
(
"lolol"
)));
auto
sticker0
=
toUniquePtr
(
stickerPack
->
at
(
0
));
QCOMPARE
(
sticker0
->
shortCode
(),
QStringLiteral
(
"myemote"
));
QCOMPARE
(
sticker0
->
body
(),
QStringLiteral
(
"myemote"
));
QCOMPARE
(
sticker0
->
mxcUri
(),
QStringLiteral
(
"mxc://example.org/blah"
));
QCOMPARE
(
sticker0
->
info
(),
QJsonObject
());
QCOMPARE
(
sticker0
->
makeEventJson
(),
(
QJsonObject
{
{
"type"
,
"m.sticker"
},
{
"content"
,
QJsonObject
{
{
"body"
,
"myemote"
},
{
"url"
,
"mxc://example.org/blah"
},
{
"info"
,
QJsonObject
()},
}},
}));
auto
sticker1
=
toUniquePtr
(
stickerPack
->
at
(
1
));
QCOMPARE
(
sticker1
->
shortCode
(),
QStringLiteral
(
"mysticker"
));
QCOMPARE
(
sticker1
->
body
(),
QStringLiteral
(
"my sticker"
));
QCOMPARE
(
sticker1
->
mxcUri
(),
QStringLiteral
(
"mxc://example.org/sticker"
));
QCOMPARE
(
sticker1
->
info
(),
(
QJsonObject
{{
"mimetype"
,
"image/png"
}}));
QCOMPARE
(
sticker1
->
makeEventJson
(),
(
QJsonObject
{
{
"type"
,
"m.sticker"
},
{
"content"
,
QJsonObject
{
{
"body"
,
"my sticker"
},
{
"url"
,
"mxc://example.org/sticker"
},
{
"info"
,
QJsonObject
{{
"mimetype"
,
"image/png"
}}},
}},
}));
}
void
MatrixStickerPackTest::testStickerPackList
()
{
auto
model
=
makeClient
(
withAccountData
({
stickerPackEvent
}));
std
::
unique_ptr
<
MatrixSdk
>
sdk
{
makeTestSdk
(
SdkModel
{
model
})};
auto
stickerPackList
=
toUniquePtr
(
sdk
->
stickerPackList
());
QCOMPARE
(
stickerPackList
->
rowCount
(
QModelIndex
()),
1
);
QCOMPARE
(
stickerPackList
->
count
(),
1
);
auto
stickerPack
=
toUniquePtr
(
stickerPackList
->
at
(
0
));
QCOMPARE
(
stickerPack
->
count
(),
2
);
}
void
MatrixStickerPackTest::testAddToPack
()
{
using
namespace
nlohmann
::
literals
;
auto
sourceCursor
=
lager
::
make_state
(
MatrixStickerPackSource
{
MatrixStickerPackSource
::
AccountData
,
"im.ponies.user_emotes"
,
stickerPackEvent
,
},
lager
::
automatic_tag
{});
auto
stickerPack
=
toUniquePtr
(
new
MatrixStickerPack
(
sourceCursor
));
auto
contentJson
=
json
{
{
"url"
,
"mxc://example.org/someotheremote"
},
{
"info"
,
{{
"mimetype"
,
"image/png"
}}},
{
"body"
,
"some other emote"
},
};
auto
eventCursor
=
lager
::
make_constant
(
makeEvent
(
withEventContent
(
contentJson
)
));
auto
event
=
toUniquePtr
(
new
MatrixEvent
(
eventCursor
));
auto
newSource
=
stickerPack
->
addSticker
(
"someotheremote"
,
event
.
get
()).
template
value
<
MatrixStickerPackSource
>
();
auto
expected
=
sourceCursor
.
get
().
event
.
content
().
get
();
expected
[
"images"
][
"someotheremote"
]
=
contentJson
;
QVERIFY
(
newSource
.
event
.
content
().
get
()
==
expected
);
}
QTEST_MAIN
(
MatrixStickerPackTest
)
#include
"matrix-sticker-pack-test.moc"
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Thu, Apr 24, 4:18 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
91824
Default Alt Text
matrix-sticker-pack-test.cpp (4 KB)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment