Warning, /frameworks/kirigami/autotests/tst_dialogs.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Templates as T
0009 import org.kde.kirigami as Kirigami
0010 import QtTest
0011
0012 TestCase {
0013 name: "KirigamiDialogsTest"
0014 visible: true
0015 when: windowShown
0016
0017 width: 500
0018 height: 500
0019
0020 Component {
0021 id: dialogComponent
0022 Kirigami.Dialog {
0023 id: dialog
0024
0025 readonly property SignalSpy acceptedSpy: SignalSpy {
0026 target: dialog
0027 signalName: "accepted"
0028 }
0029 readonly property SignalSpy rejectedSpy: SignalSpy {
0030 target: dialog
0031 signalName: "rejected"
0032 }
0033 readonly property Kirigami.Action kActionA: Kirigami.Action {
0034 text: "Kirigami Action A"
0035 property int count: 0
0036 onTriggered: count += 1;
0037 }
0038 readonly property Kirigami.Action kActionB: Kirigami.Action {
0039 text: "Kirigami Action B"
0040 visible: false
0041 property int count: 0
0042 onTriggered: count += 1;
0043 }
0044 readonly property Kirigami.Action kActionC: Kirigami.Action {
0045 text: "Kirigami Action C"
0046 property int count: 0
0047 onTriggered: count += 1;
0048 }
0049
0050 title: "Dialog"
0051 preferredWidth: 400
0052 customFooterActions: [kActionA, kActionB, kActionC]
0053 }
0054 }
0055
0056 function test_footer_buttons() {
0057 const dialog = createTemporaryObject(dialogComponent, this, {
0058 standardButtons: T.Dialog.Ok | T.Dialog.Cancel,
0059 });
0060 verify(dialog);
0061 const { kActionA, kActionB, kActionC, acceptedSpy, rejectedSpy } = dialog;
0062 verify(acceptedSpy.valid);
0063 verify(rejectedSpy.valid);
0064
0065 dialog.open();
0066 tryCompare(dialog, "opened", true, Kirigami.Units.longDuration * 2);
0067
0068 const buttonOk = dialog.standardButton(T.Dialog.Ok);
0069 verify(buttonOk);
0070 mouseClick(buttonOk);
0071 compare(acceptedSpy.count, 1);
0072
0073 dialog.open();
0074 tryCompare(dialog, "opened", true, Kirigami.Units.longDuration * 2);
0075
0076 const buttonCancel = dialog.standardButton(T.Dialog.Cancel);
0077 verify(buttonCancel);
0078 mouseClick(buttonCancel);
0079 compare(rejectedSpy.count, 1);
0080
0081 dialog.open();
0082 tryCompare(dialog, "opened", true, Kirigami.Units.longDuration * 2);
0083
0084 const buttonA = dialog.customFooterButton(kActionA);
0085 verify(buttonA);
0086 mouseClick(buttonA);
0087 compare(kActionA.count, 1);
0088
0089 const buttonB = dialog.customFooterButton(kActionB);
0090 verify(!buttonB);
0091
0092 const buttonC = dialog.customFooterButton(kActionC);
0093 verify(buttonC);
0094 mouseClick(buttonC);
0095 compare(kActionC.count, 1);
0096 }
0097
0098 Component {
0099 id: nullActionDialogComponent
0100 Kirigami.Dialog {
0101 id: dialog
0102
0103 readonly property SignalSpy acceptedSpy: SignalSpy {
0104 target: dialog
0105 signalName: "accepted"
0106 }
0107 readonly property SignalSpy rejectedSpy: SignalSpy {
0108 target: dialog
0109 signalName: "rejected"
0110 }
0111
0112 title: "Dialog"
0113 preferredWidth: 400
0114 visible: true
0115 }
0116 }
0117
0118 function test_null_footer_action() {
0119 const dialog = createTemporaryObject(nullActionDialogComponent, this);
0120 verify(dialog);
0121
0122 compare(dialog.customFooterActions.length, 0);
0123
0124 let button;
0125
0126 button = dialog.customFooterButton(null);
0127 verify(!button);
0128
0129 dialog.customFooterActions = [null];
0130
0131 button = dialog.customFooterButton(null);
0132 verify(!button);
0133 }
0134 }