Falkon Develop
Cross-platform Qt-based web browser
qmlbookmarksapitest.cpp
Go to the documentation of this file.
1/* ============================================================
2* Falkon - Qt web browser
3* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License as published by
7* the Free Software Foundation, either version 3 of the License, or
8* (at your option) any later version.
9*
10* This program is distributed in the hope that it will be useful,
11* but WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17* ============================================================ */
18#include "qmlbookmarksapitest.h"
19#include "autotests.h"
20#include "mainapplication.h"
21#include "bookmarks.h"
23
24void QmlBookmarksApiTest::initTestCase()
25{
26}
27
28void QmlBookmarksApiTest::cleanupTestCase()
29{
30}
31
32void QmlBookmarksApiTest::testBookmarkTreeNodeType()
33{
34 auto type = BookmarkItem::Type(m_testHelper.evaluate(QSL("Falkon.Bookmarks.rootItem().type")).toInt());
35 QCOMPARE(mApp->bookmarks()->rootItem()->type(), type);
36
37 type = BookmarkItem::Type(m_testHelper.evaluate(QSL("Falkon.Bookmarks.toolbarFolder().type")).toInt());
38 QCOMPARE(mApp->bookmarks()->toolbarFolder()->type(), type);
39}
40
41void QmlBookmarksApiTest::testBookmarkTreeNode()
42{
43 QObject *bookmark = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks.toolbarFolder()"));
44 QVERIFY(bookmark);
45 auto toolbarFolder = mApp->bookmarks()->toolbarFolder();
46
47 QCOMPARE(toolbarFolder->title(), bookmark->property("title").toString());
48 QCOMPARE(toolbarFolder->urlString(), bookmark->property("url").toString());
49 QCOMPARE(toolbarFolder->description(), bookmark->property("description").toString());
50 QCOMPARE(!mApp->bookmarks()->canBeModified(toolbarFolder), bookmark->property("unmodifiable").toBool());
51 auto* parent = qvariant_cast<QObject*>(bookmark->property("parent"));
52 QVERIFY(parent);
53 QCOMPARE(mApp->bookmarks()->rootItem()->title(), parent->property("title").toString());
54}
55
56void QmlBookmarksApiTest::testBookmarksCreation()
57{
58 auto item = new BookmarkItem(BookmarkItem::Url);
59 item->setTitle(QSL("Example Domain"));
60 item->setUrl(QUrl(QSL("https://example.com/")));
61 item->setDescription(QSL("Testing bookmark description"));
62
63 QObject *qmlBookmarks = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks"));
64 QVERIFY(qmlBookmarks);
65
66 QSignalSpy qmlBookmarksSpy(qmlBookmarks, SIGNAL(created(QmlBookmarkTreeNode*)));
67 mApp->bookmarks()->addBookmark(mApp->bookmarks()->toolbarFolder(), item);
68
69 QCOMPARE(qmlBookmarksSpy.count(), 1);
70
71 auto *created = qvariant_cast<QObject*>(qmlBookmarksSpy.at(0).at(0));
72 QVERIFY(created);
73 QCOMPARE(item->title(), created->property("title").toString());
74
75 qRegisterMetaType<BookmarkItem*>();
76 QSignalSpy bookmarksSpy(mApp->bookmarks(), &Bookmarks::bookmarkAdded);
77
78 auto out = m_testHelper.evaluate(QL1S("Falkon.Bookmarks.create({"
79 " parent: Falkon.Bookmarks.toolbarFolder(),"
80 " title: 'Example Plugin',"
81 " url: 'https://another-example.com'"
82 "});"));
83 QVERIFY(out.toBool());
84
85 QCOMPARE(bookmarksSpy.count(), 1);
86 auto* createdItem = qvariant_cast<BookmarkItem*>(bookmarksSpy.at(0).at(0));
87 QVERIFY(createdItem);
88 QCOMPARE(createdItem->title(), QSL("Example Plugin"));
89}
90
91void QmlBookmarksApiTest::testBookmarksExistence()
92{
93 // in continuation from testBookmarksCreation
94
95 auto result = m_testHelper.evaluate(QSL("Falkon.Bookmarks.isBookmarked('https://example.com/')")).toBool();
96 QVERIFY(result);
97 QCOMPARE(mApp->bookmarks()->isBookmarked(QUrl(QSL("https://example.com/"))), result);
98}
99
100void QmlBookmarksApiTest::testBookmarksModification()
101{
102 // in continuation from testBookmarksExistence
103
104 QObject *qmlBookmarks = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks"));
105 QVERIFY(qmlBookmarks);
106
107 QSignalSpy qmlBookmarksSpy(qmlBookmarks, SIGNAL(changed(QmlBookmarkTreeNode*)));
108 BookmarkItem* item = mApp->bookmarks()->searchBookmarks(QSL("https://example.com/")).at(0);
109 item->setTitle(QSL("Modified Example Domain"));
110 mApp->bookmarks()->changeBookmark(item);
111
112 QCOMPARE(qmlBookmarksSpy.count(), 1);
113
114 auto *modified = qvariant_cast<QObject*>(qmlBookmarksSpy.at(0).at(0));
115 QVERIFY(modified);
116 QCOMPARE(modified->property("title").toString(), QSL("Modified Example Domain"));
117
118 qRegisterMetaType<BookmarkItem*>();
119 QSignalSpy bookmarksSpy(mApp->bookmarks(), &Bookmarks::bookmarkChanged);
120
121 auto out = m_testHelper.evaluate(QL1S("Falkon.Bookmarks.update(Falkon.Bookmarks.get('https://another-example.com'),{"
122 " title: 'Modified Example Plugin'"
123 "})"));
124 QVERIFY(out.toBool());
125
126 QCOMPARE(bookmarksSpy.count(), 1);
127 auto* modifiedItem = qvariant_cast<BookmarkItem*>(bookmarksSpy.at(0).at(0));
128 QVERIFY(modifiedItem);
129 QCOMPARE(modifiedItem->title(), QSL("Modified Example Plugin"));
130}
131
132void QmlBookmarksApiTest::testBookmarksRemoval()
133{
134 // in continuation from testBookmarksModification
135
136 QObject *qmlBookmarks = m_testHelper.evaluateQObject(QSL("Falkon.Bookmarks"));
137 QVERIFY(qmlBookmarks);
138
139 QSignalSpy qmlBookmarksSpy(qmlBookmarks, SIGNAL(removed(QmlBookmarkTreeNode*)));
140 BookmarkItem* item = mApp->bookmarks()->searchBookmarks(QSL("https://example.com/")).at(0);
141 mApp->bookmarks()->removeBookmark(item);
142
143 QCOMPARE(qmlBookmarksSpy.count(), 1);
144
145 auto *removed = qvariant_cast<QObject*>(qmlBookmarksSpy.at(0).at(0));
146 QVERIFY(removed);
147 QCOMPARE(removed->property("title").toString(), QSL("Modified Example Domain"));
148
149 qRegisterMetaType<BookmarkItem*>();
150 QSignalSpy bookmarksSpy(mApp->bookmarks(), &Bookmarks::bookmarkRemoved);
151
152 auto out = m_testHelper.evaluate(QSL("Falkon.Bookmarks.remove(Falkon.Bookmarks.get('https://another-example.com'))"));
153 QVERIFY(out.toBool());
154
155 QCOMPARE(bookmarksSpy.count(), 1);
156 auto* removedItem = qvariant_cast<BookmarkItem*>(bookmarksSpy.at(0).at(0));
157 QVERIFY(removedItem);
158 QCOMPARE(removedItem->title(), QSL("Modified Example Plugin"));
159}
160
#define FALKONTEST_MAIN(Test)
Definition: autotests.h:23
void setTitle(const QString &title)
void bookmarkRemoved(BookmarkItem *item)
void bookmarkAdded(BookmarkItem *item)
void bookmarkChanged(BookmarkItem *item)
The class exposing the bookmark item to QML.
QObject * evaluateQObject(const QString &source)
QJSValue evaluate(const QString &source)
#define mApp
#define QL1S(x)
Definition: qzcommon.h:44
#define QSL(x)
Definition: qzcommon.h:40