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