Changeset View
Changeset View
Standalone View
Standalone View
src/tests/quick-tests/tst_CreateRoomPage.qml
| /* | /* | ||||
| * This file is part of kazv. | * This file is part of kazv. | ||||
| * SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe> | * SPDX-FileCopyrightText: 2024 tusooa <tusooa@kazv.moe> | ||||
| * SPDX-License-Identifier: AGPL-3.0-or-later | * SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| */ | */ | ||||
| import QtQuick 2.15 | import QtQuick 2.15 | ||||
| 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 mockHelper: TestHelpers.MockHelper {} | |||||
| property var l10n: Helpers.fluentMock | |||||
| property var matrixSdk: TestHelpers.MatrixSdkMock { | |||||
| property var createRoom: mockHelper.promise([ | |||||
| 'isPrivate', | |||||
| 'name', | |||||
| 'alias', | |||||
| 'invites', | |||||
| 'isDirect', | |||||
| 'allowFederate', | |||||
| 'topic', | |||||
| 'powerLevelContentOverride', | |||||
| 'preset', | |||||
| 'encrypted', | |||||
| ]) | |||||
| } | |||||
| property var sdkVars: ({}) | |||||
| Kazv.CreateRoomPage { | Kazv.CreateRoomPage { | ||||
| anchors.fill: parent | anchors.fill: parent | ||||
| id: createRoomPage | id: createRoomPage | ||||
| } | } | ||||
| TestCase { | TestCase { | ||||
| id: createRoomPageTest | id: createRoomPageTest | ||||
| name: 'CreateRoomPageTest' | name: 'CreateRoomPageTest' | ||||
| Show All 19 Lines | function test_createRoomPublic() { | ||||
| findChild(createRoomPage, 'roomNameInput').text = 'some name'; | findChild(createRoomPage, 'roomNameInput').text = 'some name'; | ||||
| findChild(createRoomPage, 'roomAliasInput').text = 'alias'; | findChild(createRoomPage, 'roomAliasInput').text = 'alias'; | ||||
| findChild(createRoomPage, 'roomTopicInput').text = 'some topic'; | findChild(createRoomPage, 'roomTopicInput').text = 'some topic'; | ||||
| const button = findChild(createRoomPage, 'createRoomButton'); | const button = findChild(createRoomPage, 'createRoomButton'); | ||||
| verify(button.enabled); | verify(button.enabled); | ||||
| mouseClick(button); | mouseClick(button); | ||||
| tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | ||||
| verify(Helpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | verify(JsHelpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | ||||
| isPrivate: false, | isPrivate: false, | ||||
| name: 'some name', | name: 'some name', | ||||
| alias: 'alias', | alias: 'alias', | ||||
| topic: 'some topic', | topic: 'some topic', | ||||
| invites: [], | invites: [], | ||||
| isDirect: false, | isDirect: false, | ||||
| allowFederate: true, | allowFederate: true, | ||||
| powerLevelContentOverride: {}, | powerLevelContentOverride: {}, | ||||
| preset: MK.MatrixSdk.PublicChat, | preset: MK.MatrixSdk.PublicChat, | ||||
| encrypted: false, | encrypted: false, | ||||
| })); | })); | ||||
| } | } | ||||
| function test_createRoomPrivate() { | function test_createRoomPrivate() { | ||||
| mouseClick(findChild(createRoomPage, 'typePrivateRadio')); | mouseClick(findChild(createRoomPage, 'typePrivateRadio')); | ||||
| findChild(createRoomPage, 'roomNameInput').text = 'some name'; | findChild(createRoomPage, 'roomNameInput').text = 'some name'; | ||||
| findChild(createRoomPage, 'roomAliasInput').text = 'alias'; | findChild(createRoomPage, 'roomAliasInput').text = 'alias'; | ||||
| findChild(createRoomPage, 'roomTopicInput').text = 'some topic'; | findChild(createRoomPage, 'roomTopicInput').text = 'some topic'; | ||||
| const button = findChild(createRoomPage, 'createRoomButton'); | const button = findChild(createRoomPage, 'createRoomButton'); | ||||
| verify(button.enabled); | verify(button.enabled); | ||||
| mouseClick(button); | mouseClick(button); | ||||
| tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | ||||
| verify(Helpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | verify(JsHelpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | ||||
| isPrivate: true, | isPrivate: true, | ||||
| name: 'some name', | name: 'some name', | ||||
| alias: 'alias', | alias: 'alias', | ||||
| topic: 'some topic', | topic: 'some topic', | ||||
| invites: [], | invites: [], | ||||
| isDirect: false, | isDirect: false, | ||||
| allowFederate: true, | allowFederate: true, | ||||
| powerLevelContentOverride: {}, | powerLevelContentOverride: {}, | ||||
| preset: MK.MatrixSdk.PrivateChat, | preset: MK.MatrixSdk.PrivateChat, | ||||
| encrypted: true, | encrypted: true, | ||||
| })); | })); | ||||
| } | } | ||||
| function test_createRoomDirect() { | function test_createRoomDirect() { | ||||
| mouseClick(findChild(createRoomPage, 'typeDirectRadio')); | mouseClick(findChild(createRoomPage, 'typeDirectRadio')); | ||||
| findChild(createRoomPage, 'roomNameInput').text = 'some name'; | findChild(createRoomPage, 'roomNameInput').text = 'some name'; | ||||
| findChild(createRoomPage, 'roomAliasInput').text = 'alias'; | findChild(createRoomPage, 'roomAliasInput').text = 'alias'; | ||||
| findChild(createRoomPage, 'roomTopicInput').text = 'some topic'; | findChild(createRoomPage, 'roomTopicInput').text = 'some topic'; | ||||
| const button = findChild(createRoomPage, 'createRoomButton'); | const button = findChild(createRoomPage, 'createRoomButton'); | ||||
| verify(button.enabled); | verify(button.enabled); | ||||
| mouseClick(button); | mouseClick(button); | ||||
| tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | ||||
| verify(Helpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | verify(JsHelpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | ||||
| isPrivate: true, | isPrivate: true, | ||||
| name: 'some name', | name: 'some name', | ||||
| alias: 'alias', | alias: 'alias', | ||||
| topic: 'some topic', | topic: 'some topic', | ||||
| invites: [], | invites: [], | ||||
| isDirect: false, | isDirect: false, | ||||
| allowFederate: true, | allowFederate: true, | ||||
| powerLevelContentOverride: {}, | powerLevelContentOverride: {}, | ||||
| Show All 15 Lines | function test_createRoomDirectInviteOne() { | ||||
| mouseClick(addInviteButton); | mouseClick(addInviteButton); | ||||
| tryVerify(() => addInviteInput.text === '', 1000); | tryVerify(() => addInviteInput.text === '', 1000); | ||||
| const button = findChild(createRoomPage, 'createRoomButton'); | const button = findChild(createRoomPage, 'createRoomButton'); | ||||
| verify(button.enabled); | verify(button.enabled); | ||||
| mouseClick(button); | mouseClick(button); | ||||
| tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | ||||
| verify(Helpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | verify(JsHelpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | ||||
| isPrivate: true, | isPrivate: true, | ||||
| name: 'some name', | name: 'some name', | ||||
| alias: 'alias', | alias: 'alias', | ||||
| topic: 'some topic', | topic: 'some topic', | ||||
| invites: ['@foo:example.org'], | invites: ['@foo:example.org'], | ||||
| isDirect: true, | isDirect: true, | ||||
| allowFederate: true, | allowFederate: true, | ||||
| powerLevelContentOverride: {}, | powerLevelContentOverride: {}, | ||||
| Show All 19 Lines | function test_createRoomDirectInviteMultiple() { | ||||
| mouseClick(addInviteButton); | mouseClick(addInviteButton); | ||||
| tryVerify(() => addInviteInput.text === '', 1000); | tryVerify(() => addInviteInput.text === '', 1000); | ||||
| const button = findChild(createRoomPage, 'createRoomButton'); | const button = findChild(createRoomPage, 'createRoomButton'); | ||||
| verify(button.enabled); | verify(button.enabled); | ||||
| mouseClick(button); | mouseClick(button); | ||||
| tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | ||||
| verify(Helpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | verify(JsHelpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | ||||
| isPrivate: true, | isPrivate: true, | ||||
| name: 'some name', | name: 'some name', | ||||
| alias: 'alias', | alias: 'alias', | ||||
| topic: 'some topic', | topic: 'some topic', | ||||
| invites: ['@foo:example.org', '@bar:example.org'], | invites: ['@foo:example.org', '@bar:example.org'], | ||||
| isDirect: false, | isDirect: false, | ||||
| allowFederate: true, | allowFederate: true, | ||||
| powerLevelContentOverride: {}, | powerLevelContentOverride: {}, | ||||
| Show All 35 Lines | function test_invite() { | ||||
| const label = findChild( | const label = findChild( | ||||
| findChild(createRoomPage, 'inviteUserItem_1'), | findChild(createRoomPage, 'inviteUserItem_1'), | ||||
| 'inviteUserIdLabel' | 'inviteUserIdLabel' | ||||
| ); | ); | ||||
| return label && label.text === '@baz:example.org' | return label && label.text === '@baz:example.org' | ||||
| }, 50000); | }, 50000); | ||||
| tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | tryVerify(() => item.matrixSdk.createRoom.calledTimes() === 1, 1000); | ||||
| verify(Helpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | verify(JsHelpers.deepEqual(item.matrixSdk.createRoom.lastArgs(), { | ||||
| isPrivate: false, | isPrivate: false, | ||||
| name: 'some name', | name: 'some name', | ||||
| alias: 'alias', | alias: 'alias', | ||||
| topic: 'some topic', | topic: 'some topic', | ||||
| invites: ['@foo:example.org', '@baz:example.org'], | invites: ['@foo:example.org', '@baz:example.org'], | ||||
| isDirect: false, | isDirect: false, | ||||
| allowFederate: true, | allowFederate: true, | ||||
| powerLevelContentOverride: {}, | powerLevelContentOverride: {}, | ||||
| Show All 26 Lines | |||||