Changeset View
Changeset View
Standalone View
Standalone View
src/tests/quick-tests/tst_RoomListViewItemDelegate.qml
| /* | /* | ||||
| * This file is part of kazv. | * This file is part of kazv. | ||||
| * SPDX-FileCopyrightText: 2023 tusooa <tusooa@kazv.moe> | * SPDX-FileCopyrightText: 2023 tusooa <tusooa@kazv.moe> | ||||
| * SPDX-License-Identifier: AGPL-3.0-or-later | * SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| */ | */ | ||||
| import QtQuick 2.3 | import QtQuick 2.3 | ||||
| import QtQuick.Layouts 1.15 | import QtQuick.Layouts 1.15 | ||||
| import QtTest 1.0 | import QtTest 1.0 | ||||
| import '../../contents/ui' as Kazv | import '../../contents/ui' as Kazv | ||||
| import 'test-helpers.js' as Helpers | import 'test-helpers.js' as JsHelpers | ||||
| import 'test-helpers' as TestHelpers | import 'test-helpers' as QmlHelpers | ||||
| import moe.kazv.mxc.kazv 0.0 as MK | import moe.kazv.mxc.kazv 0.0 as MK | ||||
| Item { | QmlHelpers.TestItem { | ||||
| id: item | id: item | ||||
| width: 800 | |||||
| height: 600 | |||||
| property var roomInvite: Helpers.factory.room({ | property var roomInvite: JsHelpers.factory.room({ | ||||
| membership: MK.MatrixRoom.Invite, | membership: MK.MatrixRoom.Invite, | ||||
| unreadNotificationCount: 0, | unreadNotificationCount: 0, | ||||
| }) | }) | ||||
| property var roomJoin: Helpers.factory.room({ | property var roomJoin: JsHelpers.factory.room({ | ||||
| membership: MK.MatrixRoom.Join, | membership: MK.MatrixRoom.Join, | ||||
| unreadNotificationCount: 0, | unreadNotificationCount: 0, | ||||
| }) | }) | ||||
| property var roomLeave: Helpers.factory.room({ | property var roomLeave: JsHelpers.factory.room({ | ||||
| membership: MK.MatrixRoom.Leave, | membership: MK.MatrixRoom.Leave, | ||||
| unreadNotificationCount: 0, | unreadNotificationCount: 0, | ||||
| }) | }) | ||||
| property var roomWithUnreadNotificationCount: Helpers.factory.room({ | property var roomWithUnreadNotificationCount: JsHelpers.factory.room({ | ||||
| membership: MK.MatrixRoom.Join, | membership: MK.MatrixRoom.Join, | ||||
| unreadNotificationCount: 2, | unreadNotificationCount: 2, | ||||
| }) | }) | ||||
| property var timelineUnread: QtObject { | property var timelineUnread: QtObject { | ||||
| property var count: 5 | property var count: 5 | ||||
| function at(i) { | function at(i) { | ||||
| if (i < 2) { | if (i < 2) { | ||||
| ▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | function at(i) { | ||||
| isLocalEcho: false, | isLocalEcho: false, | ||||
| sender: '@foo:example.org', | sender: '@foo:example.org', | ||||
| eventId: `$event${i}`, | eventId: `$event${i}`, | ||||
| readers: () => ({ count: 0 }), | readers: () => ({ count: 0 }), | ||||
| }; | }; | ||||
| } | } | ||||
| } | } | ||||
| property var l10n: Helpers.fluentMock | |||||
| property var matrixSdk: TestHelpers.MatrixSdkMock { | |||||
| property var userId: '@foo:example.org' | |||||
| } | |||||
| property var sdkVars: QtObject { | |||||
| property var userGivenNicknameMap: QtObject { | |||||
| property var map: ({ | |||||
| '@foo:example.com': 'something', | |||||
| }) | |||||
| } | |||||
| } | |||||
| property string testRoomId: 'room-test' | property string testRoomId: 'room-test' | ||||
| signal switchToRoomRequested(string roomId) | signal switchToRoomRequested(string roomId) | ||||
| SignalSpy { | SignalSpy { | ||||
| id: switchToRoomSpy | id: switchToRoomSpy | ||||
| target: item | target: item | ||||
| signalName: 'switchToRoomRequested' | signalName: 'switchToRoomRequested' | ||||
| Show All 13 Lines | ColumnLayout { | ||||
| Kazv.RoomListViewItemDelegate { | Kazv.RoomListViewItemDelegate { | ||||
| id: delegateLeave | id: delegateLeave | ||||
| item: roomLeave | item: roomLeave | ||||
| } | } | ||||
| Kazv.RoomListViewItemDelegate { | Kazv.RoomListViewItemDelegate { | ||||
| id: delegateRoom | id: delegateRoom | ||||
| item: Helpers.factory.room({ | item: JsHelpers.factory.room({ | ||||
| roomId: testRoomId | roomId: testRoomId | ||||
| }) | }) | ||||
| } | } | ||||
| Kazv.RoomListViewItemDelegate { | Kazv.RoomListViewItemDelegate { | ||||
| id: delegateRoomWithName | id: delegateRoomWithName | ||||
| item: QtObject { | item: QtObject { | ||||
| property var roomId: testRoomId | property var roomId: testRoomId | ||||
| Show All 40 Lines | ColumnLayout { | ||||
| } | } | ||||
| } | } | ||||
| TestCase { | TestCase { | ||||
| id: roomListViewItemDelegateTest | id: roomListViewItemDelegateTest | ||||
| name: 'RoomListViewItemDelegateTest' | name: 'RoomListViewItemDelegateTest' | ||||
| when: windowShown | when: windowShown | ||||
| function initTestCase() { | |||||
| item.matrixSdk.userId = '@foo:example.org'; | |||||
| item.sdkVars.userGivenNicknameMap.map = { | |||||
| '@foo:example.com': 'something', | |||||
| }; | |||||
| } | |||||
| function test_inviteIndicator() { | function test_inviteIndicator() { | ||||
| const indicator = findChild(delegateInvite, 'inviteIndicator'); | const indicator = findChild(delegateInvite, 'inviteIndicator'); | ||||
| verify(indicator); | verify(indicator); | ||||
| verify(indicator.visible); | verify(indicator.visible); | ||||
| const leaveIndicator = findChild(delegateInvite, 'leaveIndicator'); | const leaveIndicator = findChild(delegateInvite, 'leaveIndicator'); | ||||
| verify(leaveIndicator); | verify(leaveIndicator); | ||||
| verify(!leaveIndicator.visible); | verify(!leaveIndicator.visible); | ||||
| Show All 26 Lines | function test_lastUnreadMessage() { | ||||
| compare(delegateJoin.getLastUnreadMessage(timelineRead, timelineRead.count), undefined); | compare(delegateJoin.getLastUnreadMessage(timelineRead, timelineRead.count), undefined); | ||||
| } | } | ||||
| function test_returnRoom() { | function test_returnRoom() { | ||||
| compare(switchToRoomSpy.count, 0); | compare(switchToRoomSpy.count, 0); | ||||
| mouseClick(delegateRoom); | mouseClick(delegateRoom); | ||||
| tryCompare(switchToRoomSpy, 'count', 1); | tryCompare(switchToRoomSpy, 'count', 1); | ||||
| verify(Helpers.deepEqual(switchToRoomSpy.signalArguments[0], [testRoomId])); | verify(JsHelpers.deepEqual(switchToRoomSpy.signalArguments[0], [testRoomId])); | ||||
| } | } | ||||
| function test_roomName() { | function test_roomName() { | ||||
| compare( | compare( | ||||
| findChild(delegateRoomWithName, 'roomDisplayNameLabel').text, | findChild(delegateRoomWithName, 'roomDisplayNameLabel').text, | ||||
| l10n.get('room-list-view-room-item-title-name', { name: 'some name' })); | l10n.get('room-list-view-room-item-title-name', { name: 'some name' })); | ||||
| compare( | compare( | ||||
| Show All 19 Lines | |||||