| 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 f0c5674abc2f844509eda4549a4f616d651de244..6763c31cafc16e89cb5e004cf221fcab30b70ed0 100644
|
| --- a/chrome/browser/resources/google_now/background_unittest.gtestjs
|
| +++ b/chrome/browser/resources/google_now/background_unittest.gtestjs
|
| @@ -49,6 +49,275 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() {
|
| testTaskPair(STATE_CHANGED_TASK_NAME, STATE_CHANGED_TASK_NAME, false);
|
| });
|
|
|
| +var testNotificationId = 'TEST GROUP-SOME TEST ID';
|
| +var testChromeNotificationId = 'TEST CARD ID';
|
| +var testNotification1 =
|
| + {testNotificationField: 'TEST NOTIFICATION VALUE1', priority: -1};
|
| +var testNotification2 =
|
| + {testNotificationField: 'TEST NOTIFICATION VALUE2', priority: 0};
|
| +var testActionUrls1 = {testField: 'TEST VALUE1'};
|
| +var testActionUrls2 = {testField: 'TEST VALUE2'};
|
| +var testDismissal1 = {testDismissalField: 'TEST DISMISSAL VALUE 1'};
|
| +var testDismissal2 = {testDismissalField: 'TEST DISMISSAL VALUE 2'};
|
| +var testVersion = 7;
|
| +var testTimestamp1 = 300000;
|
| +var testTimestamp2 = 600000;
|
| +var testGroupRank1 = 19;
|
| +var testGroupRank2 = 23;
|
| +var testTriggerUnmerged = {showTimeSec: 100, hideTimeSec: 200};
|
| +var testTriggerMerged = {showTime: 300007, hideTime: 300011};
|
| +var testVersion1 = 29;
|
| +var testVersion2 = 31;
|
| +
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'MergeCardsEmptyNoTrigger',
|
| + function() {
|
| + // Tests merging a card with an empty trigger into an 'undefined' merged
|
| + // card. This should start a new card.
|
| +
|
| + // Invoking the tested function.
|
| + var resultingMergedCard = mergeCards(undefined, {
|
| + notificationId: testNotificationId,
|
| + chromeNotificationId: testChromeNotificationId,
|
| + version: testVersion1,
|
| + chromeNotificationOptions: testNotification1,
|
| + actionUrls: testActionUrls1,
|
| + dismissal: testDismissal1
|
| + }, testTimestamp1, testGroupRank1);
|
| +
|
| + // Check the return value.
|
| + assertEquals(
|
| + JSON.stringify({
|
| + dismissals: [
|
| + {
|
| + notificationId: testNotificationId,
|
| + parameters: testDismissal1
|
| + }
|
| + ],
|
| + groupRank: testGroupRank1,
|
| + trigger: {},
|
| + timestamp: testTimestamp1,
|
| + notification: testNotification1,
|
| + actionUrls: testActionUrls1,
|
| + version: testVersion1
|
| + }),
|
| + JSON.stringify(resultingMergedCard));
|
| + });
|
| +
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'MergeCards1',
|
| + function() {
|
| + // Tests merging a unmerged card into a merged card.
|
| + // Unmerged card priority is greater than merged card one. Unmerged card
|
| + // rank is less than merged card one, and it's older.
|
| +
|
| + // Setup.
|
| + var mergedCard = {
|
| + trigger: testTriggerMerged,
|
| + version: testVersion1,
|
| + timestamp: testTimestamp2,
|
| + notification: testNotification1,
|
| + actionUrls: testActionUrls1,
|
| + groupRank: testGroupRank2,
|
| + dismissals:
|
| + [{notificationId: testNotificationId, parameters: testDismissal1}]
|
| + };
|
| +
|
| + var unmergedNotification = {
|
| + notificationId: testNotificationId,
|
| + chromeNotificationId: testChromeNotificationId,
|
| + version: testVersion2,
|
| + chromeNotificationOptions: testNotification2,
|
| + actionUrls: testActionUrls2,
|
| + dismissal: testDismissal2,
|
| + trigger: testTriggerUnmerged
|
| + };
|
| +
|
| + // Invoking the tested function.
|
| + var resultingMergedCard = mergeCards(
|
| + mergedCard, unmergedNotification, testTimestamp1, testGroupRank1);
|
| +
|
| + // Check the return value.
|
| + assertEquals(
|
| + JSON.stringify({
|
| + trigger: testTriggerMerged,
|
| + version: testVersion1,
|
| + timestamp: testTimestamp2,
|
| + notification: {
|
| + testNotificationField: 'TEST NOTIFICATION VALUE1',
|
| + priority: 0
|
| + },
|
| + actionUrls: testActionUrls1,
|
| + groupRank: testGroupRank2,
|
| + dismissals: [
|
| + {notificationId: testNotificationId, parameters: testDismissal1},
|
| + {notificationId: testNotificationId, parameters: testDismissal2}
|
| + ]
|
| + }),
|
| + JSON.stringify(resultingMergedCard));
|
| + });
|
| +
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'MergeCards2',
|
| + function() {
|
| + // Tests merging a unmerged card into a merged card.
|
| + // Unmerged card priority is less than merged card one. Unmerged card rank
|
| + // is greater than merged card one, and it's older.
|
| +
|
| + // Setup.
|
| + var mergedCard = {
|
| + trigger: testTriggerMerged,
|
| + version: testVersion1,
|
| + timestamp: testTimestamp2,
|
| + notification: testNotification2,
|
| + actionUrls: testActionUrls1,
|
| + groupRank: testGroupRank1,
|
| + dismissals:
|
| + [{notificationId: testNotificationId, parameters: testDismissal1}]
|
| + };
|
| +
|
| + var unmergedNotification = {
|
| + notificationId: testNotificationId,
|
| + chromeNotificationId: testChromeNotificationId,
|
| + version: testVersion2,
|
| + chromeNotificationOptions: testNotification1,
|
| + actionUrls: testActionUrls2,
|
| + dismissal: testDismissal2,
|
| + trigger: testTriggerUnmerged
|
| + };
|
| +
|
| + // Invoking the tested function.
|
| + var resultingMergedCard = mergeCards(
|
| + mergedCard, unmergedNotification, testTimestamp1, testGroupRank2);
|
| +
|
| + // Check the return value.
|
| + assertEquals(
|
| + JSON.stringify({
|
| + trigger: {showTime: 400000, hideTime: 500000},
|
| + version: testVersion1,
|
| + timestamp: testTimestamp2,
|
| + notification: {
|
| + testNotificationField: 'TEST NOTIFICATION VALUE2',
|
| + priority: 0
|
| + },
|
| + actionUrls: testActionUrls1,
|
| + groupRank: testGroupRank2,
|
| + dismissals: [
|
| + {notificationId: testNotificationId, parameters: testDismissal1},
|
| + {notificationId: testNotificationId, parameters: testDismissal2}
|
| + ]
|
| + }),
|
| + JSON.stringify(resultingMergedCard));
|
| + });
|
| +
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'MergeCards3',
|
| + function() {
|
| + // Tests merging a unmerged card into a merged card.
|
| + // Unmerged card priority is less than merged card one. Unmerged card rank
|
| + // is less than merged card one, and it's newer.
|
| +
|
| + // Setup.
|
| + var mergedCard = {
|
| + trigger: testTriggerMerged,
|
| + version: testVersion1,
|
| + timestamp: testTimestamp1,
|
| + notification: testNotification2,
|
| + actionUrls: testActionUrls1,
|
| + groupRank: testGroupRank2,
|
| + dismissals:
|
| + [{notificationId: testNotificationId, parameters: testDismissal1}]
|
| + };
|
| +
|
| + var unmergedNotification = {
|
| + notificationId: testNotificationId,
|
| + chromeNotificationId: testChromeNotificationId,
|
| + version: testVersion2,
|
| + chromeNotificationOptions: testNotification1,
|
| + actionUrls: testActionUrls2,
|
| + dismissal: testDismissal2,
|
| + trigger: testTriggerUnmerged
|
| + };
|
| +
|
| + // Invoking the tested function.
|
| + var resultingMergedCard = mergeCards(
|
| + mergedCard, unmergedNotification, testTimestamp2, testGroupRank1);
|
| +
|
| + // Check the return value.
|
| + assertEquals(
|
| + JSON.stringify({
|
| + trigger: testTriggerMerged,
|
| + version: testVersion2,
|
| + timestamp: testTimestamp2,
|
| + notification: {
|
| + testNotificationField: 'TEST NOTIFICATION VALUE1',
|
| + priority: 0
|
| + },
|
| + actionUrls: testActionUrls2,
|
| + groupRank: testGroupRank2,
|
| + dismissals: [
|
| + {notificationId: testNotificationId, parameters: testDismissal1},
|
| + {notificationId: testNotificationId, parameters: testDismissal2}
|
| + ]
|
| + }),
|
| + JSON.stringify(resultingMergedCard));
|
| + });
|
| +
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'MergeGroup',
|
| + function() {
|
| + // Tests mergeGroup method.
|
| +
|
| + // Setup.
|
| + this.makeAndRegisterMockGlobals(['mergeCards']);
|
| +
|
| + this.mockGlobals.expects(once()).
|
| + mergeCards(
|
| + undefined,
|
| + eqJSON({chromeNotificationId: 'ID 1', testField: 'TEST_FIELD1'}),
|
| + 300000,
|
| + 17).
|
| + will(returnValue({testField: 'RESULT 1'}));
|
| + this.mockGlobals.expects(once()).
|
| + mergeCards(
|
| + eqJSON({testField: 'TEST_FIELD22'}),
|
| + eqJSON({chromeNotificationId: 'ID 2', testField: 'TEST_FIELD2'}),
|
| + 300000,
|
| + 17).
|
| + will(returnValue({testField: 'RESULT 2'}));
|
| +
|
| + var group = {
|
| + cards: [
|
| + {chromeNotificationId: 'ID 1', testField: 'TEST_FIELD1'},
|
| + {chromeNotificationId: 'ID 2', testField: 'TEST_FIELD2'}
|
| + ],
|
| + cardsTimestamp: 300000,
|
| + nextPollTime: 600000,
|
| + rank: 17
|
| + };
|
| +
|
| + var mergedCards = {
|
| + 'ID 2': { testField: 'TEST_FIELD22' },
|
| + 'ID 3': { testField: 'TEST_FIELD3' }
|
| + };
|
| +
|
| + // Invoking the tested function.
|
| + mergeGroup(mergedCards, group);
|
| +
|
| + // Check the output parameter.
|
| + assertEquals(
|
| + JSON.stringify({
|
| + 'ID 2': { testField: 'RESULT 2' },
|
| + 'ID 3': { testField: 'TEST_FIELD3'},
|
| + 'ID 1': { testField: 'RESULT 1' }}),
|
| + JSON.stringify(mergedCards));
|
| + });
|
| +
|
| /**
|
| * Mocks global functions and APIs that initialize() depends upon.
|
| * @param {Test} fixture Test fixture.
|
| @@ -63,7 +332,7 @@ function mockInitializeDependencies(fixture) {
|
| fixture.makeAndRegisterMockApis([
|
| 'authenticationManager.isSignedIn',
|
| 'chrome.location.clearWatch',
|
| - 'chrome.storage.local.set',
|
| + 'chrome.storage.local.remove',
|
| 'instrumented.metricsPrivate.getVariationParams',
|
| 'instrumented.notifications.getAll',
|
| 'instrumented.preferencesPrivate.googleGeolocationAccessEnabled.get',
|
| @@ -148,7 +417,8 @@ function expectInitialization(mockApisObj) {
|
| mockApisObj.expects(once()).
|
| updateCardsAttempts_stop();
|
| mockApisObj.expects(once()).
|
| - chrome_storage_local_set(eqJSON({notificationsData: {}}));
|
| + chrome_storage_local_remove(
|
| + eqJSON(['notificationsData', 'notificationGroups']));
|
| var tasksAddSavedArgs = new SaveMockArguments();
|
| mockApisObj.expects(once()).
|
| tasks_add(
|
| @@ -416,14 +686,14 @@ TEST_F(
|
|
|
| TEST_F(
|
| 'GoogleNowBackgroundUnitTest',
|
| - 'OnNotificationClicked_ActionUrlsNotObject',
|
| + 'OnNotificationClicked_ActionUrlsUndefined',
|
| function() {
|
| - // Tests the case when the data associated with notification id is not an
|
| - // object, probably because of a malformed server response.
|
| + // 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 = 'string, not object';
|
| + var testActionUrls = undefined;
|
| var testNotificationId = 'TEST_ID';
|
| var testNotificationData = {
|
| notificationsData: {'TEST_ID': {actionUrls: testActionUrls}}
|
| @@ -438,6 +708,8 @@ TEST_F(
|
| storageGetSavedArgs.match(eq('notificationsData')),
|
| storageGetSavedArgs.match(ANYTHING)).
|
| will(invokeCallback(storageGetSavedArgs, 1, testNotificationData));
|
| + this.mockLocalFunctions.expects(once()).selector(undefined).will(
|
| + returnValue(undefined));
|
|
|
| // Invoking the tested function.
|
| onNotificationClicked(
|
|
|