diff options
author | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-09-11 17:57:08 -0300 |
---|---|---|
committer | Renato Araujo Oliveira Filho <renato.filho@canonical.com> | 2012-09-11 17:57:08 -0300 |
commit | 6bacc0d5db885a72202cb7f80e505642a36052d4 (patch) | |
tree | 608aa95f959b9e362d7813476e59d37c6c07ddf6 /tests/client/servicetest.cpp | |
parent | 31f8103187d2e27b1bb76eaed10dc9c9be226c90 (diff) | |
download | qmenumodel-6bacc0d5db885a72202cb7f80e505642a36052d4.tar.gz qmenumodel-6bacc0d5db885a72202cb7f80e505642a36052d4.tar.bz2 qmenumodel-6bacc0d5db885a72202cb7f80e505642a36052d4.zip |
Splitted qmenumodel plugin in two libraries to make it testable.
Create unit test for qmenumodel library.
Diffstat (limited to 'tests/client/servicetest.cpp')
-rw-r--r-- | tests/client/servicetest.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tests/client/servicetest.cpp b/tests/client/servicetest.cpp new file mode 100644 index 0000000..3faddd0 --- /dev/null +++ b/tests/client/servicetest.cpp @@ -0,0 +1,101 @@ +#include "qdbusmenumodel.h" +#include "dbusmenuscript.h" + +#include <QObject> +#include <QSignalSpy> +#include <QtTestGui> +#include <QDebug> + +class ServiceTest : public QObject +{ + Q_OBJECT +private: + DBusMenuScript m_script; + QDBusMenuModel m_model; + + void setupModel(QDBusMenuModel *model) + { + model->setBusType(QDBusObject::SessionBus); + model->setBusName(MENU_SERVICE_NAME); + model->setObjectPath(MENU_OBJECT_PATH); + } + +private Q_SLOTS: + void initTestCase() + { + Q_ASSERT(m_script.connect()); + } + + void cleanupTestCase() + { + m_script.quit(); + } + + void init() + { + qDebug() << "init>>>>>>>>>>>>>>>>>>>>>"; + m_model.stop(); + m_model.setBusType(QDBusObject::SessionBus); + m_model.setBusName(MENU_SERVICE_NAME); + m_model.setObjectPath(MENU_OBJECT_PATH); + } + + void cleanup() + { + qDebug() << "cleanup>>>>>>>>>>>>>>>>>>"; + m_script.unpublishMenu(); + } + + void testMenuStartStopWithNoService() + { + m_model.start(); + QCOMPARE(m_model.status(), QDBusObject::Connecting); + + m_model.stop(); + QCOMPARE(m_model.status(), QDBusObject::Disconnected); + } + + void testMenuStartStopWithService() + { + // Make menu available + m_script.publishMenu(); + + // start model + m_model.start(); + + // Wait for dbus sync + QTest::qWait(500); + + QCOMPARE(m_model.status(), QDBusObject::Connected); + + // Diconnect model + m_model.stop(); + QCOMPARE(m_model.status(), QDBusObject::Disconnected); + } + + void testMenuServiceAppearAndDissapear() + { + m_model.start(); + QCOMPARE(m_model.status(), QDBusObject::Connecting); + + QSignalSpy spy(&m_model, SIGNAL(statusChanged(QDBusObject::ConnectionStatus))); + + // Make menu available + m_script.publishMenu(); + + // singal changed to connected + QCOMPARE(spy.count(), 1); + QCOMPARE(m_model.status(), QDBusObject::Connected); + + // remove menu service + m_script.unpublishMenu(); + + // signal changed to connecting + QCOMPARE(spy.count(), 2); + QCOMPARE(m_model.status(), QDBusObject::Connecting); + } +}; + +QTEST_MAIN(ServiceTest) + +#include "servicetest.moc" |