File indexing completed on 2024-05-12 05:22:07

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #include <QObject>
0008 #include <QTest>
0009 
0010 #include "filesearchquery.h"
0011 
0012 using namespace KGAPI2;
0013 using namespace KGAPI2::Drive;
0014 
0015 Q_DECLARE_METATYPE(KGAPI2::Drive::FileSearchQuery)
0016 
0017 class FileSearchQueryTest : public QObject
0018 {
0019     Q_OBJECT
0020 public:
0021     explicit FileSearchQueryTest()
0022     {
0023     }
0024 
0025     ~FileSearchQueryTest() override
0026     {
0027     }
0028 
0029 private Q_SLOTS:
0030     void testFileSearchQuery_data()
0031     {
0032         QTest::addColumn<FileSearchQuery>("query");
0033         QTest::addColumn<QString>("expected");
0034 
0035         {
0036             FileSearchQuery query;
0037             query.addQuery(FileSearchQuery::Title, FileSearchQuery::Contains, QLatin1StringView("Some String"));
0038             QTest::newRow("simple") << query << "((title contains 'Some String'))";
0039         }
0040 
0041         {
0042             FileSearchQuery query;
0043             query.addQuery(FileSearchQuery::Title, FileSearchQuery::Equals, QLatin1StringView("Title"));
0044             query.addQuery(FileSearchQuery::MimeType, FileSearchQuery::Contains, QLatin1StringView("text/plain"));
0045             QTest::newRow("A and B") << query << "((title = 'Title') and (mimeType contains 'text/plain'))";
0046         }
0047 
0048         {
0049             FileSearchQuery query(FileSearchQuery::Or);
0050             query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, true);
0051             query.addQuery(FileSearchQuery::Writers, FileSearchQuery::In, QLatin1StringView("user@gmail.com"));
0052             QTest::newRow("A or B") << query << "((trashed = true) or ('user@gmail.com' in writers))";
0053         }
0054 
0055         {
0056             FileSearchQuery query(FileSearchQuery::Or);
0057             query.addQuery(FileSearchQuery::ModifiedDate, FileSearchQuery::Equals, QDateTime(QDate(2014, 07, 28), QTime(17, 05, 30), QTimeZone::UTC));
0058             FileSearchQuery subquery;
0059             subquery.addQuery(FileSearchQuery::Title, FileSearchQuery::Equals, QLatin1StringView("Test"));
0060             subquery.addQuery(FileSearchQuery::Title, FileSearchQuery::NotEquals, QLatin1StringView("File"));
0061             query.addQuery(subquery);
0062             QTest::newRow("A or (B and C)") << query << "((modifiedDate = '2014-07-28T17:05:30') or ((title = 'Test') and (title != 'File')))";
0063         }
0064     }
0065 
0066     void testFileSearchQuery()
0067     {
0068         QFETCH(FileSearchQuery, query);
0069         QFETCH(QString, expected);
0070 
0071         const QString serialized = query.serialize();
0072         QCOMPARE(serialized, expected);
0073     }
0074 };
0075 
0076 QTEST_GUILESS_MAIN(FileSearchQueryTest)
0077 
0078 #include "filesearchquerytest.moc"