void Ut_NotificationPreviewPresenter::testNotificationNotShownIfNoSummaryOrBody() { QFETCH(QString, previewSummary); QFETCH(QString, previewBody); QFETCH(int, changedSignalCount); QFETCH(int, presentedSignalCount); QFETCH(bool, windowVisible); NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Create notification LipstickNotification *notification = new LipstickNotification; QVariantHash hints; hints.insert(NotificationManager::HINT_PREVIEW_SUMMARY, previewSummary); hints.insert(NotificationManager::HINT_PREVIEW_BODY, previewBody); notification->setHints(hints); notificationManagerNotification.insert(1, notification); presenter.updateNotification(1); // Check whether the expected notification is signaled onwards QCOMPARE(changedSpy.count(), changedSignalCount); QCOMPARE(presentedSpy.count(), presentedSignalCount); QCOMPARE(homeWindowVisible.isEmpty(), !windowVisible); if (windowVisible) { // Check whether the window was shown QCOMPARE(homeWindowVisible[homeWindows.first()], windowVisible); } }
void Ut_NotificationPreviewPresenter::testUpdateNotificationRemovesNotificationFromQueueIfNotShowable() { NotificationPreviewPresenter presenter; // Create two notifications LipstickNotification *notification1 = createNotification(1); LipstickNotification *notification2 = createNotification(2); presenter.updateNotification(1); presenter.updateNotification(2); // Update the notifications to have no summary or body QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); notification1->setHints(QVariantHash()); notification2->setHints(QVariantHash()); presenter.updateNotification(1); presenter.updateNotification(2); // Check that the current notification is not removed QCOMPARE(changedSpy.count(), 0); // The notifications should be considered presented QCOMPARE(presentedSpy.count(), 2); // Check that the other notification is removed from the queue presenter.showNextNotification(); QCOMPARE(changedSpy.count(), 1); QCOMPARE(presenter.notification(), (LipstickNotification *)0); QCOMPARE(presentedSpy.count(), 2); }
void Ut_NotificationPreviewPresenter::testAddNotificationWhenWindowAlreadyOpen() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Create a notification: this will create a window createNotification(1); presenter.updateNotification(1); // Reset stubs to see what happens next homeWindows.clear(); // Create another notification LipstickNotification *notification = createNotification(2); presenter.updateNotification(2); // The second notification should not be signaled onwards yet since the first one is being presented QCOMPARE(changedSpy.count(), 1); QCOMPARE(presentedSpy.count(), 1); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); // Show the next notification presenter.showNextNotification(); // Check that the window was not unnecessarily created again QCOMPARE(homeWindows.isEmpty(), true); // Check that the expected notification is signaled onwards QCOMPARE(changedSpy.count(), 2); QCOMPARE(presenter.notification(), notification); QCOMPARE(presentedSpy.count(), 2); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)2); }
void Ut_NotificationPreviewPresenter::testAddNotificationWhenWindowNotOpen() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Check that the window is not automatically created QCOMPARE(homeWindows.isEmpty(), true); // Check that the window is created when a notification is added LipstickNotification *notification = createNotification(1); presenter.updateNotification(1); QCOMPARE(homeWindows.count(), 1); // Check window properties QCOMPARE(homeWindowTitle[homeWindows.first()], QString("Notification")); QCOMPARE(homeWindowContextProperties[homeWindows.first()].value("initialSize").toSize(), QGuiApplication::primaryScreen()->size()); QCOMPARE(homeWindowContextProperties[homeWindows.first()].value("notificationPreviewPresenter"), QVariant::fromValue(static_cast<QObject *>(&presenter))); QCOMPARE(homeWindowCategories[homeWindows.first()], QString("notification")); // Check that the window was shown QCOMPARE(homeWindowVisible[homeWindows.first()], true); // Check that the expected notification is signaled onwards QCOMPARE(changedSpy.count(), 1); QCOMPARE(presenter.notification(), notification); QCOMPARE(presentedSpy.count(), 1); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); }
void Ut_NotificationPreviewPresenter::testNotificationNotShownIfTouchScreenIsLockedAndDisplayIsOff() { QFETCH(MeeGo::QmDisplayState::DisplayState, displayState); QFETCH(MeeGo::QmLocks::State, lockState); QFETCH(int, notifications); QFETCH(int, presentedCount); gQmDisplayStateStub->stubSetReturnValue("get", displayState); gQmLocksStub->stubSetReturnValue("getState", lockState); NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); createNotification(1, 2); presenter.updateNotification(1); QCOMPARE(homeWindows.count(), notifications); QCOMPARE(changedSpy.count(), notifications); QCOMPARE(presentedSpy.count(), presentedCount); }
void Ut_NotificationPreviewPresenter::testUpdateNotification() { NotificationPreviewPresenter presenter; // Create two notifications createNotification(1); createNotification(2); presenter.updateNotification(1); presenter.updateNotification(2); // Update both notifications QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); presenter.updateNotification(1); presenter.updateNotification(2); // Check that no signals were sent QCOMPARE(changedSpy.count(), 0); QCOMPARE(presentedSpy.count(), 0); }
void Ut_NotificationPreviewPresenter::testNotificationNotShownIfHidden() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Create notification QVariantHash hints; hints.insert(NotificationManager::HINT_PREVIEW_SUMMARY, "previewSummary"); hints.insert(NotificationManager::HINT_PREVIEW_BODY, "previewBody"); hints.insert(NotificationManager::HINT_HIDDEN, true); LipstickNotification *notification = new LipstickNotification("ut_notificationpreviewpresenter", 1, "", "", "", QStringList(), hints, -1); notificationManagerNotification.insert(1, notification); presenter.updateNotification(1); QCOMPARE(changedSpy.count(), 0); QCOMPARE(homeWindowVisible.isEmpty(), true); // The notification should be considered presented QCOMPARE(presentedSpy.count(), 1); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); }
void Ut_NotificationPreviewPresenter::testShowingOnlyCriticalNotifications() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); QSignalSpy presentedSpy(&presenter, SIGNAL(notificationPresented(uint))); // Create normal urgency notification LipstickNotification *notification = new LipstickNotification; QVariantHash hints; hints.insert(NotificationManager::HINT_PREVIEW_SUMMARY, "previewSummary"); hints.insert(NotificationManager::HINT_PREVIEW_BODY, "previewBody"); hints.insert(NotificationManager::HINT_URGENCY, 1); notification->setHints(hints); notificationManagerNotification.insert(1, notification); QCOMPARE(homeWindowVisible.isEmpty(), true); // When the screen or device is locked and the urgency is not high enough, so the notification shouldn't be shown gQmLocksStub->stubSetReturnValue("getState", MeeGo::QmLocks::Locked); presenter.updateNotification(1); QCOMPARE(changedSpy.count(), 0); QCOMPARE(homeWindowVisible.isEmpty(), true); // The notification should be considered presented QCOMPARE(presentedSpy.count(), 1); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); // Urgency set to critical, so the notification should be shown hints.insert(NotificationManager::HINT_URGENCY, 2); notification->setHints(hints); presenter.updateNotification(1); QCOMPARE(changedSpy.count(), 1); QCOMPARE(homeWindowVisible.isEmpty(), false); QCOMPARE(homeWindowVisible[homeWindows.first()], true); QCOMPARE(presentedSpy.count(), 2); QCOMPARE(presentedSpy.last().at(0).toUInt(), (uint)1); }