| Index: test/Notification.cpp |
| =================================================================== |
| --- a/test/Notification.cpp |
| +++ b/test/Notification.cpp |
| @@ -43,32 +43,27 @@ |
| void AddNotification(const std::string& notification) |
| { |
| jsEngine->Evaluate("(function()" |
| "{" |
| "require('notification').Notification.addNotification(" + notification + ");" |
| "})();"); |
| } |
| - NotificationPtr PeekNotification(const std::string& url = std::string()) |
| + std::unique_ptr<Notification> PeekNotification(const std::string& url = std::string()) |
| { |
| - NotificationPtr retValue; |
| - filterEngine->SetShowNotificationCallback(std::bind( |
| - &NotificationTest::NotificationAvailableCallback, |
| - std::placeholders::_1, std::ref(retValue))); |
| + std::unique_ptr<Notification> retValue; |
| + filterEngine->SetShowNotificationCallback( |
| + [&retValue](Notification& notification) { |
| + retValue.reset(new Notification(std::move(notification))); |
| + }); |
| filterEngine->ShowNextNotification(url); |
| filterEngine->RemoveShowNotificationCallback(); |
| return retValue; |
| } |
| - |
| - static void NotificationAvailableCallback(const NotificationPtr& src, NotificationPtr& dst) |
| - { |
| - EXPECT_TRUE(src); |
| - dst = src; |
| - } |
| }; |
| class MockWebRequest : public WebRequest |
| { |
| public: |
| std::string responseText; |
| explicit MockWebRequest(const std::string& notification) |
| : responseText(notification) |
| @@ -109,30 +104,25 @@ |
| "\"en-US\": \"message\"" |
| "}," |
| "\"title\": \"Title\"" |
| "}]" |
| "}"; |
| jsEngine->SetWebRequest(std::shared_ptr<MockWebRequest>( |
| new MockWebRequest(responseJsonText))); |
| jsEngine->SetLogSystem(LogSystemPtr(new DefaultLogSystem())); |
| - filterEngine.reset(new FilterEngine(jsEngine)); |
| + filterEngine = FilterEngine::Create(jsEngine); |
| filterEngine->SetShowNotificationCallback( |
| - std::bind(&NotificationMockWebRequestTest::OnNotification, |
| - this, std::placeholders::_1)); |
| - } |
| - |
| - void OnNotification(const NotificationPtr& notification) |
| - { |
| - isNotificationCallbackCalled = true; |
| - ASSERT_TRUE(notification); |
| - EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification->GetType()); |
| - EXPECT_EQ("Title", notification->GetTexts().title); |
| - EXPECT_EQ("message", notification->GetTexts().message); |
| - notification->MarkAsShown(); |
| + [this](Notification& notification) { |
| + isNotificationCallbackCalled = true; |
| + EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification.GetType()); |
| + EXPECT_EQ("Title", notification.GetTexts().title); |
| + EXPECT_EQ("message", notification.GetTexts().message); |
| + notification.MarkAsShown(); |
| + }); |
| } |
| }; |
| #endif |
| } |
| TEST_F(NotificationTest, NoNotifications) |
| { |
| EXPECT_FALSE(PeekNotification()); |
| @@ -148,66 +138,66 @@ |
| TEST_F(NotificationTest, AddNotification) |
| { |
| AddNotification("{" |
| "type: 'critical'," |
| "title: 'testTitle'," |
| "message: 'testMessage'," |
| "}"); |
| - NotificationPtr notification = PeekNotification(); |
| + auto notification = PeekNotification(); |
| ASSERT_TRUE(notification); |
| EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_CRITICAL, notification->GetType()); |
| EXPECT_EQ("testTitle", notification->GetTexts().title); |
| EXPECT_EQ("testMessage", notification->GetTexts().message); |
| } |
| TEST_F(NotificationTest, FilterByUrl) |
| { |
| AddNotification("{ id: 'no-filter', type: 'critical' }"); |
| AddNotification("{ id: 'www.com', type: 'information'," |
| "urlFilters:['||www.com$document']" |
| "}"); |
| AddNotification("{ id: 'www.de', type: 'question'," |
| "urlFilters:['||www.de$document']" |
| "}"); |
| - NotificationPtr notification = PeekNotification(); |
| + auto notification = PeekNotification(); |
| ASSERT_TRUE(notification); |
| EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_CRITICAL, notification->GetType()); |
| notification = PeekNotification("http://www.de"); |
| ASSERT_TRUE(notification); |
| EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_QUESTION, notification->GetType()); |
| notification = PeekNotification("http://www.com"); |
| ASSERT_TRUE(notification); |
| EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification->GetType()); |
| } |
| TEST_F(NotificationTest, MarkAsShown) |
| { |
| AddNotification("{ id: 'id', type: 'question' }"); |
| EXPECT_TRUE(PeekNotification()); |
| - NotificationPtr notification = PeekNotification(); |
| + auto notification = PeekNotification(); |
| ASSERT_TRUE(notification); |
| notification->MarkAsShown(); |
| EXPECT_FALSE(PeekNotification()); |
| } |
| TEST_F(NotificationTest, NoLinks) |
| { |
| AddNotification("{ id: 'id'}"); |
| - NotificationPtr notification = PeekNotification(); |
| + auto notification = PeekNotification(); |
| ASSERT_TRUE(notification); |
| EXPECT_EQ(0u, notification->GetLinks().size()); |
| } |
| TEST_F(NotificationTest, Links) |
| { |
| AddNotification("{ id: 'id', links: ['link1', 'link2'] }"); |
| - NotificationPtr notification = PeekNotification(); |
| + auto notification = PeekNotification(); |
| ASSERT_TRUE(notification); |
| std::vector<std::string> notificationLinks = notification->GetLinks(); |
| ASSERT_EQ(2u, notificationLinks.size()); |
| EXPECT_EQ("link1", notificationLinks[0]); |
| EXPECT_EQ("link2", notificationLinks[1]); |
| } |