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"