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'," |