Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2577476
matrix-room-list-test.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
matrix-room-list-test.cpp
View Options
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2023 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
<matrix-room-timeline.hpp>
#include
<matrix-sdk.hpp>
#include
<matrix-room-list.hpp>
#include
<matrix-room.hpp>
#include
<matrix-event.hpp>
#include
"test-model.hpp"
#include
"test-utils.hpp"
#include
"factory.hpp"
using
namespace
Kazv
;
using
namespace
Kazv
::
Factory
;
class
MatrixRoomListTest
:
public
QObject
{
Q_OBJECT
private
Q_SLOTS
:
void
testRoomList
();
void
testSorted
();
void
testSortedWithTag
();
void
testFilter
();
};
static
auto
tagEvent
=
Event
{
R
"
(
{
"content": {
"tags": {"m.favourite": {}}
},
"type": "m.tag"
}
)
"
_json
};
void
MatrixRoomListTest::testRoomList
()
{
auto
model
=
makeTestModel
();
RoomModel
room
;
room
.
roomId
=
"!test:tusooa.xyz"
;
room
.
accountData
=
room
.
accountData
.
set
(
"m.tag"
,
tagEvent
);
model
.
client
.
roomList
.
rooms
=
model
.
client
.
roomList
.
rooms
.
set
(
room
.
roomId
,
room
);
std
::
unique_ptr
<
MatrixSdk
>
sdk
{
makeTestSdk
(
model
)};
auto
roomList
=
toUniquePtr
(
sdk
->
roomList
());
QCOMPARE
(
roomList
->
count
(),
2
);
roomList
->
setTagId
(
"m.favourite"
);
QCOMPARE
(
roomList
->
count
(),
1
);
roomList
->
setTagId
(
"u.xxx"
);
QCOMPARE
(
roomList
->
count
(),
0
);
}
void
MatrixRoomListTest::testSorted
()
{
auto
model
=
makeTestModel
();
model
.
client
=
makeClient
();
auto
room1
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
1000
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
2000
))
})
|
withRoomMembership
(
Join
)
);
auto
room2
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
700
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
1500
))
})
|
withRoomMembership
(
Join
)
);
auto
room3
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
1500
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
2500
))
})
|
withRoomMembership
(
Join
)
);
auto
room4
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
300
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
500
))
})
|
withRoomMembership
(
Invite
)
);
withRoom
(
room1
)(
model
.
client
);
withRoom
(
room2
)(
model
.
client
);
withRoom
(
room3
)(
model
.
client
);
withRoom
(
room4
)(
model
.
client
);
std
::
unique_ptr
<
MatrixSdk
>
sdk
{
makeTestSdk
(
model
)};
auto
roomList
=
toUniquePtr
(
sdk
->
roomList
());
QCOMPARE
(
roomList
->
roomIdAt
(
0
),
QString
::
fromStdString
(
room4
.
roomId
));
QCOMPARE
(
roomList
->
roomIdAt
(
1
),
QString
::
fromStdString
(
room3
.
roomId
));
QCOMPARE
(
roomList
->
roomIdAt
(
2
),
QString
::
fromStdString
(
room1
.
roomId
));
QCOMPARE
(
roomList
->
roomIdAt
(
3
),
QString
::
fromStdString
(
room2
.
roomId
));
}
void
MatrixRoomListTest::testSortedWithTag
()
{
auto
model
=
makeTestModel
();
model
.
client
=
makeClient
();
auto
room1
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
1000
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
2000
))
})
|
withRoomAccountData
({
tagEvent
})
);
auto
room2
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
700
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
1500
))
})
|
withRoomAccountData
({
tagEvent
})
);
auto
room3
=
makeRoom
(
withRoomTimeline
({
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
1500
)),
makeEvent
(
withEventKV
(
"/origin_server_ts"
_json_pointer
,
2500
))
})
|
withRoomAccountData
({
tagEvent
})
);
withRoom
(
room1
)(
model
.
client
);
withRoom
(
room2
)(
model
.
client
);
withRoom
(
room3
)(
model
.
client
);
std
::
unique_ptr
<
MatrixSdk
>
sdk
{
makeTestSdk
(
model
)};
auto
roomList
=
toUniquePtr
(
sdk
->
roomList
());
QCOMPARE
(
roomList
->
roomIdAt
(
0
),
QString
::
fromStdString
(
room3
.
roomId
));
QCOMPARE
(
roomList
->
roomIdAt
(
1
),
QString
::
fromStdString
(
room1
.
roomId
));
QCOMPARE
(
roomList
->
roomIdAt
(
2
),
QString
::
fromStdString
(
room2
.
roomId
));
}
void
MatrixRoomListTest::testFilter
()
{
auto
model
=
makeTestModel
();
model
.
client
=
makeClient
();
auto
room1
=
makeRoom
(
withRoomState
({
makeEvent
(
withStateKey
(
""
)
|
withEventType
(
"m.room.name"
)
|
withEventContent
(
json
{{
"name"
,
"some room"
}}))})
);
auto
room2
=
makeRoom
(
withRoomState
({
makeEvent
(
withStateKey
(
""
)
|
withEventType
(
"m.room.name"
)
|
withEventContent
(
json
{{
"name"
,
"some other room"
}}))})
);
auto
room3
=
makeRoom
(
withRoomId
(
"!some:example.org"
)
|
withRoomState
({
makeMemberEvent
(
withStateKey
(
"@foo:tusooa.xyz"
)
|
withEventKV
(
json
::
json_pointer
(
"/content/displayname"
),
"User aaa"
)),
makeMemberEvent
(
withStateKey
(
"@bar:tusooa.xyz"
)
|
withEventKV
(
json
::
json_pointer
(
"/content/displayname"
),
"User bbb"
)),
})
);
room3
.
heroIds
=
immer
::
flex_vector
<
std
::
string
>
{
"@foo:tusooa.xyz"
,
"@bar:tusooa.xyz"
};
withRoom
(
room1
)(
model
.
client
);
withRoom
(
room2
)(
model
.
client
);
withRoom
(
room3
)(
model
.
client
);
std
::
unique_ptr
<
MatrixSdk
>
sdk
{
makeTestSdk
(
model
)};
auto
roomList
=
toUniquePtr
(
sdk
->
roomList
());
roomList
->
setfilter
(
"some"
);
QCOMPARE
(
roomList
->
count
(),
2
);
QCOMPARE
(
roomList
->
roomIds
().
contains
(
QString
::
fromStdString
(
room2
.
roomId
)),
true
);
QCOMPARE
(
roomList
->
roomIds
().
contains
(
QString
::
fromStdString
(
room1
.
roomId
)),
true
);
roomList
->
setfilter
(
"!some:example.org"
);
QCOMPARE
(
roomList
->
count
(),
1
);
QCOMPARE
(
roomList
->
roomIdAt
(
0
),
QString
::
fromStdString
(
room3
.
roomId
));
roomList
->
setfilter
(
"foo"
);
QCOMPARE
(
roomList
->
count
(),
1
);
QCOMPARE
(
roomList
->
roomIdAt
(
0
),
QString
::
fromStdString
(
room3
.
roomId
));
roomList
->
setfilter
(
"aaa"
);
QCOMPARE
(
roomList
->
count
(),
1
);
QCOMPARE
(
roomList
->
roomIdAt
(
0
),
QString
::
fromStdString
(
room3
.
roomId
));
}
QTEST_MAIN
(
MatrixRoomListTest
)
#include
"matrix-room-list-test.moc"
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Tue, Jun 24, 8:00 AM (1 d, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
234769
Default Alt Text
matrix-room-list-test.cpp (6 KB)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment