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: Address review comments. Created Sept. 12, 2017, 12:53 p.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 | « test/BaseJsTest.h ('k') | 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,16 +10,18 @@
* 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>
sergei 2017/09/12 13:34:09 These headers are still not required.
hub 2017/09/12 15:51:10 Done.
#include "BaseJsTest.h"
using namespace AdblockPlus;
namespace
{
class NotificationTest : public BaseJsTest
{
@@ -75,64 +77,68 @@
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;
- platformParams.fileSystem.reset(new LazyFileSystem());
+ LazyFileSystem* fileSystem;
+ AdblockPlus::Platform::CreationParameters platformParams;
+ platformParams.logSystem.reset(new ThrowingLogSystem());
sergei 2017/09/12 13:34:09 These two lines can be replaced by original `Throw
hub 2017/09/12 15:51:10 Done.
+ platformParams.timer.reset(new ManualTimer());
+ platformParams.fileSystem.reset(fileSystem = new LazyFileSystem());
platformParams.webRequest.reset(new MockWebRequest(responseJsonText));
platform.reset(new Platform(std::move(platformParams)));
+ CreateFilterEngine(*fileSystem, *platform);
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();
+ static_cast<ManualTimer&>(platform->GetTimer()).runPending();
+ filterEngine.ShowNextNotification();
+ EXPECT_TRUE(sync.WaitFor(std::chrono::seconds(4)));
}
TEST_F(NotificationTest, AddNotification)
{
AddNotification("{"
"type: 'critical',"
"title: 'testTitle',"
"message: 'testMessage',"
« no previous file with comments | « test/BaseJsTest.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld