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 }