Warning, /frameworks/kirigami/autotests/tst_placeholdermessage.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.Controls as QQC2 0009 import org.kde.kirigami as Kirigami 0010 import QtTest 0011 0012 TestCase { 0013 id: root 0014 0015 name: "PlaceholderMessageTest" 0016 visible: true 0017 when: windowShown 0018 0019 width: 300 0020 height: 300 0021 0022 Component { 0023 id: placeholderMessageComponent 0024 Kirigami.PlaceholderMessage { 0025 id: message 0026 0027 anchors.centerIn: parent 0028 width: parent.width - (Kirigami.Units.largeSpacing * 4) 0029 0030 readonly property SignalSpy linkHoveredSpy: SignalSpy { 0031 target: message 0032 signalName: "linkHovered" 0033 } 0034 readonly property SignalSpy linkActivatedSpy: SignalSpy { 0035 target: message 0036 signalName: "linkActivated" 0037 } 0038 } 0039 } 0040 0041 Component { 0042 id: helpfulMessageComponent 0043 Kirigami.PlaceholderMessage { 0044 id: message 0045 0046 property int count: 0 0047 0048 anchors.centerIn: parent 0049 width: parent.width - (Kirigami.Units.largeSpacing * 4) 0050 0051 helpfulAction: QQC2.Action { 0052 onTriggered: { 0053 message.count += 1 0054 } 0055 } 0056 } 0057 } 0058 0059 function hoverAll(item: Item, /*predicate: (x, y) => bool*/ until) { 0060 for (let x = 0; x < item.width; x += 10) { 0061 for (let y = 0; y < item.height; y += 10) { 0062 mouseMove(item, x, y); 0063 if (until(x, y)) { 0064 return Qt.point(x, y); 0065 } 0066 } 0067 } 0068 return null; 0069 } 0070 0071 function test_link() { 0072 skip("finding links by sweeping with the mouse cursor all over the place seems very unreliable, especially on FreeBSD and Windows TODO: find a better way to find links") 0073 const href = "some"; 0074 const message = createTemporaryObject(placeholderMessageComponent, this, { 0075 text: "Attention!", 0076 explanation: `<a href="${href}">link</a>`, 0077 }); 0078 verify(message); 0079 verify(message.linkHoveredSpy.valid); 0080 verify(message.linkActivatedSpy.valid); 0081 0082 const point = hoverAll(message, (x, y) => message.hoveredLink === href); 0083 verify(point !== null); 0084 compare(message.linkHoveredSpy.count, 1); 0085 const hoveredLink = message.linkHoveredSpy.signalArguments[0][0]; 0086 compare(hoveredLink, href); 0087 0088 mouseClick(message, point.x, point.y); 0089 compare(message.linkActivatedSpy.count, 1); 0090 const activatedLink = message.linkActivatedSpy.signalArguments[0][0]; 0091 compare(activatedLink, href); 0092 } 0093 0094 function test_action() { 0095 const message = createTemporaryObject(helpfulMessageComponent, this, { 0096 text: "Attention!", 0097 }); 0098 const point = hoverAll(message, (x, y) => { 0099 mouseClick(message, x, y); 0100 return message.count > 0; 0101 }); 0102 verify(point !== null); 0103 compare(message.count, 1); 0104 } 0105 0106 function test_disabled_action() { 0107 const message = createTemporaryObject(helpfulMessageComponent, this, { 0108 text: "Attention!", 0109 }); 0110 message.helpfulAction.enabled = false; 0111 const point = hoverAll(message, (x, y) => { 0112 mouseClick(message, x, y); 0113 return message.count > 0; 0114 }); 0115 verify(point === null); 0116 compare(message.count, 0); 0117 } 0118 0119 function test_null_action() { 0120 const message = createTemporaryObject(helpfulMessageComponent, this, { 0121 text: "Attention!", 0122 helpfulAction: null, 0123 }); 0124 const point = hoverAll(message, (x, y) => { 0125 mouseClick(message, x, y); 0126 return message.count > 0; 0127 }); 0128 verify(point === null); 0129 compare(message.count, 0); 0130 } 0131 }