1 /*
2  * SPDX-FileCopyrightText: 2014 Mario Bensi <mbensi@ipsquad.net>
3  SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
4 */
5 
6 
7 #include <testlib/qtest_zanshin.h>
8 
9 #include "testlib/monitorspy.h"
10 #include "testlib/akonadifakemonitor.h"
11 #include <AkonadiCore/Akonadi/Item>
12 
13 using namespace Testlib;
14 
15 class TimerTest: public QObject
16 {
17     Q_OBJECT
18 public:
TimerTest(AkonadiFakeMonitor * monitor,int duration)19     TimerTest(AkonadiFakeMonitor *monitor, int duration)
20         : m_monitor(monitor)
21     {
22         QTimer::singleShot(duration, Qt::PreciseTimer, this, &TimerTest::addItem);
23     }
24 
25 private slots:
addItem()26     void addItem()
27     {
28         Akonadi::Item item;
29         m_monitor->addItem(item);
30     }
31 
32 private:
33     AkonadiFakeMonitor *m_monitor;
34 };
35 
36 class MonitorSpyTest : public QObject
37 {
38     Q_OBJECT
39 public:
MonitorSpyTest(QObject * parent=nullptr)40     explicit MonitorSpyTest(QObject *parent = nullptr)
41         : QObject(parent)
42     {
43     }
44 
45 private slots:
shouldWaitOneSecondWithoutSignal()46     void shouldWaitOneSecondWithoutSignal()
47     {
48         // GIVEN
49         AkonadiFakeMonitor monitor;
50         MonitorSpy monitorSpy(&monitor);
51         Akonadi::Item item;
52         QDateTime now = QDateTime::currentDateTime();
53 
54         // WHEN
55         monitorSpy.waitForStableState();
56 
57         // THEN
58         QVERIFY(now.msecsTo(QDateTime::currentDateTime()) >= 1000ll);
59     }
60 
shouldWaitOneSecondAfterLastSignal()61     void shouldWaitOneSecondAfterLastSignal()
62     {
63         // GIVEN
64         AkonadiFakeMonitor monitor;
65         MonitorSpy monitorSpy(&monitor);
66         QDateTime now = QDateTime::currentDateTime();
67 
68         // WHEN
69         TimerTest timer(&monitor, 500);
70         monitorSpy.waitForStableState();
71 
72         // THEN
73         QVERIFY(now.msecsTo(QDateTime::currentDateTime()) >= 1500ll);
74     }
75 };
76 
77 ZANSHIN_TEST_MAIN(MonitorSpyTest)
78 
79 #include "monitorspytest.moc"
80