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::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::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::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::testRemoveNotification() { NotificationPreviewPresenter presenter; QSignalSpy changedSpy(&presenter, SIGNAL(notificationChanged())); // Create two notifications createNotification(1); createNotification(2); presenter.updateNotification(1); presenter.updateNotification(2); // Remove the first one presenter.removeNotification(1); // Check that an empty notification is signaled onwards QCOMPARE(changedSpy.count(), 2); QCOMPARE(presenter.notification(), (LipstickNotification *)0); // Show and remove the second one presenter.showNextNotification(); presenter.removeNotification(2); // Check that an empty notification is signaled onwards QCOMPARE(changedSpy.count(), 4); QCOMPARE(presenter.notification(), (LipstickNotification *)0); // Check that the window is not yet hidden QCOMPARE(homeWindowVisible[homeWindows.first()], true); // Check that the window is hidden when it's time to show the next notification (which doesn't exist) presenter.showNextNotification(); QCOMPARE(homeWindowVisible[homeWindows.first()], false); }
void Ut_NotificationPreviewPresenter::testNotificationPreviewsDisabled() { QFETCH(QWaylandSurface *, surface); QFETCH(QVariantMap, windowProperties); QFETCH(int, urgency); QFETCH(int, showCount); gLipstickCompositorStub->stubSetReturnValue("surfaceForId", surface); qWaylandSurfaceWindowProperties = windowProperties; NotificationPreviewPresenter presenter; createNotification(1, urgency); presenter.updateNotification(1); QCOMPARE(homeWindows.count(), showCount); }
void Ut_NotificationPreviewPresenter::testCriticalNotificationIsClosedAfterShowing() { NotificationPreviewPresenter presenter; createNotification(1, 2); createNotification(2); createNotification(3); presenter.updateNotification(1); presenter.updateNotification(2); presenter.updateNotification(3); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerCloseNotificationIds.count(), 1); QCOMPARE(notificationManagerCloseNotificationIds.at(0), (uint)1); presenter.showNextNotification(); QCOMPARE(notificationManagerCloseNotificationIds.count(), 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::testCriticalNotificationIsMarkedAfterShowing() { NotificationPreviewPresenter presenter; createNotification(1, Critical); createNotification(2); createNotification(3); QTest::qWait(0); presenter.updateNotification(1); presenter.updateNotification(2); presenter.updateNotification(3); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 0); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 1); QCOMPARE(notificationManagerDisplayedNotificationIds.at(0), (uint)1); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 2); QCOMPARE(notificationManagerDisplayedNotificationIds.at(1), (uint)2); QCOMPARE(notificationManagerCloseNotificationIds.count(), 0); presenter.showNextNotification(); QCOMPARE(notificationManagerDisplayedNotificationIds.count(), 3); QCOMPARE(notificationManagerDisplayedNotificationIds.at(2), (uint)3); QCOMPARE(notificationManagerCloseNotificationIds.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); }