Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: test/Notification.cpp

Issue 29539858: Issue 5506 - Make the notification test work. (Closed) Base URL: https://hg.adblockplus.org/libadblockplus/
Patch Set: Created Sept. 9, 2017, 3:43 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/Notification.cpp
===================================================================
--- a/test/Notification.cpp
+++ b/test/Notification.cpp
@@ -10,17 +10,20 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <iostream>
+#include <AdblockPlus/DefaultLogSystem.h>
#include "BaseJsTest.h"
+#include "../src/DefaultTimer.h"
using namespace AdblockPlus;
namespace
{
class NotificationTest : public BaseJsTest
{
protected:
@@ -75,64 +78,65 @@
ServerResponse serverResponse;
serverResponse.status = IWebRequest::NS_OK;
serverResponse.responseStatus = 200;
serverResponse.responseText = responseText;
getCallback(serverResponse);
}
};
-
// To run this test one needs to set INITIAL_DELAY to about 2000 msec
// in notification.js.
class NotificationMockWebRequestTest : public BaseJsTest
{
protected:
- bool isNotificationCallbackCalled;
+ AdblockPlus::Sync sync;
void SetUp()
{
- isNotificationCallbackCalled = false;
const char* responseJsonText = "{"
"\"notifications\": [{"
"\"id\": \"some id\","
"\"type\": \"information\","
"\"message\": {"
"\"en-US\": \"message\""
"},"
"\"title\": \"Title\""
"}]"
"}";
- ThrowingPlatformCreationParameters platformParams;
+ AdblockPlus::Platform::CreationParameters platformParams;
+ platformParams.logSystem.reset(new AdblockPlus::DefaultLogSystem());
+ platformParams.timer.reset(new AdblockPlus::DefaultTimer());
sergei 2017/09/11 21:22:38 I would recommend to not use threads here and wait
platformParams.fileSystem.reset(new LazyFileSystem());
platformParams.webRequest.reset(new MockWebRequest(responseJsonText));
platform.reset(new Platform(std::move(platformParams)));
auto& filterEngine = platform->GetFilterEngine();
filterEngine.SetShowNotificationCallback(
[this](Notification&& notification) {
- isNotificationCallbackCalled = true;
+ sync.Set();
EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification.GetType());
EXPECT_EQ("Title", notification.GetTexts().title);
EXPECT_EQ("message", notification.GetTexts().message);
notification.MarkAsShown();
});
}
};
}
TEST_F(NotificationTest, NoNotifications)
{
EXPECT_FALSE(PeekNotification());
}
-TEST_F(NotificationMockWebRequestTest, DISABLED_SingleNotification)
+TEST_F(NotificationMockWebRequestTest, SingleNotification)
{
- AdblockPlus::Sleep(5000/*msec*/); // it's a hack
- EXPECT_TRUE(isNotificationCallbackCalled);
+ auto& filterEngine = platform->GetFilterEngine();
+ filterEngine.ShowNextNotification();
+ EXPECT_TRUE(sync.WaitFor(std::chrono::seconds(70)));
}
TEST_F(NotificationTest, AddNotification)
{
AddNotification("{"
"type: 'critical',"
"title: 'testTitle',"
"message: 'testMessage',"
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld