File indexing completed on 2024-05-12 05:22:07
0001 /* 0002 * SPDX-FileCopyrightText: 2019 David Barchiesi <david@barchie.si> 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 "teamdrivesearchquery.h" 0011 0012 using namespace KGAPI2; 0013 using namespace KGAPI2::Drive; 0014 0015 Q_DECLARE_METATYPE(KGAPI2::Drive::TeamdriveSearchQuery) 0016 0017 class TeamdriveSearchQueryTest : public QObject 0018 { 0019 Q_OBJECT 0020 public: 0021 explicit TeamdriveSearchQueryTest() 0022 { 0023 } 0024 0025 ~TeamdriveSearchQueryTest() override 0026 { 0027 } 0028 0029 private Q_SLOTS: 0030 void testTeamdriveSearchQuery_data() 0031 { 0032 QTest::addColumn<TeamdriveSearchQuery>("query"); 0033 QTest::addColumn<QString>("expected"); 0034 0035 { 0036 TeamdriveSearchQuery query; 0037 query.addQuery(TeamdriveSearchQuery::CreatedTime, TeamdriveSearchQuery::Equals, QDateTime(QDate(2019, 3, 5), QTime(6, 36, 0), QTimeZone::UTC)); 0038 QTest::newRow("serialize time") << query << "((createdTime = '2019-03-05T06:36:00'))"; 0039 } 0040 0041 { 0042 TeamdriveSearchQuery query; 0043 query.addQuery(TeamdriveSearchQuery::Name, TeamdriveSearchQuery::Contains, QLatin1StringView("Some String")); 0044 QTest::newRow("contains") << query << "((name contains 'Some String'))"; 0045 } 0046 0047 { 0048 TeamdriveSearchQuery query; 0049 query.addQuery(TeamdriveSearchQuery::Name, TeamdriveSearchQuery::Contains, QLatin1StringView("Name")); 0050 query.addQuery(TeamdriveSearchQuery::MemberCount, TeamdriveSearchQuery::Equals, 5); 0051 QTest::newRow("A and B") << query << "((name contains 'Name') and (memberCount = 5))"; 0052 } 0053 0054 { 0055 TeamdriveSearchQuery query(TeamdriveSearchQuery::Or); 0056 query.addQuery(TeamdriveSearchQuery::Name, TeamdriveSearchQuery::Contains, QLatin1StringView("Name")); 0057 query.addQuery(TeamdriveSearchQuery::OrganizerCount, TeamdriveSearchQuery::Equals, 5); 0058 QTest::newRow("A or B") << query << "((name contains 'Name') or (organizerCount = 5))"; 0059 } 0060 0061 { 0062 TeamdriveSearchQuery query(TeamdriveSearchQuery::Or); 0063 query.addQuery(TeamdriveSearchQuery::CreatedTime, TeamdriveSearchQuery::Equals, QDateTime(QDate(2019, 3, 5), QTime(6, 36, 0), QTimeZone::UTC)); 0064 TeamdriveSearchQuery subquery; 0065 subquery.addQuery(TeamdriveSearchQuery::Name, TeamdriveSearchQuery::Equals, QLatin1StringView("Test")); 0066 subquery.addQuery(TeamdriveSearchQuery::MemberCount, TeamdriveSearchQuery::LessOrEqual, 10); 0067 query.addQuery(subquery); 0068 QTest::newRow("A or (B and C)") << query << "((createdTime = '2019-03-05T06:36:00') or ((name = 'Test') and (memberCount <= 10)))"; 0069 } 0070 } 0071 0072 void testTeamdriveSearchQuery() 0073 { 0074 QFETCH(TeamdriveSearchQuery, query); 0075 QFETCH(QString, expected); 0076 0077 const QString serialized = query.serialize(); 0078 QCOMPARE(serialized, expected); 0079 } 0080 }; 0081 0082 QTEST_GUILESS_MAIN(TeamdriveSearchQueryTest) 0083 0084 #include "teamdrivesearchquerytest.moc"