| 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 21bd1882825c0200bbc2348e01ed7c45de9277e4..b6e929910d0b20bbbf0e427ed6f066102b6e32ab 100644
|
| --- a/chrome/browser/resources/google_now/background_unittest.gtestjs
|
| +++ b/chrome/browser/resources/google_now/background_unittest.gtestjs
|
| @@ -318,6 +318,137 @@ TEST_F(
|
| JSON.stringify(mergedCards));
|
| });
|
|
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'MergeAndShowNotificationCards',
|
| + function() {
|
| + // Tests mergeAndShowNotificationCards function.
|
| + // The test passes 2 groups to mergeAndShowNotificationCards, checks that
|
| + // it calls mergeGroup() for each of these groups and calls
|
| + // showNotificationCards() with the results of these mergeGroup() calls.
|
| +
|
| + // Setup and expectations.
|
| + var testGroups = {
|
| + 'TEST GROUP 1': {testField: 'TEST VALUE 1'},
|
| + 'TEST GROUP 2': {testField: 'TEST VALUE 2'}
|
| + };
|
| +
|
| + this.makeAndRegisterMockGlobals(['mergeGroup', 'showNotificationCards']);
|
| +
|
| + var mergeGroupSavedArgs = new SaveMockArguments();
|
| + this.mockGlobals.expects(once()).
|
| + mergeGroup(
|
| + mergeGroupSavedArgs.match(eqJSON({})),
|
| + mergeGroupSavedArgs.match(eqJSON({testField: 'TEST VALUE 1'}))).
|
| + will(callFunction(function() {
|
| + mergeGroupSavedArgs.arguments[0].card1 = {
|
| + testValue: 'TEST CARD VALUE 1'
|
| + };
|
| + }));
|
| + this.mockGlobals.expects(once()).
|
| + mergeGroup(
|
| + mergeGroupSavedArgs.match(
|
| + eqJSON({card1: {testValue: 'TEST CARD VALUE 1'}})),
|
| + mergeGroupSavedArgs.match(
|
| + eqJSON({testField: 'TEST VALUE 2'}))).
|
| + will(callFunction(function() {
|
| + mergeGroupSavedArgs.arguments[0].card2 = {
|
| + testValue: 'TEST CARD VALUE 2'
|
| + };
|
| + }));
|
| + this.mockGlobals.expects(once()).
|
| + showNotificationCards(eqJSON({
|
| + card1: {testValue: 'TEST CARD VALUE 1'},
|
| + card2: {testValue: 'TEST CARD VALUE 2'}
|
| + }));
|
| +
|
| + // Invoking the tested function.
|
| + mergeAndShowNotificationCards(testGroups);
|
| + });
|
| +
|
| +// TODO(vadimt): Add more tests for parseAndShowNotificationCards().
|
| +TEST_F(
|
| + 'GoogleNowBackgroundUnitTest',
|
| + 'ParseAndShowNotificationCardsAdd1Remove1',
|
| + function() {
|
| + // Tests parseAndShowNotificationCards function for the case when the
|
| + // extension has 2 groups, and the server sends update with 2 groups, one
|
| + // of which is new, and another one matches a stored group. The client
|
| + // has to delete the group that didn't receive an update, keep the
|
| + // existing group that received an update, and add a new stored group for
|
| + // the new group from the server.
|
| +
|
| + // Setup and expectations.
|
| + Date.now = function() { return 500; };
|
| +
|
| + var serverResponse = {
|
| + groups: {
|
| + GROUP1: {},
|
| + GROUP2: {}
|
| + }
|
| + };
|
| +
|
| + var storedGroups = {
|
| + GROUP2: {
|
| + cards: ['c2'],
|
| + cardsTimestamp: 239,
|
| + nextPollTime: 10000,
|
| + rank: 1
|
| + },
|
| + GROUP3: {
|
| + cards: ['c3'],
|
| + cardsTimestamp: 240,
|
| + nextPollTime: 10001,
|
| + rank: 2
|
| + }
|
| + };
|
| +
|
| + var expectedUpdatedGroups = {
|
| + GROUP1: {
|
| + cards: [],
|
| + nextPollTime: Date.now()
|
| + },
|
| + GROUP2: {
|
| + cards: ['c2'],
|
| + cardsTimestamp: 239,
|
| + nextPollTime: 10000,
|
| + rank: 1
|
| + }
|
| + };
|
| +
|
| + this.makeAndRegisterMockGlobals(
|
| + ['scheduleNextPoll', 'mergeAndShowNotificationCards', 'recordEvent']);
|
| +
|
| + this.makeAndRegisterMockApis([
|
| + 'chrome.storage.local.set',
|
| + 'instrumented.storage.local.get'
|
| + ]);
|
| +
|
| + var storageGetSavedArgs = new SaveMockArguments();
|
| + this.mockApis.expects(once()).
|
| + instrumented_storage_local_get(
|
| + storageGetSavedArgs.match(eq('notificationGroups')),
|
| + storageGetSavedArgs.match(ANYTHING)).
|
| + will(invokeCallback(
|
| + storageGetSavedArgs, 1, {notificationGroups: storedGroups}));
|
| +
|
| + this.mockGlobals.expects(once()).
|
| + scheduleNextPoll(eqJSON(expectedUpdatedGroups));
|
| +
|
| + this.mockApis.expects(once()).
|
| + chrome_storage_local_set(
|
| + eqJSON({notificationGroups: expectedUpdatedGroups}));
|
| +
|
| + this.mockGlobals.expects(once()).
|
| + mergeAndShowNotificationCards(eqJSON(expectedUpdatedGroups));
|
| +
|
| + this.mockGlobals.expects(once()).
|
| + recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
|
| +
|
| + // Invoking the tested function.
|
| + parseAndShowNotificationCards(JSON.stringify(serverResponse));
|
| + });
|
| +
|
| /**
|
| * Mocks global functions and APIs that initialize() depends upon.
|
| * @param {Test} fixture Test fixture.
|
|
|