File indexing completed on 2024-05-12 16:23:40

0001 /*
0002  *  SPDX-FileCopyrightText: 2020 Jonah BrĂ¼chert <jbb@kaidan.im>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-only
0005  */
0006 
0007 #include <QtTest/QTest>
0008 #include <QSignalSpy>
0009 #include <QCoreApplication>
0010 #include <QStandardPaths>
0011 #include <QSqlQuery>
0012 
0013 #include "dbmanager.h"
0014 
0015 class DbManagerTest : public QObject
0016 {
0017     Q_OBJECT
0018 
0019 private Q_SLOTS:
0020     void initTestCase()
0021     {
0022         QCoreApplication::setOrganizationName(QStringLiteral("autotests"));
0023         QCoreApplication::setApplicationName(QStringLiteral("angelfish_dbmanagertest"));
0024         QDir dir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation));
0025         dir.mkpath(QStringLiteral("."));
0026 
0027         m_dbmanager = new DBManager();
0028     }
0029 
0030     void testAddBookmark()
0031     {
0032         QSignalSpy spy(m_dbmanager, &DBManager::databaseTableChanged);
0033         auto future = m_dbmanager->addBookmark({
0034             {QStringLiteral("url"), QStringLiteral("https://kde.org")},
0035             {QStringLiteral("title"), QStringLiteral("KDE")},
0036             {QStringLiteral("icon"), QStringLiteral("TESTDATA")}
0037         });
0038 
0039         QCoro::waitFor(future);
0040         QCOMPARE(spy.count(), 1);
0041     }
0042 
0043     void testAddToHistory()
0044     {
0045         QSignalSpy spy(m_dbmanager, &DBManager::databaseTableChanged);
0046         auto future = m_dbmanager->addToHistory({
0047             {QStringLiteral("url"), QStringLiteral("https://kde.org")},
0048             {QStringLiteral("title"), QStringLiteral("KDE")},
0049             {QStringLiteral("icon"), QStringLiteral("TESTDATA")}});
0050 
0051         QCoro::waitFor(future);
0052         QCOMPARE(spy.count(), 1);
0053     }
0054 
0055     void testLastVisited()
0056     {
0057         QSignalSpy spy(m_dbmanager, &DBManager::databaseTableChanged);
0058         auto future = m_dbmanager->updateLastVisited(QStringLiteral("https://kde.org"));
0059 
0060         // Will be updated in both tables
0061         QCoro::waitFor(future);
0062         QCOMPARE(spy.count(), 2);
0063     }
0064 
0065     void testRemoveBookmark()
0066     {
0067         QSignalSpy spy(m_dbmanager, &DBManager::databaseTableChanged);
0068         auto future = m_dbmanager->removeBookmark(QStringLiteral("https://kde.org"));
0069 
0070         QCoro::waitFor(future);
0071         QCOMPARE(spy.count(), 1);
0072     }
0073 
0074     void testRemoveFromHistory()
0075     {
0076         QSignalSpy spy(m_dbmanager, &DBManager::databaseTableChanged);
0077         auto future = m_dbmanager->removeBookmark(QStringLiteral("https://kde.org"));
0078 
0079         QCoro::waitFor(future);
0080         QCOMPARE(spy.count(), 1);
0081     }
0082 
0083 private:
0084     DBManager *m_dbmanager;
0085 };
0086 
0087 QTEST_GUILESS_MAIN(DbManagerTest);
0088 
0089 #include "dbmanagertest.moc"