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

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

Issue 32583004: Some unit tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 /** 5 /**
6 * Test fixture for background.js. 6 * Test fixture for background.js.
7 * @constructor 7 * @constructor
8 * @extends {testing.Test} 8 * @extends {testing.Test}
9 */ 9 */
10 function GoogleNowBackgroundUnitTest () { 10 function GoogleNowBackgroundUnitTest () {
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 311
312 // Check the output parameter. 312 // Check the output parameter.
313 assertEquals( 313 assertEquals(
314 JSON.stringify({ 314 JSON.stringify({
315 'ID 2': { testField: 'RESULT 2' }, 315 'ID 2': { testField: 'RESULT 2' },
316 'ID 3': { testField: 'TEST_FIELD3'}, 316 'ID 3': { testField: 'TEST_FIELD3'},
317 'ID 1': { testField: 'RESULT 1' }}), 317 'ID 1': { testField: 'RESULT 1' }}),
318 JSON.stringify(mergedCards)); 318 JSON.stringify(mergedCards));
319 }); 319 });
320 320
321 TEST_F(
322 'GoogleNowBackgroundUnitTest',
323 'MergeAndShowNotificationCards',
324 function() {
325 // Tests mergeAndShowNotificationCards function.
robliao 2013/10/21 23:08:33 Discuss what is passed in and what's expected.
vadimt 2013/10/22 00:57:07 Done.
326
327 // Setup and expectations.
328 var testGroups = {
329 'TEST GROUP 1': {testField: 'TEST VALUE 1'},
330 'TEST GROUP 2': {testField: 'TEST VALUE 2'}
331 };
332
333 this.makeAndRegisterMockGlobals(['mergeGroup', 'showNotificationCards']);
334
335 var mergeGroupSavedArgs = new SaveMockArguments();
336 this.mockGlobals.expects(once()).
337 mergeGroup(
338 mergeGroupSavedArgs.match(eqJSON({})),
339 mergeGroupSavedArgs.match(eqJSON({testField: 'TEST VALUE 1'}))).
340 will(callFunction(function() {
341 mergeGroupSavedArgs.arguments[0].card1 = {
342 testValue: 'TEST CARD VALUE 1'
343 };
344 }));
345 this.mockGlobals.expects(once()).
346 mergeGroup(
347 mergeGroupSavedArgs.match(
348 eqJSON({card1: {testValue: 'TEST CARD VALUE 1'}})),
robliao 2013/10/21 23:08:33 Is card1 guaranteed to be the first thing consider
vadimt 2013/10/22 00:57:07 This is how our JS implementation works. I doubt t
robliao 2013/10/22 16:52:14 I think v8 is one of those implementations where t
349 mergeGroupSavedArgs.match(
350 eqJSON({testField: 'TEST VALUE 2'}))).
351 will(callFunction(function() {
352 mergeGroupSavedArgs.arguments[0].card2 = {
353 testValue: 'TEST CARD VALUE 2'
354 };
355 }));
356 this.mockGlobals.expects(once()).
357 showNotificationCards(eqJSON({
358 card1: {testValue: 'TEST CARD VALUE 1'},
359 card2: {testValue: 'TEST CARD VALUE 2'}
360 }));
361
362 // Invoking the tested function.
363 mergeAndShowNotificationCards(testGroups);
364 });
365
366 // TODO(vadimt): Add more tests for parseAndShowNotificationCards().
367 TEST_F(
368 'GoogleNowBackgroundUnitTest',
369 'ParseAndShowNotificationCardsAdd1Remove1',
370 function() {
371 // Tests parseAndShowNotificationCards function for the case when the
372 // extension has 2 groups, and the server sends update with 2 groups, one
373 // of which is new, and another one matches a stored group. The client
374 // has to delete the group that didn't receive an update, keep the
375 // existing group that received an update, and add a new stored group for
376 // the new group from the server.
377
378 // Setup and expectations.
379 Date.now = function() { return 500; };
380
381 var serverResponse = {
382 groups: {
383 GROUP1: {},
384 GROUP2: {}
385 }
386 };
387
388 var storedGroups = {
389 GROUP2: {
390 cards: ['c2'],
391 cardsTimestamp: 239,
392 nextPollTime: 10000,
393 rank: 1
394 },
395 GROUP3: {
396 cards: ['c3'],
397 cardsTimestamp: 240,
398 nextPollTime: 10001,
399 rank: 2
400 }
401 };
402
403 var expectedUpdatedGroups = {
404 GROUP1: {
405 cards: [],
406 nextPollTime: Date.now()
407 },
408 GROUP2: {
409 cards: ['c2'],
410 cardsTimestamp: 239,
411 nextPollTime: 10000,
412 rank: 1
413 }
414 };
415
416 this.makeAndRegisterMockGlobals(
417 ['scheduleNextPoll', 'mergeAndShowNotificationCards', 'recordEvent']);
418
419 this.makeAndRegisterMockApis([
420 'chrome.storage.local.set',
421 'instrumented.storage.local.get'
422 ]);
423
424 var storageGetSavedArgs = new SaveMockArguments();
425 this.mockApis.expects(once()).
426 instrumented_storage_local_get(
427 storageGetSavedArgs.match(eq('notificationGroups')),
428 storageGetSavedArgs.match(ANYTHING)).
429 will(invokeCallback(
430 storageGetSavedArgs, 1, {notificationGroups: storedGroups}));
431
432 this.mockGlobals.expects(once()).
433 scheduleNextPoll(eqJSON(expectedUpdatedGroups));
434
435 this.mockApis.expects(once()).
436 chrome_storage_local_set(
437 eqJSON({notificationGroups: expectedUpdatedGroups}));
438
439 this.mockGlobals.expects(once()).
440 mergeAndShowNotificationCards(eqJSON(expectedUpdatedGroups));
441
442 this.mockGlobals.expects(once()).
443 recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
444
445 // Invoking the tested function.
446 parseAndShowNotificationCards(JSON.stringify(serverResponse));
447 });
448
321 /** 449 /**
322 * Mocks global functions and APIs that initialize() depends upon. 450 * Mocks global functions and APIs that initialize() depends upon.
323 * @param {Test} fixture Test fixture. 451 * @param {Test} fixture Test fixture.
324 */ 452 */
325 function mockInitializeDependencies(fixture) { 453 function mockInitializeDependencies(fixture) {
326 fixture.makeAndRegisterMockGlobals([ 454 fixture.makeAndRegisterMockGlobals([
327 'recordEvent', 455 'recordEvent',
328 'setBackgroundEnable', 456 'setBackgroundEnable',
329 'startPollingCards' 457 'startPollingCards'
330 ]); 458 ]);
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})), 863 chromeTabsCreateSavedArgs.match(eqJSON({url: testActionUrl})),
736 chromeTabsCreateSavedArgs.match(ANYTHING)). 864 chromeTabsCreateSavedArgs.match(ANYTHING)).
737 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab)); 865 will(invokeCallback(chromeTabsCreateSavedArgs, 1, testCreatedTab));
738 this.mockApis.expects(once()).chrome_windows_create( 866 this.mockApis.expects(once()).chrome_windows_create(
739 eqJSON({url: testActionUrl, focused: true})); 867 eqJSON({url: testActionUrl, focused: true}));
740 868
741 // Invoking the tested function. 869 // Invoking the tested function.
742 onNotificationClicked( 870 onNotificationClicked(
743 testNotificationId, this.mockLocalFunctions.functions().selector); 871 testNotificationId, this.mockLocalFunctions.functions().selector);
744 }); 872 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698