| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // TODO(robliao,vadimt): Determine the granularity of testing to perform. | 5 // TODO(robliao,vadimt): Determine the granularity of testing to perform. |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Test fixture for background.js. | 8 * Test fixture for background.js. |
| 9 * @constructor | 9 * @constructor |
| 10 * @extends {testing.Test} | 10 * @extends {testing.Test} |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 */ | 57 */ |
| 58 function mockInitializeDependencies(fixture) { | 58 function mockInitializeDependencies(fixture) { |
| 59 fixture.makeAndRegisterMockGlobals([ | 59 fixture.makeAndRegisterMockGlobals([ |
| 60 'recordEvent', | 60 'recordEvent', |
| 61 'setBackgroundEnable', | 61 'setBackgroundEnable', |
| 62 'startPollingCards' | 62 'startPollingCards' |
| 63 ]); | 63 ]); |
| 64 fixture.makeAndRegisterMockApis([ | 64 fixture.makeAndRegisterMockApis([ |
| 65 'authenticationManager.isSignedIn', | 65 'authenticationManager.isSignedIn', |
| 66 'chrome.storage.local.remove', | 66 'chrome.storage.local.remove', |
| 67 'fillFromChromeLocalStorage', |
| 67 'instrumented.metricsPrivate.getVariationParams', | 68 'instrumented.metricsPrivate.getVariationParams', |
| 68 'instrumented.notifications.getAll', | 69 'instrumented.notifications.getAll', |
| 69 'instrumented.notifications.getPermissionLevel', | 70 'instrumented.notifications.getPermissionLevel', |
| 70 'instrumented.storage.local.get', | |
| 71 'instrumented.webstorePrivate.getBrowserLogin', | 71 'instrumented.webstorePrivate.getBrowserLogin', |
| 72 'tasks.add', | 72 'tasks.add', |
| 73 'updateCardsAttempts.isRunning', | 73 'updateCardsAttempts.isRunning', |
| 74 'updateCardsAttempts.stop' | 74 'updateCardsAttempts.stop' |
| 75 ]); | 75 ]); |
| 76 } | 76 } |
| 77 | 77 |
| 78 /** | 78 /** |
| 79 * Sets up the test to expect the state machine calls and send | 79 * Sets up the test to expect the state machine calls and send |
| 80 * the specified state machine state. Currently used to test initialize(). | 80 * the specified state machine state. Currently used to test initialize(). |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 | 112 |
| 113 var notificationGetPermissionLevelSavedArgs = new SaveMockArguments(); | 113 var notificationGetPermissionLevelSavedArgs = new SaveMockArguments(); |
| 114 fixture.mockApis.expects(once()). | 114 fixture.mockApis.expects(once()). |
| 115 instrumented_notifications_getPermissionLevel( | 115 instrumented_notifications_getPermissionLevel( |
| 116 notificationGetPermissionLevelSavedArgs.match(ANYTHING)). | 116 notificationGetPermissionLevelSavedArgs.match(ANYTHING)). |
| 117 will(invokeCallback( | 117 will(invokeCallback( |
| 118 notificationGetPermissionLevelSavedArgs, | 118 notificationGetPermissionLevelSavedArgs, |
| 119 0, | 119 0, |
| 120 testNotificationPermissionLevel)) | 120 testNotificationPermissionLevel)) |
| 121 | 121 |
| 122 var storageGetSavedArgs = new SaveMockArguments(); | 122 expectChromeLocalStorageGet( |
| 123 fixture.mockApis.expects(once()). | 123 fixture, |
| 124 instrumented_storage_local_get( | 124 {googleNowEnabled: false}, |
| 125 storageGetSavedArgs.match(eq('googleNowEnabled')), | 125 {googleNowEnabled: testGoogleNowEnabled}); |
| 126 storageGetSavedArgs.match(ANYTHING)). | |
| 127 will(invokeCallback( | |
| 128 storageGetSavedArgs, 1, {googleNowEnabled: testGoogleNowEnabled})); | |
| 129 | 126 |
| 130 fixture.mockGlobals.expects(once()). | 127 fixture.mockGlobals.expects(once()). |
| 131 setBackgroundEnable(ANYTHING); | 128 setBackgroundEnable(ANYTHING); |
| 132 } | 129 } |
| 133 | 130 |
| 134 /** | 131 /** |
| 135 * Sets up the test to expect the initialization calls that | 132 * Sets up the test to expect the initialization calls that |
| 136 * initialize() invokes. | 133 * initialize() invokes. |
| 137 * Note that this CAN NOT be used if any of the methods below are called | 134 * Note that this CAN NOT be used if any of the methods below are called |
| 138 * outside of this context with the same argument matchers. | 135 * outside of this context with the same argument matchers. |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 }); | 217 }); |
| 221 | 218 |
| 222 /** | 219 /** |
| 223 * Mocks global functions and APIs that onNotificationClicked() depends upon. | 220 * Mocks global functions and APIs that onNotificationClicked() depends upon. |
| 224 * @param {Test} fixture Test fixture. | 221 * @param {Test} fixture Test fixture. |
| 225 */ | 222 */ |
| 226 function mockOnNotificationClickedDependencies(fixture) { | 223 function mockOnNotificationClickedDependencies(fixture) { |
| 227 fixture.makeAndRegisterMockApis([ | 224 fixture.makeAndRegisterMockApis([ |
| 228 'chrome.windows.create', | 225 'chrome.windows.create', |
| 229 'chrome.windows.update', | 226 'chrome.windows.update', |
| 230 'instrumented.storage.local.get', | 227 'fillFromChromeLocalStorage', |
| 231 'instrumented.tabs.create']); | 228 'instrumented.tabs.create']); |
| 232 } | 229 } |
| 233 | 230 |
| 234 TEST_F( | 231 TEST_F( |
| 235 'GoogleNowBackgroundUnitTest', | 232 'GoogleNowBackgroundUnitTest', |
| 236 'OnNotificationClicked_NoData', | 233 'OnNotificationClicked_NoData', |
| 237 function() { | 234 function() { |
| 238 // Tests the case when there is no data associated with notification id. | 235 // Tests the case when there is no data associated with notification id. |
| 239 // In this case, the function should do nothing. | 236 // In this case, the function should do nothing. |
| 240 | 237 |
| 241 // Setup and expectations. | 238 // Setup and expectations. |
| 242 var testNotificationId = 'TEST_ID'; | 239 var testNotificationId = 'TEST_ID'; |
| 243 var testNotificationData = {}; | 240 var testNotificationDataRequest = {notificationsData: {}}; |
| 241 var testNotificationData = {notificationsData: {}}; |
| 244 | 242 |
| 245 mockOnNotificationClickedDependencies(this); | 243 mockOnNotificationClickedDependencies(this); |
| 246 this.makeMockLocalFunctions(['selector']); | 244 this.makeMockLocalFunctions(['selector']); |
| 247 | 245 |
| 248 var storageGetSavedArgs = new SaveMockArguments(); | 246 expectChromeLocalStorageGet( |
| 249 this.mockApis.expects(once()). | 247 this, testNotificationDataRequest, testNotificationData); |
| 250 instrumented_storage_local_get( | |
| 251 storageGetSavedArgs.match(eq('notificationsData')), | |
| 252 storageGetSavedArgs.match(ANYTHING)). | |
| 253 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData)); | |
| 254 | 248 |
| 255 // Invoking the tested function. | 249 // Invoking the tested function. |
| 256 onNotificationClicked( | 250 onNotificationClicked( |
| 257 testNotificationId, this.mockLocalFunctions.functions().selector); | 251 testNotificationId, this.mockLocalFunctions.functions().selector); |
| 258 }); | 252 }); |
| 259 | 253 |
| 260 TEST_F( | 254 TEST_F( |
| 261 'GoogleNowBackgroundUnitTest', | 255 'GoogleNowBackgroundUnitTest', |
| 262 'OnNotificationClicked_ActionUrlsUndefined', | 256 'OnNotificationClicked_ActionUrlsUndefined', |
| 263 function() { | 257 function() { |
| 264 // Tests the case when the data associated with notification id is | 258 // Tests the case when the data associated with notification id is |
| 265 // 'undefined'. | 259 // 'undefined'. |
| 266 // In this case, the function should do nothing. | 260 // In this case, the function should do nothing. |
| 267 | 261 |
| 268 // Setup and expectations. | 262 // Setup and expectations. |
| 269 var testActionUrls = undefined; | 263 var testActionUrls = undefined; |
| 270 var testNotificationId = 'TEST_ID'; | 264 var testNotificationId = 'TEST_ID'; |
| 265 var testNotificationDataRequest = {notificationsData: {}}; |
| 271 var testNotificationData = { | 266 var testNotificationData = { |
| 272 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} | 267 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} |
| 273 }; | 268 }; |
| 274 | 269 |
| 275 mockOnNotificationClickedDependencies(this); | 270 mockOnNotificationClickedDependencies(this); |
| 276 this.makeMockLocalFunctions(['selector']); | 271 this.makeMockLocalFunctions(['selector']); |
| 277 | 272 |
| 278 var storageGetSavedArgs = new SaveMockArguments(); | 273 expectChromeLocalStorageGet( |
| 279 this.mockApis.expects(once()). | 274 this, testNotificationDataRequest, testNotificationData); |
| 280 instrumented_storage_local_get( | 275 |
| 281 storageGetSavedArgs.match(eq('notificationsData')), | |
| 282 storageGetSavedArgs.match(ANYTHING)). | |
| 283 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData)); | |
| 284 this.mockLocalFunctions.expects(once()).selector(undefined).will( | 276 this.mockLocalFunctions.expects(once()).selector(undefined).will( |
| 285 returnValue(undefined)); | 277 returnValue(undefined)); |
| 286 | 278 |
| 287 // Invoking the tested function. | 279 // Invoking the tested function. |
| 288 onNotificationClicked( | 280 onNotificationClicked( |
| 289 testNotificationId, this.mockLocalFunctions.functions().selector); | 281 testNotificationId, this.mockLocalFunctions.functions().selector); |
| 290 }); | 282 }); |
| 291 | 283 |
| 292 TEST_F( | 284 TEST_F( |
| 293 'GoogleNowBackgroundUnitTest', | 285 'GoogleNowBackgroundUnitTest', |
| 294 'OnNotificationClicked_TabCreateSuccess', | 286 'OnNotificationClicked_TabCreateSuccess', |
| 295 function() { | 287 function() { |
| 296 // Tests the selected URL is OK and crome.tabs.create suceeds. | 288 // Tests the selected URL is OK and crome.tabs.create suceeds. |
| 297 | 289 |
| 298 // Setup and expectations. | 290 // Setup and expectations. |
| 299 var testActionUrls = {testField: 'TEST VALUE'}; | 291 var testActionUrls = {testField: 'TEST VALUE'}; |
| 300 var testNotificationId = 'TEST_ID'; | 292 var testNotificationId = 'TEST_ID'; |
| 293 var testNotificationDataRequest = {notificationsData: {}}; |
| 301 var testNotificationData = { | 294 var testNotificationData = { |
| 302 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} | 295 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} |
| 303 }; | 296 }; |
| 304 var testActionUrl = 'http://testurl.com'; | 297 var testActionUrl = 'http://testurl.com'; |
| 305 var testCreatedTab = {windowId: 239}; | 298 var testCreatedTab = {windowId: 239}; |
| 306 | 299 |
| 307 mockOnNotificationClickedDependencies(this); | 300 mockOnNotificationClickedDependencies(this); |
| 308 this.makeMockLocalFunctions(['selector']); | 301 this.makeMockLocalFunctions(['selector']); |
| 309 | 302 |
| 310 var storageGetSavedArgs = new SaveMockArguments(); | 303 expectChromeLocalStorageGet( |
| 311 this.mockApis.expects(once()). | 304 this, testNotificationDataRequest, testNotificationData); |
| 312 instrumented_storage_local_get( | |
| 313 storageGetSavedArgs.match(eq('notificationsData')), | |
| 314 storageGetSavedArgs.match(ANYTHING)). | |
| 315 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData)); | |
| 316 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will( | 305 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will( |
| 317 returnValue(testActionUrl)); | 306 returnValue(testActionUrl)); |
| 318 var chromeTabsCreateSavedArgs = new SaveMockArguments(); | 307 var chromeTabsCreateSavedArgs = new SaveMockArguments(); |
| 319 this.mockApis.expects(once()). | 308 this.mockApis.expects(once()). |
| 320 instrumented_tabs_create( | 309 instrumented_tabs_create( |
| 321 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), | 310 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), |
| 322 chromeTabsCreateSavedArgs.match(ANYTHING)). | 311 chromeTabsCreateSavedArgs.match(ANYTHING)). |
| 323 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); | 312 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); |
| 324 this.mockApis.expects(once()).chrome_windows_update( | 313 this.mockApis.expects(once()).chrome_windows_update( |
| 325 testCreatedTab.windowId, | 314 testCreatedTab.windowId, |
| 326 eqJSON({focused: true})); | 315 eqJSON({focused: true})); |
| 327 | 316 |
| 328 // Invoking the tested function. | 317 // Invoking the tested function. |
| 329 onNotificationClicked( | 318 onNotificationClicked( |
| 330 testNotificationId, this.mockLocalFunctions.functions().selector); | 319 testNotificationId, this.mockLocalFunctions.functions().selector); |
| 331 }); | 320 }); |
| 332 | 321 |
| 333 TEST_F( | 322 TEST_F( |
| 334 'GoogleNowBackgroundUnitTest', | 323 'GoogleNowBackgroundUnitTest', |
| 335 'OnNotificationClicked_TabCreateFail', | 324 'OnNotificationClicked_TabCreateFail', |
| 336 function() { | 325 function() { |
| 337 // Tests the selected URL is OK and crome.tabs.create fails. | 326 // Tests the selected URL is OK and crome.tabs.create fails. |
| 338 // In this case, the function should invoke chrome.windows.create as a | 327 // In this case, the function should invoke chrome.windows.create as a |
| 339 // second attempt. | 328 // second attempt. |
| 340 | 329 |
| 341 // Setup and expectations. | 330 // Setup and expectations. |
| 342 var testActionUrls = {testField: 'TEST VALUE'}; | 331 var testActionUrls = {testField: 'TEST VALUE'}; |
| 343 var testNotificationId = 'TEST_ID'; | 332 var testNotificationId = 'TEST_ID'; |
| 333 var testNotificationDataRequest = {notificationsData: {}}; |
| 344 var testNotificationData = { | 334 var testNotificationData = { |
| 345 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} | 335 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} |
| 346 }; | 336 }; |
| 347 var testActionUrl = 'http://testurl.com'; | 337 var testActionUrl = 'http://testurl.com'; |
| 348 var testCreatedTab = undefined; // chrome.tabs.create fails | 338 var testCreatedTab = undefined; // chrome.tabs.create fails |
| 349 | 339 |
| 350 mockOnNotificationClickedDependencies(this); | 340 mockOnNotificationClickedDependencies(this); |
| 351 this.makeMockLocalFunctions(['selector']); | 341 this.makeMockLocalFunctions(['selector']); |
| 352 | 342 |
| 353 var storageGetSavedArgs = new SaveMockArguments(); | 343 expectChromeLocalStorageGet( |
| 354 this.mockApis.expects(once()). | 344 this, testNotificationDataRequest, testNotificationData); |
| 355 instrumented_storage_local_get( | |
| 356 storageGetSavedArgs.match(eq('notificationsData')), | |
| 357 storageGetSavedArgs.match(ANYTHING)). | |
| 358 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData)); | |
| 359 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will( | 345 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will( |
| 360 returnValue(testActionUrl)); | 346 returnValue(testActionUrl)); |
| 361 var chromeTabsCreateSavedArgs = new SaveMockArguments(); | 347 var chromeTabsCreateSavedArgs = new SaveMockArguments(); |
| 362 this.mockApis.expects(once()). | 348 this.mockApis.expects(once()). |
| 363 instrumented_tabs_create( | 349 instrumented_tabs_create( |
| 364 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), | 350 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), |
| 365 chromeTabsCreateSavedArgs.match(ANYTHING)). | 351 chromeTabsCreateSavedArgs.match(ANYTHING)). |
| 366 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); | 352 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); |
| 367 this.mockApis.expects(once()).chrome_windows_create( | 353 this.mockApis.expects(once()).chrome_windows_create( |
| 368 eqJSON({url: testActionUrl, focused: true})); | 354 eqJSON({url: testActionUrl, focused: true})); |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 646 } | 632 } |
| 647 }; | 633 }; |
| 648 | 634 |
| 649 var expectedUpdatedRecentDismissals = { | 635 var expectedUpdatedRecentDismissals = { |
| 650 c5: 1800001 | 636 c5: 1800001 |
| 651 }; | 637 }; |
| 652 | 638 |
| 653 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION'; | 639 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION'; |
| 654 | 640 |
| 655 this.makeAndRegisterMockGlobals([ | 641 this.makeAndRegisterMockGlobals([ |
| 656 'scheduleNextPoll', | |
| 657 'combineAndShowNotificationCards', | 642 'combineAndShowNotificationCards', |
| 658 'recordEvent' | 643 'recordEvent', |
| 644 'scheduleNextPoll' |
| 659 ]); | 645 ]); |
| 660 | 646 |
| 661 this.makeAndRegisterMockApis([ | 647 this.makeAndRegisterMockApis([ |
| 662 'chrome.storage.local.set', | 648 'chrome.storage.local.set', |
| 663 'instrumented.storage.local.get' | 649 'fillFromChromeLocalStorage' |
| 664 ]); | 650 ]); |
| 665 | 651 |
| 666 var storageGetSavedArgs = new SaveMockArguments(); | 652 expectChromeLocalStorageGet( |
| 667 this.mockApis.expects(once()). | 653 this, |
| 668 instrumented_storage_local_get( | 654 { |
| 669 storageGetSavedArgs.match( | 655 notificationGroups: {}, |
| 670 eq(['notificationGroups', 'recentDismissals'])), | 656 recentDismissals: {} |
| 671 storageGetSavedArgs.match(ANYTHING)). | 657 }, |
| 672 will(invokeCallback( | 658 { |
| 673 storageGetSavedArgs, | 659 notificationGroups: storedGroups, |
| 674 1, | 660 recentDismissals: recentDismissals |
| 675 { | 661 }); |
| 676 notificationGroups: storedGroups, | |
| 677 recentDismissals: recentDismissals | |
| 678 })); | |
| 679 | 662 |
| 680 this.mockGlobals.expects(once()). | 663 this.mockGlobals.expects(once()). |
| 681 scheduleNextPoll(eqJSON(expectedUpdatedGroups), true); | 664 scheduleNextPoll(eqJSON(expectedUpdatedGroups), true); |
| 682 | 665 |
| 683 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments(); | 666 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments(); |
| 684 this.mockGlobals.expects(once()). | 667 this.mockGlobals.expects(once()). |
| 685 combineAndShowNotificationCards( | 668 combineAndShowNotificationCards( |
| 686 combineAndShowNotificationCardsSavedArgs.match( | 669 combineAndShowNotificationCardsSavedArgs.match( |
| 687 eqJSON(expectedUpdatedGroups)), | 670 eqJSON(expectedUpdatedGroups)), |
| 688 combineAndShowNotificationCardsSavedArgs.match( | 671 combineAndShowNotificationCardsSavedArgs.match( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 nextPollTime: 10001 | 714 nextPollTime: 10001 |
| 732 } | 715 } |
| 733 }; | 716 }; |
| 734 | 717 |
| 735 var expectedUpdatedGroups = { | 718 var expectedUpdatedGroups = { |
| 736 }; | 719 }; |
| 737 | 720 |
| 738 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION'; | 721 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION'; |
| 739 | 722 |
| 740 this.makeAndRegisterMockGlobals([ | 723 this.makeAndRegisterMockGlobals([ |
| 741 'scheduleNextPoll', | |
| 742 'combineAndShowNotificationCards', | 724 'combineAndShowNotificationCards', |
| 725 'onStateChange', |
| 743 'recordEvent', | 726 'recordEvent', |
| 744 'onStateChange' | 727 'scheduleNextPoll' |
| 745 ]); | 728 ]); |
| 746 | 729 |
| 747 this.makeAndRegisterMockApis([ | 730 this.makeAndRegisterMockApis([ |
| 748 'chrome.storage.local.set', | 731 'chrome.storage.local.set', |
| 749 'instrumented.storage.local.get' | 732 'fillFromChromeLocalStorage' |
| 750 ]); | 733 ]); |
| 751 | 734 |
| 752 this.mockApis.expects(once()). | 735 this.mockApis.expects(once()). |
| 753 chrome_storage_local_set( | 736 chrome_storage_local_set( |
| 754 eqJSON({googleNowEnabled: false})); | 737 eqJSON({googleNowEnabled: false})); |
| 755 | 738 |
| 756 this.mockGlobals.expects(once()).onStateChange(); | 739 this.mockGlobals.expects(once()).onStateChange(); |
| 757 | 740 |
| 758 var storageGetSavedArgs = new SaveMockArguments(); | 741 expectChromeLocalStorageGet( |
| 759 this.mockApis.expects(once()). | 742 this, |
| 760 instrumented_storage_local_get( | 743 { |
| 761 storageGetSavedArgs.match( | 744 notificationGroups: {}, |
| 762 eq(['notificationGroups', 'recentDismissals'])), | 745 recentDismissals: {} |
| 763 storageGetSavedArgs.match(ANYTHING)). | 746 }, |
| 764 will(invokeCallback( | 747 { |
| 765 storageGetSavedArgs, 1, {notificationGroups: storedGroups})); | 748 notificationGroups: storedGroups, |
| 749 recentDismissals: {} |
| 750 }); |
| 766 | 751 |
| 767 this.mockGlobals.expects(once()). | 752 this.mockGlobals.expects(once()). |
| 768 scheduleNextPoll(eqJSON(expectedUpdatedGroups), false); | 753 scheduleNextPoll(eqJSON(expectedUpdatedGroups), false); |
| 769 | 754 |
| 770 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments(); | 755 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments(); |
| 771 this.mockGlobals.expects(once()). | 756 this.mockGlobals.expects(once()). |
| 772 combineAndShowNotificationCards( | 757 combineAndShowNotificationCards( |
| 773 combineAndShowNotificationCardsSavedArgs.match( | 758 combineAndShowNotificationCardsSavedArgs.match( |
| 774 eqJSON(expectedUpdatedGroups)), | 759 eqJSON(expectedUpdatedGroups)), |
| 775 combineAndShowNotificationCardsSavedArgs.match( | 760 combineAndShowNotificationCardsSavedArgs.match( |
| 776 ANYTHING), | 761 ANYTHING), |
| 777 combineAndShowNotificationCardsSavedArgs.match( | 762 combineAndShowNotificationCardsSavedArgs.match( |
| 778 eq(fakeOnCardShownFunction))). | 763 eq(fakeOnCardShownFunction))). |
| 779 will(invokeCallback(combineAndShowNotificationCardsSavedArgs, 1)); | 764 will(invokeCallback(combineAndShowNotificationCardsSavedArgs, 1)); |
| 780 | 765 |
| 781 this.mockApis.expects(once()). | 766 this.mockApis.expects(once()). |
| 782 chrome_storage_local_set( | 767 chrome_storage_local_set( |
| 783 eqJSON({ | 768 eqJSON({ |
| 784 notificationGroups: expectedUpdatedGroups, | 769 notificationGroups: expectedUpdatedGroups, |
| 785 recentDismissals: {}})); | 770 recentDismissals: {}})); |
| 786 | 771 |
| 787 this.mockGlobals.expects(once()). | 772 this.mockGlobals.expects(once()). |
| 788 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS); | 773 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS); |
| 789 | 774 |
| 790 // Invoking the tested function. | 775 // Invoking the tested function. |
| 791 processServerResponse(serverResponse, fakeOnCardShownFunction); | 776 processServerResponse(serverResponse, fakeOnCardShownFunction); |
| 792 }); | 777 }); |
| OLD | NEW |