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

Unified Diff: chrome/browser/resources/google_now/background_unittest.gtestjs

Issue 207243002: Google Now Card Processing Pipeline Refactor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Unit Tests Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/google_now/background_test_util.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/google_now/background_unittest.gtestjs
diff --git a/chrome/browser/resources/google_now/background_unittest.gtestjs b/chrome/browser/resources/google_now/background_unittest.gtestjs
index 7cd66f51373fb2a18014299beb5e491494a88642..86c0d12dd5a471286147f4a8a30861a4fe5ea50f 100644
--- a/chrome/browser/resources/google_now/background_unittest.gtestjs
+++ b/chrome/browser/resources/google_now/background_unittest.gtestjs
@@ -24,7 +24,12 @@ GoogleNowBackgroundUnitTest.prototype = {
]
};
-TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() {
+var TEST_NAME = 'GoogleNowBackgroundUnitTest';
+
+/**
+ * Tasks Conflict Test
+ */
+TEST_F(TEST_NAME, 'AreTasksConflicting', function() {
function testTaskPair(newTaskName, scheduledTaskName, expected) {
assertTrue(areTasksConflicting(newTaskName, scheduledTaskName) == expected,
'(' + newTaskName + ', ' + scheduledTaskName + ')');
@@ -54,7 +59,7 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() {
/**
* Server Request Tests
*/
-TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestSuccess', function() {
+TEST_F(TEST_NAME, 'AuthServerRequestSuccess', function() {
expectServerRequests(this, 200, '{}');
var callbackCalled = false;
requestFromServer('GET', 'test/target').then(function(request) {
@@ -65,7 +70,7 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestSuccess', function() {
assertTrue(callbackCalled);
});
-TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestForbidden', function() {
+TEST_F(TEST_NAME, 'AuthServerRequestForbidden', function() {
this.makeAndRegisterMockApis(['authenticationManager.removeToken']);
this.mockApis.expects(once()).authenticationManager_removeToken(ANYTHING);
@@ -80,7 +85,7 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestForbidden', function() {
assertTrue(callbackCalled);
});
-TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoAuth', function() {
+TEST_F(TEST_NAME, 'AuthServerRequestNoAuth', function() {
this.makeAndRegisterMockApis(['authenticationManager.removeToken']);
this.mockApis.expects(once()).authenticationManager_removeToken(ANYTHING);
@@ -136,7 +141,7 @@ function expectServerRequests(fixture, httpStatus, responseText) {
.will(invokeCallback(loadEndSavedArgs, 1, mockXMLHttpRequestProxy));
}
-TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoToken', function() {
+TEST_F(TEST_NAME, 'AuthServerRequestNoToken', function() {
this.makeAndRegisterMockApis([
'authenticationManager.getAuthToken',
'buildServerRequest'
@@ -158,6 +163,329 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AuthServerRequestNoToken', function() {
})
/**
+ * requestNotificationGroupsFromServer Tests
+ */
+TEST_F(TEST_NAME, 'RequestNotificationGroupsFromServerEmpty', function() {
+ this.makeAndRegisterMockGlobals([
+ 'shouldShowExplanatoryCard',
+ 'recordEvent',
+ 'requestFromServer'
+ ]);
+
+ this.mockGlobals.expects(once()).shouldShowExplanatoryCard()
+ .will(returnValue(false));
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_TOTAL);
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_SUCCESS);
+
+ var requestFromServerArgs = new SaveMockArguments();
+ this.mockGlobals.expects(once()).requestFromServer(
+ requestFromServerArgs.match(eq('GET')),
+ requestFromServerArgs.match(ANYTHING))
+ .will(returnValue(
+ Promise.resolve({status: 200, responseText: "{}"})));
+
+ requestNotificationGroupsFromServer([]);
+
+ var pathAndQuery = requestFromServerArgs.arguments[1];
+ var query = pathAndQuery.split('?')[1];
+ assertTrue(query.search('timeZoneOffsetMs') >= 0);
+ assertTrue(query.search('uiLocale') >= 0);
+ assertFalse(query.search('cardExplanation') >= 0);
+});
+
+TEST_F(TEST_NAME, 'RequestNotificationGroupsFromServerWithGroups', function() {
+ this.makeAndRegisterMockGlobals([
+ 'shouldShowExplanatoryCard',
+ 'recordEvent',
+ 'requestFromServer'
+ ]);
+
+ this.mockGlobals.expects(once()).shouldShowExplanatoryCard()
+ .will(returnValue(false));
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_TOTAL);
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_SUCCESS);
+
+ var requestFromServerArgs = new SaveMockArguments();
+ this.mockGlobals.expects(once()).requestFromServer(
+ requestFromServerArgs.match(eq('GET')),
+ requestFromServerArgs.match(ANYTHING))
+ .will(returnValue(
+ Promise.resolve({status: 200, responseText: "{}"})));
+
+ requestNotificationGroupsFromServer(['A', 'B', 'C']);
+
+ var pathAndQuery = requestFromServerArgs.arguments[1];
+ var query = pathAndQuery.split('?')[1];
+ assertTrue(query.search('timeZoneOffsetMs') >= 0);
+ assertTrue(query.search('uiLocale') >= 0);
+ assertFalse(query.search('cardExplanation') >= 0);
+ assertTrue(query.search('requestTypes=A') >= 0);
+ assertTrue(query.search('requestTypes=B') >= 0);
+ assertTrue(query.search('requestTypes=C') >= 0);
+});
+
+TEST_F(TEST_NAME, 'RequestNotificationGroupsFromServerExplanatory', function() {
+ this.makeAndRegisterMockGlobals([
+ 'shouldShowExplanatoryCard',
+ 'recordEvent',
+ 'requestFromServer'
+ ]);
+
+ this.mockGlobals.expects(once()).shouldShowExplanatoryCard()
+ .will(returnValue(true));
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_TOTAL);
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_SUCCESS);
+
+ var requestFromServerArgs = new SaveMockArguments();
+ this.mockGlobals.expects(once()).requestFromServer(
+ requestFromServerArgs.match(eq('GET')),
+ requestFromServerArgs.match(ANYTHING))
+ .will(returnValue(
+ Promise.resolve({status: 200, responseText: "{}"})));
+
+ requestNotificationGroupsFromServer([]);
+
+ var pathAndQuery = requestFromServerArgs.arguments[1];
+ var query = pathAndQuery.split('?')[1];
+ assertTrue(query.search('timeZoneOffsetMs') >= 0);
+ assertTrue(query.search('uiLocale') >= 0);
+ assertTrue(query.search('cardExplanation=true') >= 0);
+});
+
+TEST_F(TEST_NAME, 'RequestNotificationGroupsFromServerFailure', function() {
+ this.makeAndRegisterMockGlobals([
+ 'shouldShowExplanatoryCard',
+ 'recordEvent',
+ 'requestFromServer'
+ ]);
+
+ this.mockGlobals.expects(once()).shouldShowExplanatoryCard()
+ .will(returnValue(false));
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_TOTAL);
+
+ this.mockGlobals.expects(never()).recordEvent(
+ GoogleNowEvent.REQUEST_FOR_CARDS_SUCCESS);
+
+ var requestFromServerArgs = new SaveMockArguments();
+ this.mockGlobals.expects(once()).requestFromServer(
+ requestFromServerArgs.match(eq('GET')),
+ requestFromServerArgs.match(ANYTHING))
+ .will(returnValue(
+ Promise.resolve({status: 401})));
+
+ requestNotificationGroupsFromServer([]);
+});
+
+/**
+ * requestAndUpdateOptIn Tests
+ */
+TEST_F(TEST_NAME, 'RequestAndUpdateOptInOptedIn', function() {
+ this.makeAndRegisterMockApis([
+ 'chrome.storage.local.set',
+ 'onStateChange',
+ 'requestFromServer',
+ 'scheduleNextPoll'
+ ]);
+
+ this.mockApis.expects(once()).requestFromServer('GET', 'settings/optin')
+ .will(returnValue(Promise.resolve({
+ status: 200,
+ responseText: '{"value": true}'})));
+
+ this.mockApis.expects(once())
+ .chrome_storage_local_set(eqJSON({googleNowEnabled: true}));
+
+ this.mockApis.expects(once()).onStateChange();
+
+ this.mockApis.expects(never()).scheduleNextPoll();
+
+ var thenCalled = false;
+ var catchCalled = false;
+ requestAndUpdateOptedIn().then(function() {
+ thenCalled = true;
+ }).catch(function() {
+ catchCalled = true;
+ });
+ assertTrue(thenCalled);
+ assertFalse(catchCalled);
+});
+
+TEST_F(TEST_NAME, 'RequestAndUpdateOptInOptedOut', function() {
+ this.makeAndRegisterMockApis([
+ 'chrome.storage.local.set',
+ 'onStateChange',
+ 'requestFromServer',
+ 'scheduleNextPoll'
+ ]);
+
+ this.mockApis.expects(once()).requestFromServer('GET', 'settings/optin')
+ .will(returnValue(Promise.resolve({
+ status: 200,
+ responseText: '{"value": false}'})));
+
+ this.mockApis.expects(never()).chrome_storage_local_set();
+
+ this.mockApis.expects(never()).onStateChange();
+
+ this.mockApis.expects(once()).scheduleNextPoll(eqJSON({}), false);
+
+ var thenCalled = false;
+ var catchCalled = false;
+ requestAndUpdateOptedIn().then(function() {
+ thenCalled = true;
+ }).catch(function() {
+ catchCalled = true;
+ });
+ assertFalse(thenCalled);
+ assertTrue(catchCalled);
+});
+
+TEST_F(TEST_NAME, 'RequestAndUpdateOptInFailure', function() {
+ this.makeAndRegisterMockApis([
+ 'chrome.storage.local.set',
+ 'onStateChange',
+ 'requestFromServer',
+ 'scheduleNextPoll'
+ ]);
+
+ this.mockApis.expects(once()).requestFromServer('GET', 'settings/optin')
+ .will(returnValue(Promise.resolve({status: 404})));
+
+ this.mockApis.expects(never()).chrome_storage_local_set();
+
+ this.mockApis.expects(never()).onStateChange();
+
+ this.mockApis.expects(never()).scheduleNextPoll();
+
+ var thenCalled = false;
+ var catchCalled = false;
+ requestAndUpdateOptedIn().then(function() {
+ thenCalled = true;
+ }).catch(function() {
+ catchCalled = true;
+ });
+ assertFalse(thenCalled);
+ assertTrue(catchCalled);
+});
+
+/**
+ * getGroupsToRequest Tests
+ */
+TEST_F(TEST_NAME, 'GetGroupsToRequestNone', function() {
+ this.makeAndRegisterMockApis([
+ 'fillFromChromeLocalStorage',
+ 'Date.now'
+ ]);
+
+ this.mockApis.expects(once())
+ .fillFromChromeLocalStorage(eqJSON({notificationGroups: {}}))
+ .will(returnValue(Promise.resolve({notificationGroups: {}})));
+
+ this.mockApis.expects(once()).Date_now().will(returnValue(20));
+
+ getGroupsToRequest().then(function(groupsToRequest) {
+ assertTrue(JSON.stringify(groupsToRequest) === '[]');
+ });
+});
+
+TEST_F(TEST_NAME, 'GetGroupsToRequestWithGroups', function() {
+ this.makeAndRegisterMockApis([
+ 'fillFromChromeLocalStorage',
+ 'Date.now'
+ ]);
+
+ this.mockApis.expects(once())
+ .fillFromChromeLocalStorage(eqJSON({notificationGroups: {}}))
+ .will(returnValue(Promise.resolve({notificationGroups: {
+ TIME18: {nextPollTime: 18},
+ TIME19: {nextPollTime: 19},
+ TIME20: {nextPollTime: 20},
+ TIME21: {nextPollTime: 21},
+ TIME22: {nextPollTime: 22},
+ TIMEUNDEF: {}
+ }})));
+
+ this.mockApis.expects(once()).Date_now().will(returnValue(20));
+
+ getGroupsToRequest().then(function(groupsToRequest) {
+ assertTrue(groupsToRequest.length == 3);
+ assertTrue(groupsToRequest.indexOf('TIME18') >= 0);
+ assertTrue(groupsToRequest.indexOf('TIME19') >= 0);
+ assertTrue(groupsToRequest.indexOf('TIME20') >= 0);
+ });
+});
+
+/**
+ * combineGroup Tests
+ */
+TEST_F(TEST_NAME, 'CombineGroup', function() {
+ // Tests combineGroup function. Verifies that both notifications with and
+ // without show time are handled correctly and that cards are correctly
+ // added to existing cards with same ID or start a new combined card.
+
+ // Setup and expectations.
+ var combinedCards = {
+ 'EXISTING CARD': [1]
+ };
+
+ var receivedNotificationNoShowTime = {
+ chromeNotificationId: 'EXISTING CARD',
+ trigger: {hideTimeSec: 1}
+ };
+ var receivedNotificationWithShowTime = {
+ chromeNotificationId: 'NEW CARD',
+ trigger: {showTimeSec: 2, hideTimeSec: 3}
+ }
+
+ var storedGroup = {
+ cardsTimestamp: 10000,
+ cards: [
+ receivedNotificationNoShowTime,
+ receivedNotificationWithShowTime
+ ]
+ };
+
+ // Invoking the tested function.
+ combineGroup(combinedCards, storedGroup);
+
+ // Check the output value.
+ var expectedCombinedCards = {
+ 'EXISTING CARD': [
+ 1,
+ {
+ receivedNotification: receivedNotificationNoShowTime,
+ hideTime: 11000
+ }
+ ],
+ 'NEW CARD': [
+ {
+ receivedNotification: receivedNotificationWithShowTime,
+ showTime: 12000,
+ hideTime: 13000
+ }
+ ]
+ };
+
+ assertEquals(
+ JSON.stringify(expectedCombinedCards),
+ JSON.stringify(combinedCards));
+});
+
+/**
* Mocks global functions and APIs that initialize() depends upon.
* @param {Test} fixture Test fixture.
*/
@@ -257,45 +585,40 @@ function expectInitialization(mockApisObj) {
updateCardsAttemptsIsRunningSavedArgs, 0, false));
}
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'Initialize_ToastStateEmpty',
- function() {
- // Tests the case when getAuthToken fails most likely because the user is
- // not signed in. In this case, the function should quietly exit after
- // finding out that getAuthToken fails.
+TEST_F(TEST_NAME,'Initialize_ToastStateEmpty', function() {
+ // Tests the case when getAuthToken fails most likely because the user is
+ // not signed in. In this case, the function should quietly exit after
+ // finding out that getAuthToken fails.
- // Setup and expectations.
- var testIdentityToken = undefined;
- var testExperimentVariationParams = {};
- var testNotificationPermissionLevel = 'denied';
- var testGoogleNowEnabled = undefined;
+ // Setup and expectations.
+ var testIdentityToken = undefined;
+ var testExperimentVariationParams = {};
+ var testNotificationPermissionLevel = 'denied';
+ var testGoogleNowEnabled = undefined;
- mockInitializeDependencies(this);
+ mockInitializeDependencies(this);
- this.mockGlobals.expects(once()).recordEvent(
- GoogleNowEvent.EXTENSION_START);
+ this.mockGlobals.expects(once()).recordEvent(GoogleNowEvent.EXTENSION_START);
- this.mockGlobals.expects(once()).recordEvent(
- GoogleNowEvent.STOPPED);
+ this.mockGlobals.expects(once()).recordEvent(GoogleNowEvent.STOPPED);
- this.mockGlobals.expects(once()).recordEvent(
- GoogleNowEvent.SIGNED_OUT);
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.SIGNED_OUT);
- expectInitialization(this.mockApis);
+ expectInitialization(this.mockApis);
- expectStateMachineCalls(
- this,
- testIdentityToken,
- testExperimentVariationParams,
- testNotificationPermissionLevel,
- testGoogleNowEnabled);
+ expectStateMachineCalls(
+ this,
+ testIdentityToken,
+ testExperimentVariationParams,
+ testNotificationPermissionLevel,
+ testGoogleNowEnabled);
- // Invoking the tested function.
- initialize();
- });
+ // Invoking the tested function.
+ initialize();
+});
-TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_RunGoogleNow', function() {
+TEST_F(TEST_NAME, 'Initialize_RunGoogleNow', function() {
// Tests if Google Now will invoke startPollingCards when all
// of the required state is fulfilled.
@@ -307,8 +630,7 @@ TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_RunGoogleNow', function() {
mockInitializeDependencies(this);
- this.mockGlobals.expects(once()).recordEvent(
- GoogleNowEvent.EXTENSION_START);
+ this.mockGlobals.expects(once()).recordEvent(GoogleNowEvent.EXTENSION_START);
expectInitialization(this.mockApis);
@@ -328,7 +650,7 @@ TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_RunGoogleNow', function() {
/**
* No Cards Event Recording Tests
*/
-TEST_F('GoogleNowBackgroundUnitTest', 'NoCardsSignedOut', function() {
+TEST_F(TEST_NAME, 'NoCardsSignedOut', function() {
var signedIn = false;
var notificationEnabled = false;
var googleNowEnabled = false;
@@ -351,33 +673,30 @@ TEST_F('GoogleNowBackgroundUnitTest', 'NoCardsSignedOut', function() {
updateRunningState(signedIn, true, notificationEnabled, googleNowEnabled);
});
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'NoCardsNotificationsDisabled',
- function() {
- var signedIn = true;
- var notificationEnabled = false;
- var googleNowEnabled = false;
- this.makeAndRegisterMockGlobals([
- 'recordEvent',
- 'setBackgroundEnable',
- 'setShouldPollCards']);
-
- this.mockGlobals.stubs().setBackgroundEnable(ANYTHING);
- this.mockGlobals.stubs().setShouldPollCards(ANYTHING);
-
- this.mockGlobals.expects(once()).recordEvent(
- GoogleNowEvent.STOPPED);
- this.mockGlobals.expects(never()).recordEvent(
- GoogleNowEvent.SIGNED_OUT);
- this.mockGlobals.expects(once()).recordEvent(
- GoogleNowEvent.NOTIFICATION_DISABLED);
- this.mockGlobals.expects(never()).recordEvent(
- GoogleNowEvent.GOOGLE_NOW_DISABLED);
- updateRunningState(signedIn, true, notificationEnabled, googleNowEnabled);
- });
-
-TEST_F('GoogleNowBackgroundUnitTest', 'NoCardsGoogleNowDisabled', function() {
+TEST_F(TEST_NAME, 'NoCardsNotificationsDisabled', function() {
+ var signedIn = true;
+ var notificationEnabled = false;
+ var googleNowEnabled = false;
+ this.makeAndRegisterMockGlobals([
+ 'recordEvent',
+ 'setBackgroundEnable',
+ 'setShouldPollCards']);
+
+ this.mockGlobals.stubs().setBackgroundEnable(ANYTHING);
+ this.mockGlobals.stubs().setShouldPollCards(ANYTHING);
+
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.STOPPED);
+ this.mockGlobals.expects(never()).recordEvent(
+ GoogleNowEvent.SIGNED_OUT);
+ this.mockGlobals.expects(once()).recordEvent(
+ GoogleNowEvent.NOTIFICATION_DISABLED);
+ this.mockGlobals.expects(never()).recordEvent(
+ GoogleNowEvent.GOOGLE_NOW_DISABLED);
+ updateRunningState(signedIn, true, notificationEnabled, googleNowEnabled);
+});
+
+TEST_F(TEST_NAME, 'NoCardsGoogleNowDisabled', function() {
var signedIn = true;
var notificationEnabled = true;
var googleNowEnabled = false;
@@ -400,7 +719,7 @@ TEST_F('GoogleNowBackgroundUnitTest', 'NoCardsGoogleNowDisabled', function() {
updateRunningState(signedIn, true, notificationEnabled, googleNowEnabled);
});
-TEST_F('GoogleNowBackgroundUnitTest', 'NoCardsEverythingEnabled', function() {
+TEST_F(TEST_NAME, 'NoCardsEverythingEnabled', function() {
var signedIn = true;
var notificationEnabled = true;
var googleNowEnabled = true;
@@ -429,562 +748,375 @@ TEST_F('GoogleNowBackgroundUnitTest', 'NoCardsEverythingEnabled', function() {
*/
function mockOnNotificationClickedDependencies(fixture) {
fixture.makeAndRegisterMockApis([
- 'chrome.windows.create',
- 'chrome.windows.update',
- 'fillFromChromeLocalStorage',
- 'instrumented.tabs.create']);
+ 'chrome.windows.create',
+ 'chrome.windows.update',
+ 'fillFromChromeLocalStorage',
+ 'instrumented.tabs.create']);
}
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'OnNotificationClicked_NoData',
- function() {
- // Tests the case when there is no data associated with notification id.
- // In this case, the function should do nothing.
-
- // Setup and expectations.
- var testNotificationId = 'TEST_ID';
- var testNotificationDataRequest = {notificationsData: {}};
- var testNotificationData = {notificationsData: {}};
-
- mockOnNotificationClickedDependencies(this);
- this.makeMockLocalFunctions(['selector']);
-
- expectChromeLocalStorageGet(
- this, testNotificationDataRequest, testNotificationData);
-
- // Invoking the tested function.
- onNotificationClicked(
- testNotificationId, this.mockLocalFunctions.functions().selector);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'OnNotificationClicked_ActionUrlsUndefined',
- function() {
- // Tests the case when the data associated with notification id is
- // 'undefined'.
- // In this case, the function should do nothing.
-
- // Setup and expectations.
- var testActionUrls = undefined;
- var testNotificationId = 'TEST_ID';
- var testNotificationDataRequest = {notificationsData: {}};
- var testNotificationData = {
- notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
- };
-
- mockOnNotificationClickedDependencies(this);
- this.makeMockLocalFunctions(['selector']);
-
- expectChromeLocalStorageGet(
- this, testNotificationDataRequest, testNotificationData);
-
- this.mockLocalFunctions.expects(once())
- .selector(eqJSON(
- testNotificationData.notificationsData[testNotificationId]))
- .will(returnValue(undefined));
-
- // Invoking the tested function.
- onNotificationClicked(
- testNotificationId, this.mockLocalFunctions.functions().selector);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'OnNotificationClicked_TabCreateSuccess',
- function() {
- // Tests the selected URL is OK and crome.tabs.create suceeds.
-
- // Setup and expectations.
- var testActionUrls = {testField: 'TEST VALUE'};
- var testNotificationId = 'TEST_ID';
- var testNotificationDataRequest = {notificationsData: {}};
- var testNotificationData = {
- notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
- };
- var testActionUrl = 'http://testurl.com';
- var testCreatedTab = {windowId: 239};
-
- mockOnNotificationClickedDependencies(this);
- this.makeMockLocalFunctions(['selector']);
-
- expectChromeLocalStorageGet(
- this, testNotificationDataRequest, testNotificationData);
- this.mockLocalFunctions.expects(once())
- .selector(eqJSON(
- testNotificationData.notificationsData[testNotificationId]))
- .will(returnValue(testActionUrl));
- var chromeTabsCreateSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- instrumented_tabs_create(
- chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
- chromeTabsCreateSavedArgs.match(ANYTHING)).
- will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
- this.mockApis.expects(once()).chrome_windows_update(
- testCreatedTab.windowId,
- eqJSON({focused: true}));
-
- // Invoking the tested function.
- onNotificationClicked(
- testNotificationId, this.mockLocalFunctions.functions().selector);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'OnNotificationClicked_TabCreateFail',
- function() {
- // Tests the selected URL is OK and crome.tabs.create fails.
- // In this case, the function should invoke chrome.windows.create as a
- // second attempt.
-
- // Setup and expectations.
- var testActionUrls = {testField: 'TEST VALUE'};
- var testNotificationId = 'TEST_ID';
- var testNotificationDataRequest = {notificationsData: {}};
- var testNotificationData = {
- notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
- };
- var testActionUrl = 'http://testurl.com';
- var testCreatedTab = undefined; // chrome.tabs.create fails
-
- mockOnNotificationClickedDependencies(this);
- this.makeMockLocalFunctions(['selector']);
-
- expectChromeLocalStorageGet(
- this, testNotificationDataRequest, testNotificationData);
- this.mockLocalFunctions.expects(once())
- .selector(eqJSON(
- testNotificationData.notificationsData[testNotificationId]))
- .will(returnValue(testActionUrl));
- var chromeTabsCreateSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- instrumented_tabs_create(
- chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
- chromeTabsCreateSavedArgs.match(ANYTHING)).
- will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
- this.mockApis.expects(once()).chrome_windows_create(
- eqJSON({url: testActionUrl, focused: true}));
-
- // Invoking the tested function.
- onNotificationClicked(
- testNotificationId, this.mockLocalFunctions.functions().selector);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'ShowNotificationCards',
- function() {
- // Tests showNotificationCards function. Checks that the function properly
- // deletes the card that didn't get an update, updates existing card and
- // creates a new card that previously didn't exist.
-
- // Setup and expectations.
- var existingNotifications = {
- 'SHOULD BE DELETED': 'SOMETHING',
- 'SHOULD BE KEPT': 'SOMETHING'
- };
-
- var notificationGroups = {
- TEST_FIELD: 'TEST VALUE'
- };
-
- var cards = {
- 'SHOULD BE KEPT': [1],
- 'NEW CARD': [2]
- };
-
- var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
-
- var expectedUpdatedNotifications = {
- 'SHOULD BE KEPT': 'KEPT CARD NOTIFICATION DATA',
- 'NEW CARD': 'NEW CARD NOTIFICATION DATA'
- };
-
- this.makeAndRegisterMockApis([
- 'cardSet.update',
- 'chrome.storage.local.set',
- 'instrumented.notifications.getAll'
- ]);
- this.makeMockLocalFunctions([
- 'onSuccess'
- ]);
-
- var notificationsGetAllSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- instrumented_notifications_getAll(
- notificationsGetAllSavedArgs.match(ANYTHING)).
- will(invokeCallback(
- notificationsGetAllSavedArgs, 0, existingNotifications));
-
- this.mockApis.expects(once()).
- cardSet_update(
- 'SHOULD BE KEPT',
- [1],
- eqJSON(notificationGroups),
- fakeOnCardShownFunction).
- will(returnValue('KEPT CARD NOTIFICATION DATA'));
- this.mockApis.expects(once()).
- cardSet_update(
- 'NEW CARD',
- [2],
- eqJSON(notificationGroups),
- fakeOnCardShownFunction).
- will(returnValue('NEW CARD NOTIFICATION DATA'));
- this.mockApis.expects(once()).
- cardSet_update(
- 'SHOULD BE DELETED',
- [],
- eqJSON(notificationGroups),
- fakeOnCardShownFunction).
- will(returnValue(undefined));
-
- this.mockApis.expects(once()).
- chrome_storage_local_set(
- eqJSON({notificationsData: expectedUpdatedNotifications}));
-
- this.mockLocalFunctions.expects(once()).
- onSuccess();
-
- // Invoking the tested function.
- showNotificationCards(
- notificationGroups,
- cards,
- this.mockLocalFunctions.functions().onSuccess,
- fakeOnCardShownFunction);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'CombineGroup',
- function() {
- // Tests combineGroup function. Verifies that both notifications with and
- // without show time are handled correctly and that cards are correctly
- // added to existing cards with same ID or start a new combined card.
-
- // Setup and expectations.
- var combinedCards = {
- 'EXISTING CARD': [1]
- };
-
- var receivedNotificationNoShowTime = {
- chromeNotificationId: 'EXISTING CARD',
- trigger: {hideTimeSec: 1}
- };
- var receivedNotificationWithShowTime = {
- chromeNotificationId: 'NEW CARD',
- trigger: {showTimeSec: 2, hideTimeSec: 3}
- }
+TEST_F(TEST_NAME, 'OnNotificationClicked_NoData', function() {
+ // Tests the case when there is no data associated with notification id.
+ // In this case, the function should do nothing.
+
+ // Setup and expectations.
+ var testNotificationId = 'TEST_ID';
+ var testNotificationDataRequest = {notificationsData: {}};
+ var testNotificationData = {notificationsData: {}};
+
+ mockOnNotificationClickedDependencies(this);
+ this.makeMockLocalFunctions(['selector']);
+
+ expectChromeLocalStorageGet(
+ this, testNotificationDataRequest, testNotificationData);
+
+ // Invoking the tested function.
+ onNotificationClicked(
+ testNotificationId, this.mockLocalFunctions.functions().selector);
+});
+
+TEST_F(TEST_NAME, 'OnNotificationClicked_ActionUrlsUndefined', function() {
+ // Tests the case when the data associated with notification id is
+ // 'undefined'.
+ // In this case, the function should do nothing.
+
+ // Setup and expectations.
+ var testActionUrls = undefined;
+ var testNotificationId = 'TEST_ID';
+ var testNotificationDataRequest = {notificationsData: {}};
+ var testNotificationData = {
+ notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
+ };
+
+ mockOnNotificationClickedDependencies(this);
+ this.makeMockLocalFunctions(['selector']);
+
+ expectChromeLocalStorageGet(
+ this, testNotificationDataRequest, testNotificationData);
+
+ this.mockLocalFunctions.expects(once())
+ .selector(eqJSON(
+ testNotificationData.notificationsData[testNotificationId]))
+ .will(returnValue(undefined));
+
+ // Invoking the tested function.
+ onNotificationClicked(
+ testNotificationId, this.mockLocalFunctions.functions().selector);
+});
+
+TEST_F(TEST_NAME, 'OnNotificationClicked_TabCreateSuccess', function() {
+ // Tests the selected URL is OK and crome.tabs.create suceeds.
+
+ // Setup and expectations.
+ var testActionUrls = {testField: 'TEST VALUE'};
+ var testNotificationId = 'TEST_ID';
+ var testNotificationDataRequest = {notificationsData: {}};
+ var testNotificationData = {
+ notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
+ };
+ var testActionUrl = 'http://testurl.com';
+ var testCreatedTab = {windowId: 239};
+
+ mockOnNotificationClickedDependencies(this);
+ this.makeMockLocalFunctions(['selector']);
+
+ expectChromeLocalStorageGet(
+ this, testNotificationDataRequest, testNotificationData);
+ this.mockLocalFunctions.expects(once())
+ .selector(eqJSON(
+ testNotificationData.notificationsData[testNotificationId]))
+ .will(returnValue(testActionUrl));
+ var chromeTabsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_tabs_create(
+ chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
+ chromeTabsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
+ this.mockApis.expects(once()).chrome_windows_update(
+ testCreatedTab.windowId,
+ eqJSON({focused: true}));
+
+ // Invoking the tested function.
+ onNotificationClicked(
+ testNotificationId, this.mockLocalFunctions.functions().selector);
+});
+
+TEST_F(TEST_NAME, 'OnNotificationClicked_TabCreateFail', function() {
+ // Tests the selected URL is OK and crome.tabs.create fails.
+ // In this case, the function should invoke chrome.windows.create as a
+ // second attempt.
+
+ // Setup and expectations.
+ var testActionUrls = {testField: 'TEST VALUE'};
+ var testNotificationId = 'TEST_ID';
+ var testNotificationDataRequest = {notificationsData: {}};
+ var testNotificationData = {
+ notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
+ };
+ var testActionUrl = 'http://testurl.com';
+ var testCreatedTab = undefined; // chrome.tabs.create fails
+
+ mockOnNotificationClickedDependencies(this);
+ this.makeMockLocalFunctions(['selector']);
+
+ expectChromeLocalStorageGet(
+ this, testNotificationDataRequest, testNotificationData);
+ this.mockLocalFunctions.expects(once())
+ .selector(eqJSON(
+ testNotificationData.notificationsData[testNotificationId]))
+ .will(returnValue(testActionUrl));
+ var chromeTabsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_tabs_create(
+ chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
+ chromeTabsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
+ this.mockApis.expects(once()).chrome_windows_create(
+ eqJSON({url: testActionUrl, focused: true}));
+
+ // Invoking the tested function.
+ onNotificationClicked(
+ testNotificationId, this.mockLocalFunctions.functions().selector);
+});
+
+TEST_F(TEST_NAME, 'ShowNotificationGroups', function() {
+ // Tests showNotificationGroups function. Checks that the function properly
+ // deletes the card that didn't get an update, updates existing card and
+ // creates a new card that previously didn't exist.
+
+ // Setup and expectations.
+ var existingNotifications = {
+ 'SHOULD BE DELETED': 'SOMETHING',
+ 'SHOULD BE KEPT': 'SOMETHING'
+ };
+
+ var keptCard = {
+ chromeNotificationId: 'SHOULD BE KEPT',
+ trigger: {showTimeSec: 0, hideTimeSec: 0}
+ };
+
+ var keptNotification = {
+ receivedNotification: keptCard,
+ showTime: 0,
+ hideTime: 0
+ };
+
+ var newCard = {
+ chromeNotificationId: 'NEW CARD',
+ trigger: {showTimeSec: 0, hideTimeSec: 0}
+ };
+
+ var newNotification = {
+ receivedNotification: newCard,
+ showTime: 0,
+ hideTime: 0
+ };
+
+ var notificationGroups = {
+ 'TEST GROUP 1': {cards: [keptCard], cardsTimestamp: 0},
+ 'TEST GROUP 2': {cards: [newCard], cardsTimestamp: 0}
+ };
+
+ var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
+
+ var expectedUpdatedNotifications = {
+ 'SHOULD BE KEPT': 'KEPT CARD NOTIFICATION DATA',
+ 'NEW CARD': 'NEW CARD NOTIFICATION DATA'
+ };
+
+ this.makeAndRegisterMockApis([
+ 'cardSet.update',
+ 'chrome.storage.local.set',
+ 'instrumented.notifications.getAll'
+ ]);
+ this.makeMockLocalFunctions([
+ 'onSuccess'
+ ]);
+
+ var notificationsGetAllSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_notifications_getAll(
+ notificationsGetAllSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ notificationsGetAllSavedArgs, 0, existingNotifications));
+
+ this.mockApis.expects(once()).
+ cardSet_update(
+ 'SHOULD BE KEPT',
+ eqJSON([keptNotification]),
+ eqJSON(notificationGroups),
+ fakeOnCardShownFunction).
+ will(returnValue('KEPT CARD NOTIFICATION DATA'));
+ this.mockApis.expects(once()).
+ cardSet_update(
+ 'NEW CARD',
+ eqJSON([newNotification]),
+ eqJSON(notificationGroups),
+ fakeOnCardShownFunction).
+ will(returnValue('NEW CARD NOTIFICATION DATA'));
+ this.mockApis.expects(once()).
+ cardSet_update(
+ 'SHOULD BE DELETED',
+ [],
+ eqJSON(notificationGroups),
+ fakeOnCardShownFunction).
+ will(returnValue(undefined));
+
+ this.mockApis.expects(once()).
+ chrome_storage_local_set(
+ eqJSON({notificationsData: expectedUpdatedNotifications}));
+
+ this.mockLocalFunctions.expects(once()).
+ onSuccess(undefined);
+
+ // Invoking the tested function.
+ showNotificationGroups(notificationGroups, fakeOnCardShownFunction)
+ .then(this.mockLocalFunctions.functions().onSuccess);
+});
+
+TEST_F(TEST_NAME, 'ProcessServerResponse', function() {
+ // Tests processServerResponse function.
+
+ // Setup and expectations.
+ Date.now = function() { return 3000000; };
+
+ // GROUP1 was requested and contains cards c4 and c5. For c5, there is a
+ // non-expired dismissal, so it will be ignored.
+ // GROUP2 was not requested, but is contained in server response to
+ // indicate that the group still exists. Stored group GROUP2 won't change.
+ // GROUP3 is stored, but is not present in server's response, which means
+ // it doesn't exist anymore. This group will be deleted.
+ // GROUP4 doesn't contain cards, but it was requested. This is treated as
+ // if it had an empty array of cards. Cards in the stored group will be
+ // replaced with an empty array.
+ // GROUP5 doesn't have next poll time, and it will be stored without next
+ // poll time.
+ var serverResponse = {
+ groups: {
+ GROUP1: {requested: true, nextPollSeconds: 46},
+ GROUP2: {requested: false},
+ GROUP4: {requested: true, nextPollSeconds: 45},
+ GROUP5: {requested: true}
+ },
+ notifications: [
+ {notificationId: 'c4', groupName: 'GROUP1'},
+ {notificationId: 'c5', groupName: 'GROUP1'}
+ ]
+ };
+
+ var recentDismissals = {
+ c4: 1800000, // expired dismissal
+ c5: 1800001 // non-expired dismissal
+ };
+
+ var storedGroups = {
+ GROUP2: {
+ cards: [{notificationId: 'c2'}],
+ cardsTimestamp: 239,
+ nextPollTime: 10000
+ },
+ GROUP3: {
+ cards: [{notificationId: 'c3'}],
+ cardsTimestamp: 240,
+ nextPollTime: 10001
+ },
+ GROUP4: {
+ cards: [{notificationId: 'c6'}],
+ cardsTimestamp: 241,
+ nextPollTime: 10002
+ }
+ };
+
+ var expectedUpdatedGroups = {
+ GROUP1: {
+ cards: [{notificationId: 'c4', groupName: 'GROUP1'}],
+ cardsTimestamp: 3000000,
+ nextPollTime: 3046000
+ },
+ GROUP2: {
+ cards: [{notificationId: 'c2'}],
+ cardsTimestamp: 239,
+ nextPollTime: 10000
+ },
+ GROUP4: {
+ cards: [],
+ cardsTimestamp: 3000000,
+ nextPollTime: 3045000
+ },
+ GROUP5: {
+ cards: [],
+ cardsTimestamp: 3000000
+ }
+ };
+
+ var expectedUpdatedRecentDismissals = {
+ c5: 1800001
+ };
+
+ this.makeAndRegisterMockGlobals([
+ 'scheduleNextPoll'
+ ]);
+
+ this.makeAndRegisterMockApis([
+ 'fillFromChromeLocalStorage',
+ ]);
+
+ expectChromeLocalStorageGet(
+ this,
+ {
+ notificationGroups: {},
+ recentDismissals: {}
+ },
+ {
+ notificationGroups: storedGroups,
+ recentDismissals: recentDismissals
+ });
+
+ this.mockGlobals.expects(once()).
+ scheduleNextPoll(eqJSON(expectedUpdatedGroups), true);
+
+ // Invoking the tested function.
+ processServerResponse(serverResponse);
+});
+
+TEST_F(TEST_NAME, 'ProcessServerResponseGoogleNowDisabled', function() {
+ // Tests processServerResponse function for the case when the response
+ // indicates that Google Now is disabled.
+
+ // Setup and expectations.
+ var serverResponse = {
+ googleNowDisabled: true,
+ groups: {}
+ };
+
+ this.makeAndRegisterMockGlobals([
+ 'onStateChange',
+ 'scheduleNextPoll',
+ ]);
+
+ this.makeAndRegisterMockApis([
+ 'chrome.storage.local.set',
+ 'fillFromChromeLocalStorage'
+ ]);
+
+ this.mockApis.expects(once()).
+ chrome_storage_local_set(eqJSON({googleNowEnabled: false}));
+
+ this.mockGlobals.expects(once()).onStateChange();
+
+ expectChromeLocalStorageGet(
+ this,
+ {
+ notificationGroups: {},
+ recentDismissals: {}
+ },
+ {
+ notificationGroups: {},
+ recentDismissals: {}
+ });
+
+ this.mockGlobals.expects(once()).scheduleNextPoll(eqJSON({}), false);
+
+ // Invoking the tested function.
+ processServerResponse(serverResponse);
+});
- var storedGroup = {
- cardsTimestamp: 10000,
- cards: [
- receivedNotificationNoShowTime,
- receivedNotificationWithShowTime
- ]
- };
-
- // Invoking the tested function.
- combineGroup(combinedCards, storedGroup);
-
- // Check the output value.
- var expectedCombinedCards = {
- 'EXISTING CARD': [
- 1,
- {
- receivedNotification: receivedNotificationNoShowTime,
- hideTime: 11000
- }
- ],
- 'NEW CARD': [
- {
- receivedNotification: receivedNotificationWithShowTime,
- showTime: 12000,
- hideTime: 13000
- }
- ]
- };
-
- assertEquals(
- JSON.stringify(expectedCombinedCards),
- JSON.stringify(combinedCards));
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'CombineAndShowNotificationCards',
- function() {
- // Tests combineAndShowNotificationCards function.
- // The test passes 2 groups to combineAndShowNotificationCards, checks
- // that it calls combineGroup() for each of these groups and calls
- // showNotificationCards() with the results of these combineGroup() calls.
-
- // Setup and expectations.
- var testGroups = {
- 'TEST GROUP 1': {testField: 'TEST VALUE 1'},
- 'TEST GROUP 2': {testField: 'TEST VALUE 2'}
- };
-
- var fakeOnSuccessFunction = 'FAKE ON SUCCESS FUNCTION';
- var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
-
- this.makeAndRegisterMockGlobals(
- ['combineGroup', 'showNotificationCards']);
-
- var combineGroupSavedArgs = new SaveMockArguments();
- this.mockGlobals.expects(once()).
- combineGroup(
- combineGroupSavedArgs.match(eqJSON({})),
- combineGroupSavedArgs.match(eqJSON({testField: 'TEST VALUE 1'}))).
- will(callFunction(function() {
- combineGroupSavedArgs.arguments[0].card1 = {
- testValue: 'TEST CARD VALUE 1'
- };
- }));
- this.mockGlobals.expects(once()).
- combineGroup(
- combineGroupSavedArgs.match(
- eqJSON({card1: {testValue: 'TEST CARD VALUE 1'}})),
- combineGroupSavedArgs.match(
- eqJSON({testField: 'TEST VALUE 2'}))).
- will(callFunction(function() {
- combineGroupSavedArgs.arguments[0].card2 = {
- testValue: 'TEST CARD VALUE 2'
- };
- }));
- this.mockGlobals.expects(once()).
- showNotificationCards(
- eqJSON(testGroups),
- eqJSON({
- card1: {testValue: 'TEST CARD VALUE 1'},
- card2: {testValue: 'TEST CARD VALUE 2'}
- }),
- fakeOnSuccessFunction,
- fakeOnCardShownFunction);
-
- // Invoking the tested function.
- combineAndShowNotificationCards(
- testGroups, fakeOnSuccessFunction, fakeOnCardShownFunction);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'ProcessServerResponse',
- function() {
- // Tests processServerResponse function.
-
- // Setup and expectations.
- Date.now = function() { return 3000000; };
-
- // GROUP1 was requested and contains cards c4 and c5. For c5, there is a
- // non-expired dismissal, so it will be ignored.
- // GROUP2 was not requested, but is contained in server response to
- // indicate that the group still exists. Stored group GROUP2 won't change.
- // GROUP3 is stored, but is not present in server's response, which means
- // it doesn't exist anymore. This group will be deleted.
- // GROUP4 doesn't contain cards, but it was requested. This is treated as
- // if it had an empty array of cards. Cards in the stored group will be
- // replaced with an empty array.
- // GROUP5 doesn't have next poll time, and it will be stored without next
- // poll time.
- var serverResponse = {
- groups: {
- GROUP1: {requested: true, nextPollSeconds: 46},
- GROUP2: {requested: false},
- GROUP4: {requested: true, nextPollSeconds: 45},
- GROUP5: {requested: true}
- },
- notifications: [
- {notificationId: 'c4', groupName: 'GROUP1'},
- {notificationId: 'c5', groupName: 'GROUP1'}
- ]
- };
-
- var recentDismissals = {
- c4: 1800000, // expired dismissal
- c5: 1800001 // non-expired dismissal
- };
-
- var storedGroups = {
- GROUP2: {
- cards: [{notificationId: 'c2'}],
- cardsTimestamp: 239,
- nextPollTime: 10000
- },
- GROUP3: {
- cards: [{notificationId: 'c3'}],
- cardsTimestamp: 240,
- nextPollTime: 10001
- },
- GROUP4: {
- cards: [{notificationId: 'c6'}],
- cardsTimestamp: 241,
- nextPollTime: 10002
- }
- };
-
- var expectedUpdatedGroups = {
- GROUP1: {
- cards: [{notificationId: 'c4', groupName: 'GROUP1'}],
- cardsTimestamp: 3000000,
- nextPollTime: 3046000
- },
- GROUP2: {
- cards: [{notificationId: 'c2'}],
- cardsTimestamp: 239,
- nextPollTime: 10000
- },
- GROUP4: {
- cards: [],
- cardsTimestamp: 3000000,
- nextPollTime: 3045000
- },
- GROUP5: {
- cards: [],
- cardsTimestamp: 3000000
- }
- };
-
- var expectedUpdatedRecentDismissals = {
- c5: 1800001
- };
-
- var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
-
- this.makeAndRegisterMockGlobals([
- 'combineAndShowNotificationCards',
- 'recordEvent',
- 'scheduleNextPoll'
- ]);
-
- this.makeAndRegisterMockApis([
- 'chrome.storage.local.set',
- 'fillFromChromeLocalStorage'
- ]);
-
- expectChromeLocalStorageGet(
- this,
- {
- notificationGroups: {},
- recentDismissals: {}
- },
- {
- notificationGroups: storedGroups,
- recentDismissals: recentDismissals
- });
-
- this.mockGlobals.expects(once()).
- scheduleNextPoll(eqJSON(expectedUpdatedGroups), true);
-
- var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments();
- this.mockGlobals.expects(once()).
- combineAndShowNotificationCards(
- combineAndShowNotificationCardsSavedArgs.match(
- eqJSON(expectedUpdatedGroups)),
- combineAndShowNotificationCardsSavedArgs.match(
- ANYTHING),
- combineAndShowNotificationCardsSavedArgs.match(
- eq(fakeOnCardShownFunction))).
- will(invokeCallback(combineAndShowNotificationCardsSavedArgs, 1));
-
- this.mockApis.expects(once()).
- chrome_storage_local_set(
- eqJSON({
- notificationGroups: expectedUpdatedGroups,
- recentDismissals: expectedUpdatedRecentDismissals}));
-
- this.mockGlobals.expects(once()).
- recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
-
- // Invoking the tested function.
- processServerResponse(serverResponse, fakeOnCardShownFunction);
- });
-
-TEST_F(
- 'GoogleNowBackgroundUnitTest',
- 'ProcessServerResponseGoogleNowDisabled',
- function() {
- // Tests processServerResponse function for the case when the response
- // indicates that Google Now is disabled.
-
- // Setup and expectations.
- var serverResponse = {
- googleNowDisabled: true,
- groups: {
- GROUP1: {nextPollTimeSeconds: 200}
- }
- };
-
- var storedGroups = {
- GROUP2: {
- cards: [{notificationId: 'c2'}],
- cardsTimestamp: 239,
- nextPollTime: 10000
- },
- GROUP3: {
- cards: [{notificationId: 'c3'}],
- cardsTimestamp: 240,
- nextPollTime: 10001
- }
- };
-
- var expectedUpdatedGroups = {
- };
-
- var fakeOnCardShownFunction = 'FAKE ON CARD SHOWN FUNCTION';
-
- this.makeAndRegisterMockGlobals([
- 'combineAndShowNotificationCards',
- 'onStateChange',
- 'recordEvent',
- 'scheduleNextPoll'
- ]);
-
- this.makeAndRegisterMockApis([
- 'chrome.storage.local.set',
- 'fillFromChromeLocalStorage'
- ]);
-
- this.mockApis.expects(once()).
- chrome_storage_local_set(
- eqJSON({googleNowEnabled: false}));
-
- this.mockGlobals.expects(once()).onStateChange();
-
- expectChromeLocalStorageGet(
- this,
- {
- notificationGroups: {},
- recentDismissals: {}
- },
- {
- notificationGroups: storedGroups,
- recentDismissals: {}
- });
-
- this.mockGlobals.expects(once()).
- scheduleNextPoll(eqJSON(expectedUpdatedGroups), false);
-
- var combineAndShowNotificationCardsSavedArgs = new SaveMockArguments();
- this.mockGlobals.expects(once()).
- combineAndShowNotificationCards(
- combineAndShowNotificationCardsSavedArgs.match(
- eqJSON(expectedUpdatedGroups)),
- combineAndShowNotificationCardsSavedArgs.match(
- ANYTHING),
- combineAndShowNotificationCardsSavedArgs.match(
- eq(fakeOnCardShownFunction))).
- will(invokeCallback(combineAndShowNotificationCardsSavedArgs, 1));
-
- this.mockApis.expects(once()).
- chrome_storage_local_set(
- eqJSON({
- notificationGroups: expectedUpdatedGroups,
- recentDismissals: {}}));
-
- this.mockGlobals.expects(once()).
- recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
-
- // Invoking the tested function.
- processServerResponse(serverResponse, fakeOnCardShownFunction);
- });
« no previous file with comments | « chrome/browser/resources/google_now/background_test_util.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698