Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: chrome/browser/resources/google_now/background_unittest.gtestjs

Issue 166033010: Convert Google Now's use of chrome.local.storage.get to use Promises (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
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.location.clearWatch', 66 'chrome.location.clearWatch',
67 'chrome.storage.local.remove', 67 'chrome.storage.local.remove',
68 'fillFromChromeLocalStorage',
68 'instrumented.metricsPrivate.getVariationParams', 69 'instrumented.metricsPrivate.getVariationParams',
69 'instrumented.notifications.getAll', 70 'instrumented.notifications.getAll',
70 'instrumented.notifications.getPermissionLevel', 71 'instrumented.notifications.getPermissionLevel',
71 'instrumented.preferencesPrivate.googleGeolocationAccessEnabled.get', 72 'instrumented.preferencesPrivate.googleGeolocationAccessEnabled.get',
72 'instrumented.storage.local.get',
73 'instrumented.webstorePrivate.getBrowserLogin', 73 'instrumented.webstorePrivate.getBrowserLogin',
74 'tasks.add', 74 'tasks.add',
75 'updateCardsAttempts.isRunning', 75 'updateCardsAttempts.isRunning',
76 'updateCardsAttempts.stop' 76 'updateCardsAttempts.stop'
77 ]); 77 ]);
78 } 78 }
79 79
80 /** 80 /**
81 * Sets up the test to expect the state machine calls and send 81 * Sets up the test to expect the state machine calls and send
82 * the specified state machine state. Currently used to test initialize(). 82 * the specified state machine state. Currently used to test initialize().
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 124
125 var notificationGetPermissionLevelSavedArgs = new SaveMockArguments(); 125 var notificationGetPermissionLevelSavedArgs = new SaveMockArguments();
126 fixture.mockApis.expects(once()). 126 fixture.mockApis.expects(once()).
127 instrumented_notifications_getPermissionLevel( 127 instrumented_notifications_getPermissionLevel(
128 notificationGetPermissionLevelSavedArgs.match(ANYTHING)). 128 notificationGetPermissionLevelSavedArgs.match(ANYTHING)).
129 will(invokeCallback( 129 will(invokeCallback(
130 notificationGetPermissionLevelSavedArgs, 130 notificationGetPermissionLevelSavedArgs,
131 0, 131 0,
132 testNotificationPermissionLevel)) 132 testNotificationPermissionLevel))
133 133
134 var storageGetSavedArgs = new SaveMockArguments(); 134 expectChromeLocalStorageGet(
135 fixture.mockApis.expects(once()). 135 fixture,
136 instrumented_storage_local_get( 136 {googleNowEnabled: false},
137 storageGetSavedArgs.match(eq('googleNowEnabled')), 137 {googleNowEnabled: testGoogleNowEnabled});
138 storageGetSavedArgs.match(ANYTHING)).
139 will(invokeCallback(
140 storageGetSavedArgs, 1, {googleNowEnabled: testGoogleNowEnabled}));
141 138
142 fixture.mockGlobals.expects(once()). 139 fixture.mockGlobals.expects(once()).
143 setBackgroundEnable(ANYTHING); 140 setBackgroundEnable(ANYTHING);
144 } 141 }
145 142
146 /** 143 /**
147 * Sets up the test to expect the initialization calls that 144 * Sets up the test to expect the initialization calls that
148 * initialize() invokes. 145 * initialize() invokes.
149 * Note that this CAN NOT be used if any of the methods below are called 146 * Note that this CAN NOT be used if any of the methods below are called
150 * outside of this context with the same argument matchers. 147 * outside of this context with the same argument matchers.
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 }); 321 });
325 322
326 /** 323 /**
327 * Mocks global functions and APIs that onNotificationClicked() depends upon. 324 * Mocks global functions and APIs that onNotificationClicked() depends upon.
328 * @param {Test} fixture Test fixture. 325 * @param {Test} fixture Test fixture.
329 */ 326 */
330 function mockOnNotificationClickedDependencies(fixture) { 327 function mockOnNotificationClickedDependencies(fixture) {
331 fixture.makeAndRegisterMockApis([ 328 fixture.makeAndRegisterMockApis([
332 'chrome.windows.create', 329 'chrome.windows.create',
333 'chrome.windows.update', 330 'chrome.windows.update',
334 'instrumented.storage.local.get', 331 'fillFromChromeLocalStorage',
335 'instrumented.tabs.create']); 332 'instrumented.tabs.create']);
336 } 333 }
337 334
338 TEST_F( 335 TEST_F(
339 'GoogleNowBackgroundUnitTest', 336 'GoogleNowBackgroundUnitTest',
340 'OnNotificationClicked_NoData', 337 'OnNotificationClicked_NoData',
341 function() { 338 function() {
342 // Tests the case when there is no data associated with notification id. 339 // Tests the case when there is no data associated with notification id.
343 // In this case, the function should do nothing. 340 // In this case, the function should do nothing.
344 341
345 // Setup and expectations. 342 // Setup and expectations.
346 var testNotificationId = 'TEST_ID'; 343 var testNotificationId = 'TEST_ID';
347 var testNotificationData = {}; 344 var testNotificationDataRequest = {notificationsData: {}};
345 var testNotificationData = {notificationsData: {}};
348 346
349 mockOnNotificationClickedDependencies(this); 347 mockOnNotificationClickedDependencies(this);
350 this.makeMockLocalFunctions(['selector']); 348 this.makeMockLocalFunctions(['selector']);
351 349
352 var storageGetSavedArgs = new SaveMockArguments(); 350 expectChromeLocalStorageGet(
353 this.mockApis.expects(once()). 351 this, testNotificationDataRequest, testNotificationData);
354 instrumented_storage_local_get(
355 storageGetSavedArgs.match(eq('notificationsData')),
356 storageGetSavedArgs.match(ANYTHING)).
357 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData));
358 352
359 // Invoking the tested function. 353 // Invoking the tested function.
360 onNotificationClicked( 354 onNotificationClicked(
361 testNotificationId, this.mockLocalFunctions.functions().selector); 355 testNotificationId, this.mockLocalFunctions.functions().selector);
362 }); 356 });
363 357
364 TEST_F( 358 TEST_F(
365 'GoogleNowBackgroundUnitTest', 359 'GoogleNowBackgroundUnitTest',
366 'OnNotificationClicked_ActionUrlsUndefined', 360 'OnNotificationClicked_ActionUrlsUndefined',
367 function() { 361 function() {
368 // Tests the case when the data associated with notification id is 362 // Tests the case when the data associated with notification id is
369 // 'undefined'. 363 // 'undefined'.
370 // In this case, the function should do nothing. 364 // In this case, the function should do nothing.
371 365
372 // Setup and expectations. 366 // Setup and expectations.
373 var testActionUrls = undefined; 367 var testActionUrls = undefined;
374 var testNotificationId = 'TEST_ID'; 368 var testNotificationId = 'TEST_ID';
369 var testNotificationDataRequest = {notificationsData: {}};
375 var testNotificationData = { 370 var testNotificationData = {
376 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} 371 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
377 }; 372 };
378 373
379 mockOnNotificationClickedDependencies(this); 374 mockOnNotificationClickedDependencies(this);
380 this.makeMockLocalFunctions(['selector']); 375 this.makeMockLocalFunctions(['selector']);
381 376
382 var storageGetSavedArgs = new SaveMockArguments(); 377 expectChromeLocalStorageGet(
383 this.mockApis.expects(once()). 378 this, testNotificationDataRequest, testNotificationData);
384 instrumented_storage_local_get( 379
385 storageGetSavedArgs.match(eq('notificationsData')),
386 storageGetSavedArgs.match(ANYTHING)).
387 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData));
388 this.mockLocalFunctions.expects(once()).selector(undefined).will( 380 this.mockLocalFunctions.expects(once()).selector(undefined).will(
389 returnValue(undefined)); 381 returnValue(undefined));
390 382
391 // Invoking the tested function. 383 // Invoking the tested function.
392 onNotificationClicked( 384 onNotificationClicked(
393 testNotificationId, this.mockLocalFunctions.functions().selector); 385 testNotificationId, this.mockLocalFunctions.functions().selector);
394 }); 386 });
395 387
396 TEST_F( 388 TEST_F(
397 'GoogleNowBackgroundUnitTest', 389 'GoogleNowBackgroundUnitTest',
398 'OnNotificationClicked_TabCreateSuccess', 390 'OnNotificationClicked_TabCreateSuccess',
399 function() { 391 function() {
400 // Tests the selected URL is OK and crome.tabs.create suceeds. 392 // Tests the selected URL is OK and crome.tabs.create suceeds.
401 393
402 // Setup and expectations. 394 // Setup and expectations.
403 var testActionUrls = {testField: 'TEST VALUE'}; 395 var testActionUrls = {testField: 'TEST VALUE'};
404 var testNotificationId = 'TEST_ID'; 396 var testNotificationId = 'TEST_ID';
397 var testNotificationDataRequest = {notificationsData: {}};
405 var testNotificationData = { 398 var testNotificationData = {
406 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} 399 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
407 }; 400 };
408 var testActionUrl = 'http://testurl.com'; 401 var testActionUrl = 'http://testurl.com';
409 var testCreatedTab = {windowId: 239}; 402 var testCreatedTab = {windowId: 239};
410 403
411 mockOnNotificationClickedDependencies(this); 404 mockOnNotificationClickedDependencies(this);
412 this.makeMockLocalFunctions(['selector']); 405 this.makeMockLocalFunctions(['selector']);
413 406
414 var storageGetSavedArgs = new SaveMockArguments(); 407 expectChromeLocalStorageGet(
415 this.mockApis.expects(once()). 408 this, testNotificationDataRequest, testNotificationData);
416 instrumented_storage_local_get(
417 storageGetSavedArgs.match(eq('notificationsData')),
418 storageGetSavedArgs.match(ANYTHING)).
419 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData));
420 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will( 409 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will(
421 returnValue(testActionUrl)); 410 returnValue(testActionUrl));
422 var chromeTabsCreateSavedArgs = new SaveMockArguments(); 411 var chromeTabsCreateSavedArgs = new SaveMockArguments();
423 this.mockApis.expects(once()). 412 this.mockApis.expects(once()).
424 instrumented_tabs_create( 413 instrumented_tabs_create(
425 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), 414 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
426 chromeTabsCreateSavedArgs.match(ANYTHING)). 415 chromeTabsCreateSavedArgs.match(ANYTHING)).
427 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); 416 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
428 this.mockApis.expects(once()).chrome_windows_update( 417 this.mockApis.expects(once()).chrome_windows_update(
429 testCreatedTab.windowId, 418 testCreatedTab.windowId,
430 eqJSON({focused: true})); 419 eqJSON({focused: true}));
431 420
432 // Invoking the tested function. 421 // Invoking the tested function.
433 onNotificationClicked( 422 onNotificationClicked(
434 testNotificationId, this.mockLocalFunctions.functions().selector); 423 testNotificationId, this.mockLocalFunctions.functions().selector);
435 }); 424 });
436 425
437 TEST_F( 426 TEST_F(
438 'GoogleNowBackgroundUnitTest', 427 'GoogleNowBackgroundUnitTest',
439 'OnNotificationClicked_TabCreateFail', 428 'OnNotificationClicked_TabCreateFail',
440 function() { 429 function() {
441 // Tests the selected URL is OK and crome.tabs.create fails. 430 // Tests the selected URL is OK and crome.tabs.create fails.
442 // In this case, the function should invoke chrome.windows.create as a 431 // In this case, the function should invoke chrome.windows.create as a
443 // second attempt. 432 // second attempt.
444 433
445 // Setup and expectations. 434 // Setup and expectations.
446 var testActionUrls = {testField: 'TEST VALUE'}; 435 var testActionUrls = {testField: 'TEST VALUE'};
447 var testNotificationId = 'TEST_ID'; 436 var testNotificationId = 'TEST_ID';
437 var testNotificationDataRequest = {notificationsData: {}};
448 var testNotificationData = { 438 var testNotificationData = {
449 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}} 439 notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
450 }; 440 };
451 var testActionUrl = 'http://testurl.com'; 441 var testActionUrl = 'http://testurl.com';
452 var testCreatedTab = undefined; // chrome.tabs.create fails 442 var testCreatedTab = undefined; // chrome.tabs.create fails
453 443
454 mockOnNotificationClickedDependencies(this); 444 mockOnNotificationClickedDependencies(this);
455 this.makeMockLocalFunctions(['selector']); 445 this.makeMockLocalFunctions(['selector']);
456 446
457 var storageGetSavedArgs = new SaveMockArguments(); 447 expectChromeLocalStorageGet(
458 this.mockApis.expects(once()). 448 this, testNotificationDataRequest, testNotificationData);
459 instrumented_storage_local_get(
460 storageGetSavedArgs.match(eq('notificationsData')),
461 storageGetSavedArgs.match(ANYTHING)).
462 will(invokeCallback(storageGetSavedArgs, 1, testNotificationData));
463 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will( 449 this.mockLocalFunctions.expects(once()).selector(testActionUrls).will(
464 returnValue(testActionUrl)); 450 returnValue(testActionUrl));
465 var chromeTabsCreateSavedArgs = new SaveMockArguments(); 451 var chromeTabsCreateSavedArgs = new SaveMockArguments();
466 this.mockApis.expects(once()). 452 this.mockApis.expects(once()).
467 instrumented_tabs_create( 453 instrumented_tabs_create(
468 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), 454 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
469 chromeTabsCreateSavedArgs.match(ANYTHING)). 455 chromeTabsCreateSavedArgs.match(ANYTHING)).
470 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); 456 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
471 this.mockApis.expects(once()).chrome_windows_create( 457 this.mockApis.expects(once()).chrome_windows_create(
472 eqJSON({url: testActionUrl, focused: true})); 458 eqJSON({url: testActionUrl, focused: true}));
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 } 736 }
751 }; 737 };
752 738
753 var expectedUpdatedRecentDismissals = { 739 var expectedUpdatedRecentDismissals = {
754 c5: 1800001 740 c5: 1800001
755 }; 741 };
756 742
757 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION'; 743 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
758 744
759 this.makeAndRegisterMockGlobals([ 745 this.makeAndRegisterMockGlobals([
760 'scheduleNextPoll',
761 'combineAndShowNotificationCards', 746 'combineAndShowNotificationCards',
762 'recordEvent' 747 'recordEvent',
748 'scheduleNextPoll'
763 ]); 749 ]);
764 750
765 this.makeAndRegisterMockApis([ 751 this.makeAndRegisterMockApis([
766 'chrome.storage.local.set', 752 'chrome.storage.local.set',
767 'instrumented.storage.local.get' 753 'fillFromChromeLocalStorage'
768 ]); 754 ]);
769 755
770 var storageGetSavedArgs = new SaveMockArguments(); 756 expectChromeLocalStorageGet(
771 this.mockApis.expects(once()). 757 this,
772 instrumented_storage_local_get( 758 {
773 storageGetSavedArgs.match( 759 notificationGroups: {},
774 eq(['notificationGroups', 'recentDismissals'])), 760 recentDismissals: {}
775 storageGetSavedArgs.match(ANYTHING)). 761 },
776 will(invokeCallback( 762 {
777 storageGetSavedArgs, 763 notificationGroups: storedGroups,
778 1, 764 recentDismissals: recentDismissals
779 { 765 });
780 notificationGroups: storedGroups,
781 recentDismissals: recentDismissals
782 }));
783 766
784 this.mockGlobals.expects(once()). 767 this.mockGlobals.expects(once()).
785 scheduleNextPoll(eqJSON(expectedUpdatedGroups), true); 768 scheduleNextPoll(eqJSON(expectedUpdatedGroups), true);
786 769
787 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments(); 770 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments();
788 this.mockGlobals.expects(once()). 771 this.mockGlobals.expects(once()).
789 combineAndShowNotificationCards( 772 combineAndShowNotificationCards(
790 combineAndShowNotificationCardsSavedArgs.match( 773 combineAndShowNotificationCardsSavedArgs.match(
791 eqJSON(expectedUpdatedGroups)), 774 eqJSON(expectedUpdatedGroups)),
792 combineAndShowNotificationCardsSavedArgs.match( 775 combineAndShowNotificationCardsSavedArgs.match(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 nextPollTime: 10001 818 nextPollTime: 10001
836 } 819 }
837 }; 820 };
838 821
839 var expectedUpdatedGroups = { 822 var expectedUpdatedGroups = {
840 }; 823 };
841 824
842 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION'; 825 var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
843 826
844 this.makeAndRegisterMockGlobals([ 827 this.makeAndRegisterMockGlobals([
845 'scheduleNextPoll',
846 'combineAndShowNotificationCards', 828 'combineAndShowNotificationCards',
829 'onStateChange',
847 'recordEvent', 830 'recordEvent',
848 'onStateChange' 831 'scheduleNextPoll'
849 ]); 832 ]);
850 833
851 this.makeAndRegisterMockApis([ 834 this.makeAndRegisterMockApis([
852 'chrome.storage.local.set', 835 'chrome.storage.local.set',
853 'instrumented.storage.local.get' 836 'fillFromChromeLocalStorage'
854 ]); 837 ]);
855 838
856 this.mockApis.expects(once()). 839 this.mockApis.expects(once()).
857 chrome_storage_local_set( 840 chrome_storage_local_set(
858 eqJSON({googleNowEnabled: false})); 841 eqJSON({googleNowEnabled: false}));
859 842
860 this.mockGlobals.expects(once()).onStateChange(); 843 this.mockGlobals.expects(once()).onStateChange();
861 844
862 var storageGetSavedArgs = new SaveMockArguments(); 845 expectChromeLocalStorageGet(
863 this.mockApis.expects(once()). 846 this,
864 instrumented_storage_local_get( 847 {
865 storageGetSavedArgs.match( 848 notificationGroups: {},
866 eq(['notificationGroups', 'recentDismissals'])), 849 recentDismissals: {}
867 storageGetSavedArgs.match(ANYTHING)). 850 },
868 will(invokeCallback( 851 {
869 storageGetSavedArgs, 1, {notificationGroups: storedGroups})); 852 notificationGroups: storedGroups,
853 recentDismissals: {}
854 });
870 855
871 this.mockGlobals.expects(once()). 856 this.mockGlobals.expects(once()).
872 scheduleNextPoll(eqJSON(expectedUpdatedGroups), false); 857 scheduleNextPoll(eqJSON(expectedUpdatedGroups), false);
873 858
874 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments(); 859 var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments();
875 this.mockGlobals.expects(once()). 860 this.mockGlobals.expects(once()).
876 combineAndShowNotificationCards( 861 combineAndShowNotificationCards(
877 combineAndShowNotificationCardsSavedArgs.match( 862 combineAndShowNotificationCardsSavedArgs.match(
878 eqJSON(expectedUpdatedGroups)), 863 eqJSON(expectedUpdatedGroups)),
879 combineAndShowNotificationCardsSavedArgs.match( 864 combineAndShowNotificationCardsSavedArgs.match(
880 ANYTHING), 865 ANYTHING),
881 combineAndShowNotificationCardsSavedArgs.match( 866 combineAndShowNotificationCardsSavedArgs.match(
882 eq(fakeOnCardShownFunction))). 867 eq(fakeOnCardShownFunction))).
883 will(invokeCallback(combineAndShowNotificationCardsSavedArgs, 1)); 868 will(invokeCallback(combineAndShowNotificationCardsSavedArgs, 1));
884 869
885 this.mockApis.expects(once()). 870 this.mockApis.expects(once()).
886 chrome_storage_local_set( 871 chrome_storage_local_set(
887 eqJSON({ 872 eqJSON({
888 notificationGroups: expectedUpdatedGroups, 873 notificationGroups: expectedUpdatedGroups,
889 recentDismissals: {}})); 874 recentDismissals: {}}));
890 875
891 this.mockGlobals.expects(once()). 876 this.mockGlobals.expects(once()).
892 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS); 877 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
893 878
894 // Invoking the tested function. 879 // Invoking the tested function.
895 processServerResponse(serverResponse, fakeOnCardShownFunction); 880 processServerResponse(serverResponse, fakeOnCardShownFunction);
896 }); 881 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698