Warning, /frameworks/kirigami/autotests/tst_inlinemessage.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 QtTest
0009 import org.kde.kirigami as Kirigami
0010
0011 TestCase {
0012 id: testCase
0013
0014 name: "InlineMessageTests"
0015 when: windowShown
0016
0017 width: 300
0018 height: 300
0019 visible: true
0020
0021 Component {
0022 id: inlineMessageComponent
0023 Kirigami.InlineMessage {
0024 id: message
0025
0026 readonly property SignalSpy linkHoveredSpy: SignalSpy {
0027 target: message
0028 signalName: "linkHovered"
0029 }
0030 readonly property SignalSpy linkActivatedSpy: SignalSpy {
0031 target: message
0032 signalName: "linkActivated"
0033 }
0034
0035 anchors {
0036 top: parent.top
0037 left: parent.left
0038 right: parent.right
0039 }
0040 visible: true
0041 }
0042 }
0043
0044 function hoverAll(item: Item, /*predicate*/ until) {
0045 for (let x = 0; x < item.width; x += 10) {
0046 for (let y = 0; y < item.height; y += 10) {
0047 mouseMove(item, x, y);
0048 if (until()) {
0049 return Qt.point(x, y);
0050 }
0051 }
0052 }
0053 return null;
0054 }
0055
0056 function test_link() {
0057 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")
0058 const href = "some";
0059 const message = createTemporaryObject(inlineMessageComponent, this, {
0060 text: `<a href="${href}">link</a>`,
0061 });
0062 verify(message);
0063 verify(message.linkHoveredSpy.valid);
0064 verify(message.linkActivatedSpy.valid);
0065
0066 const point = hoverAll(message, () => message.hoveredLink === href);
0067 verify(point !== null);
0068 compare(message.linkHoveredSpy.count, 1);
0069 const hoveredLink = message.linkHoveredSpy.signalArguments[0][0];
0070 compare(hoveredLink, href);
0071
0072 mouseClick(message, point.x, point.y);
0073 compare(message.linkActivatedSpy.count, 1);
0074 const activatedLink = message.linkActivatedSpy.signalArguments[0][0];
0075 compare(activatedLink, href);
0076 }
0077
0078 function test_hoveredLink_is_readonly() {
0079 const message = createTemporaryObject(inlineMessageComponent, this);
0080 verify(message);
0081 compare(message.hoveredLink, "");
0082 let failed = false;
0083 try {
0084 message.hoveredLink = "something";
0085 } catch (e) {
0086 failed = true;
0087 }
0088 verify(failed);
0089 }
0090 }