File indexing completed on 2024-05-12 16:23:46
0001 /* ============================================================ 0002 * Falkon - Qt web browser 0003 * Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com> 0004 * 0005 * This program is free software: you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation, either version 3 of the License, or 0008 * (at your option) any later version. 0009 * 0010 * This program is distributed in the hope that it will be useful, 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0013 * GNU General Public License for more details. 0014 * 0015 * You should have received a copy of the GNU General Public License 0016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0017 * ============================================================ */ 0018 #include "qmlbookmarksapitest.h" 0019 #include "autotests.h" 0020 #include "mainapplication.h" 0021 #include "bookmarks.h" 0022 #include "qml/api/bookmarks/qmlbookmarktreenode.h" 0023 0024 void QmlBookmarksApiTest::initTestCase() 0025 { 0026 } 0027 0028 void QmlBookmarksApiTest::cleanupTestCase() 0029 { 0030 } 0031 0032 void QmlBookmarksApiTest::testBookmarkTreeNodeType() 0033 { 0034 auto type = BookmarkItem::Type(m_testHelper.evaluate(QSL("Falkon.Bookmarks.rootItem().type")).toInt()); 0035 QCOMPARE(mApp->bookmarks()->rootItem()->type(), type); 0036 0037 type = BookmarkItem::Type(m_testHelper.evaluate(QSL("Falkon.Bookmarks.toolbarFolder().type")).toInt()); 0038 QCOMPARE(mApp->bookmarks()->toolbarFolder()->type(), type); 0039 } 0040 0041 void QmlBookmarksApiTest::testBookmarkTreeNode() 0042 { 0043 QObject *bookmark = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks.toolbarFolder()")); 0044 QVERIFY(bookmark); 0045 auto toolbarFolder = mApp->bookmarks()->toolbarFolder(); 0046 0047 QCOMPARE(toolbarFolder->title(), bookmark->property("title").toString()); 0048 QCOMPARE(toolbarFolder->urlString(), bookmark->property("url").toString()); 0049 QCOMPARE(toolbarFolder->description(), bookmark->property("description").toString()); 0050 QCOMPARE(!mApp->bookmarks()->canBeModified(toolbarFolder), bookmark->property("unmodifiable").toBool()); 0051 auto* parent = qvariant_cast<QObject*>(bookmark->property("parent")); 0052 QVERIFY(parent); 0053 QCOMPARE(mApp->bookmarks()->rootItem()->title(), parent->property("title").toString()); 0054 } 0055 0056 void QmlBookmarksApiTest::testBookmarksCreation() 0057 { 0058 auto item = new BookmarkItem(BookmarkItem::Url); 0059 item->setTitle(QSL("Example Domain")); 0060 item->setUrl(QUrl(QSL("https://example.com/"))); 0061 item->setDescription(QSL("Testing bookmark description")); 0062 0063 QObject *qmlBookmarks = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks")); 0064 QVERIFY(qmlBookmarks); 0065 0066 QSignalSpy qmlBookmarksSpy(qmlBookmarks, SIGNAL(created(QmlBookmarkTreeNode*))); 0067 mApp->bookmarks()->addBookmark(mApp->bookmarks()->toolbarFolder(), item); 0068 0069 QCOMPARE(qmlBookmarksSpy.count(), 1); 0070 0071 auto *created = qvariant_cast<QObject*>(qmlBookmarksSpy.at(0).at(0)); 0072 QVERIFY(created); 0073 QCOMPARE(item->title(), created->property("title").toString()); 0074 0075 qRegisterMetaType<BookmarkItem*>(); 0076 QSignalSpy bookmarksSpy(mApp->bookmarks(), &Bookmarks::bookmarkAdded); 0077 0078 auto out = m_testHelper.evaluate(QL1S("Falkon.Bookmarks.create({" 0079 " parent: Falkon.Bookmarks.toolbarFolder()," 0080 " title: 'Example Plugin'," 0081 " url: 'https://another-example.com'" 0082 "});")); 0083 QVERIFY(out.toBool()); 0084 0085 QCOMPARE(bookmarksSpy.count(), 1); 0086 auto* createdItem = qvariant_cast<BookmarkItem*>(bookmarksSpy.at(0).at(0)); 0087 QVERIFY(createdItem); 0088 QCOMPARE(createdItem->title(), QSL("Example Plugin")); 0089 } 0090 0091 void QmlBookmarksApiTest::testBookmarksExistence() 0092 { 0093 // in continuation from testBookmarksCreation 0094 0095 auto result = m_testHelper.evaluate(QSL("Falkon.Bookmarks.isBookmarked('https://example.com/')")).toBool(); 0096 QVERIFY(result); 0097 QCOMPARE(mApp->bookmarks()->isBookmarked(QUrl(QSL("https://example.com/"))), result); 0098 } 0099 0100 void QmlBookmarksApiTest::testBookmarksModification() 0101 { 0102 // in continuation from testBookmarksExistence 0103 0104 QObject *qmlBookmarks = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks")); 0105 QVERIFY(qmlBookmarks); 0106 0107 QSignalSpy qmlBookmarksSpy(qmlBookmarks, SIGNAL(changed(QmlBookmarkTreeNode*))); 0108 BookmarkItem* item = mApp->bookmarks()->searchBookmarks(QSL("https://example.com/")).at(0); 0109 item->setTitle(QSL("Modified Example Domain")); 0110 mApp->bookmarks()->changeBookmark(item); 0111 0112 QCOMPARE(qmlBookmarksSpy.count(), 1); 0113 0114 auto *modified = qvariant_cast<QObject*>(qmlBookmarksSpy.at(0).at(0)); 0115 QVERIFY(modified); 0116 QCOMPARE(modified->property("title").toString(), QSL("Modified Example Domain")); 0117 0118 qRegisterMetaType<BookmarkItem*>(); 0119 QSignalSpy bookmarksSpy(mApp->bookmarks(), &Bookmarks::bookmarkChanged); 0120 0121 auto out = m_testHelper.evaluate(QL1S("Falkon.Bookmarks.update(Falkon.Bookmarks.get('https://another-example.com'),{" 0122 " title: 'Modified Example Plugin'" 0123 "})")); 0124 QVERIFY(out.toBool()); 0125 0126 QCOMPARE(bookmarksSpy.count(), 1); 0127 auto* modifiedItem = qvariant_cast<BookmarkItem*>(bookmarksSpy.at(0).at(0)); 0128 QVERIFY(modifiedItem); 0129 QCOMPARE(modifiedItem->title(), QSL("Modified Example Plugin")); 0130 } 0131 0132 void QmlBookmarksApiTest::testBookmarksRemoval() 0133 { 0134 // in continuation from testBookmarksModification 0135 0136 QObject *qmlBookmarks = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks")); 0137 QVERIFY(qmlBookmarks); 0138 0139 QSignalSpy qmlBookmarksSpy(qmlBookmarks, SIGNAL(removed(QmlBookmarkTreeNode*))); 0140 BookmarkItem* item = mApp->bookmarks()->searchBookmarks(QSL("https://example.com/")).at(0); 0141 mApp->bookmarks()->removeBookmark(item); 0142 0143 QCOMPARE(qmlBookmarksSpy.count(), 1); 0144 0145 auto *removed = qvariant_cast<QObject*>(qmlBookmarksSpy.at(0).at(0)); 0146 QVERIFY(removed); 0147 QCOMPARE(removed->property("title").toString(), QSL("Modified Example Domain")); 0148 0149 qRegisterMetaType<BookmarkItem*>(); 0150 QSignalSpy bookmarksSpy(mApp->bookmarks(), &Bookmarks::bookmarkRemoved); 0151 0152 auto out = m_testHelper.evaluate(QSL("Falkon.Bookmarks.remove(Falkon.Bookmarks.get('https://another-example.com'))")); 0153 QVERIFY(out.toBool()); 0154 0155 QCOMPARE(bookmarksSpy.count(), 1); 0156 auto* removedItem = qvariant_cast<BookmarkItem*>(bookmarksSpy.at(0).at(0)); 0157 QVERIFY(removedItem); 0158 QCOMPARE(removedItem->title(), QSL("Modified Example Plugin")); 0159 } 0160 0161 FALKONTEST_MAIN(QmlBookmarksApiTest)