summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRémi Nicole <nicole@kolabsystems.com>2018-05-28 10:08:49 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-28 10:09:31 +0200
commitf400cee1d5896577c22626d0cf50478057989857 (patch)
treee24e77562e0e893f281965c512ca4b74f88b20d3 /tests
parent411c7cdad70c5c7902002545fd107ed1b2ac06ac (diff)
downloadsink-f400cee1d5896577c22626d0cf50478057989857.tar.gz
sink-f400cee1d5896577c22626d0cf50478057989857.zip
Implement ranged queries
Summary: Notes: - For now, only for QDateTime indexes - Invalid QDateTimes are stored in the index (subject to change) - Should be a drop-in replacement from ValueIndexes (except for `In` and `Contains` queries) Reviewers: cmollekopf Tags: #sink Differential Revision: https://phabricator.kde.org/D13105
Diffstat (limited to 'tests')
-rw-r--r--tests/querytest.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index fa016a2..36b6e90 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -1510,6 +1510,113 @@ private slots:
1510 } 1510 }
1511 } 1511 }
1512 1512
1513 void mailsWithDates()
1514 {
1515 {
1516 Mail mail("sink.dummy.instance1");
1517 mail.setExtractedDate(QDateTime::fromString("2018-05-23T13:49:41Z", Qt::ISODate));
1518 mail.setExtractedMessageId("message1");
1519 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1520 }
1521 {
1522 Mail mail("sink.dummy.instance1");
1523 mail.setExtractedDate(QDateTime::fromString("2018-05-23T13:50:00Z", Qt::ISODate));
1524 mail.setExtractedMessageId("message2");
1525 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1526 }
1527 {
1528 Mail mail("sink.dummy.instance1");
1529 mail.setExtractedDate(QDateTime::fromString("2018-05-27T13:50:00Z", Qt::ISODate));
1530 mail.setExtractedMessageId("message3");
1531 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1532 }
1533 {
1534 Mail mail("sink.dummy.instance1");
1535 mail.setExtractedMessageId("message4");
1536 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1537 }
1538 {
1539 Mail mail("sink.dummy.instance1");
1540 mail.setExtractedDate(QDateTime::fromString("2078-05-23T13:49:41Z", Qt::ISODate));
1541 mail.setExtractedMessageId("message5");
1542 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1543 }
1544 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
1545 }
1546
1547 void testMailDate()
1548 {
1549 mailsWithDates();
1550
1551 {
1552 Sink::Query query;
1553 query.resourceFilter("sink.dummy.instance1");
1554 query.filter<Mail::Date>(QDateTime::fromString("2018-05-23T13:49:41Z", Qt::ISODate));
1555 auto model = Sink::Store::loadModel<Mail>(query);
1556 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1557 QCOMPARE(model->rowCount(), 1);
1558 }
1559
1560 {
1561 Sink::Query query;
1562 query.resourceFilter("sink.dummy.instance1");
1563 query.filter<Mail::Date>(QDateTime::fromString("2018-05-27T13:49:41Z", Qt::ISODate));
1564 auto model = Sink::Store::loadModel<Mail>(query);
1565 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1566 QCOMPARE(model->rowCount(), 0);
1567 }
1568
1569 {
1570 Sink::Query query;
1571 query.resourceFilter("sink.dummy.instance1");
1572 query.filter<Mail::Date>(QDateTime::fromString("2018-05-27T13:50:00Z", Qt::ISODate));
1573 auto model = Sink::Store::loadModel<Mail>(query);
1574 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1575 QCOMPARE(model->rowCount(), 1);
1576 }
1577
1578 }
1579
1580 void testMailRange()
1581 {
1582 mailsWithDates();
1583
1584 {
1585 Sink::Query query;
1586 query.resourceFilter("sink.dummy.instance1");
1587 query.filter<Mail::Date>(QueryBase::Comparator(QVariantList{QDateTime::fromString("2018-05-23T13:49:41Z", Qt::ISODate), QDateTime::fromString("2018-05-23T13:49:41Z", Qt::ISODate)}, QueryBase::Comparator::Within));
1588 auto model = Sink::Store::loadModel<Mail>(query);
1589 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1590 QCOMPARE(model->rowCount(), 1);
1591 }
1592
1593 {
1594 Sink::Query query;
1595 query.resourceFilter("sink.dummy.instance1");
1596 query.filter<Mail::Date>(QueryBase::Comparator(QVariantList{QDateTime::fromString("2018-05-22T13:49:41Z", Qt::ISODate), QDateTime::fromString("2018-05-25T13:49:41Z", Qt::ISODate)}, QueryBase::Comparator::Within));
1597 auto model = Sink::Store::loadModel<Mail>(query);
1598 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1599 QCOMPARE(model->rowCount(), 2);
1600 }
1601
1602 {
1603 Sink::Query query;
1604 query.resourceFilter("sink.dummy.instance1");
1605 query.filter<Mail::Date>(QueryBase::Comparator(QVariantList{QDateTime::fromString("2018-05-22T13:49:41Z", Qt::ISODate), QDateTime::fromString("2018-05-30T13:49:41Z", Qt::ISODate)}, QueryBase::Comparator::Within));
1606 auto model = Sink::Store::loadModel<Mail>(query);
1607 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1608 QCOMPARE(model->rowCount(), 3);
1609 }
1610
1611 {
1612 Sink::Query query;
1613 query.resourceFilter("sink.dummy.instance1");
1614 query.filter<Mail::Date>(QueryBase::Comparator(QVariantList{QDateTime::fromString("2018-05-22T13:49:41Z", Qt::ISODate), QDateTime::fromString("2118-05-30T13:49:41Z", Qt::ISODate)}, QueryBase::Comparator::Within));
1615 auto model = Sink::Store::loadModel<Mail>(query);
1616 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1617 QCOMPARE(model->rowCount(), 4);
1618 }
1619 }
1513}; 1620};
1514 1621
1515QTEST_MAIN(QueryTest) 1622QTEST_MAIN(QueryTest)