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

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

Issue 19749007: Processing timefences from the server. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: arv@ notes Created 7 years, 5 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/cards.js ('k') | chrome/browser/resources/google_now/manifest.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/google_now/cards_unittest.gtestjs
diff --git a/chrome/browser/resources/google_now/cards_unittest.gtestjs b/chrome/browser/resources/google_now/cards_unittest.gtestjs
new file mode 100644
index 0000000000000000000000000000000000000000..01cb7894cb705d514ed2f92372f88d98cdd2add1
--- /dev/null
+++ b/chrome/browser/resources/google_now/cards_unittest.gtestjs
@@ -0,0 +1,435 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * Test fixture for cards.js.
+ * @constructor
+ * @extends {testing.Test}
+ */
+function GoogleNowCardsUnitTest () {
+ testing.Test.call(this);
+}
+
+GoogleNowCardsUnitTest.prototype = {
+ __proto__: testing.Test.prototype,
+
+ /** @override */
+ extraLibraries: [
+ 'cards.js'
+ ]
+};
+
+var testCardId = 'TEST CARD ID';
+var testNotification = {testNotificationField: 'TEST NOTIFICATION VALUE'};
+var expectedShowAlarmId = 'card-show-TEST CARD ID';
+var expectedHideAlarmId = 'card-hide-TEST CARD ID';
+var testActionUrls = {testField: 'TEST VALUE'};
+var testDismissal = {testDismissalField: 'TEST DISMISSAL VALUE'};
+
+function setUpCardManagerTest(fixture) {
+ fixture.makeAndRegisterMockApis([
+ 'chrome.alarms.onAlarm.addListener',
+ 'chrome.alarms.clear',
+ 'chrome.alarms.create',
+ 'chrome.notifications.clear',
+ 'chrome.notifications.create',
+ 'chrome.notifications.update',
+ 'storage.get'
+ ]);
+
+ chrome.runtime = {}; // No error.
+
+ var onAlarmSavedArgs = new SaveMockArguments();
+ fixture.mockApis.expects(once()).
+ chrome_alarms_onAlarm_addListener(
+ onAlarmSavedArgs.match(ANYTHING));
+
+ var cardSet = buildCardSet();
+
+ Mock4JS.verifyAllMocks();
+
+ Date.now = function() { return 300000; };
+
+ var test = {
+ cardSet: cardSet,
+ alarmCallback: onAlarmSavedArgs.arguments [0]
+ };
+
+ return test;
+}
+
+TEST_F('GoogleNowCardsUnitTest', 'BuildCardManager', function() {
+ // Tests that buildCardSet() call completes with no problems.
+ var test = setUpCardManagerTest(this);
+
+ assertEquals('object', typeof test.cardSet);
+ assertEquals('function', typeof test.alarmCallback);
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateCard', function() {
+ // Creates a new card with no trigger.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ chrome_notifications_create(
+ chromeNotificationsCreateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsCreateSavedArgs.match(eqJSON(testNotification)),
+ chromeNotificationsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeNotificationsCreateSavedArgs, 2, testCardId));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrls,
+ cardCreateInfo: {
+ notification: testNotification,
+ timeHide: undefined,
+ version: 0
+ },
+ dismissalParameters: testDismissal
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateCardEmptyTrigger', function() {
+ // Creates a new card with empty trigger.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ this.mockApis.expects(once()).
+ chrome_notifications_create(
+ testCardId, eqJSON(testNotification), ANYTHING);
+
+ // Call tested method.
+ var notificationData = test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0,
+ trigger: {}});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrls,
+ cardCreateInfo: {
+ notification: testNotification,
+ timeHide: undefined,
+ version: 0
+ },
+ dismissalParameters: testDismissal
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateCardHideTime', function() {
+ // Creates a new card with trigger specifying hide time.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ chrome_notifications_create(
+ chromeNotificationsCreateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsCreateSavedArgs.match(eqJSON(testNotification)),
+ chromeNotificationsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeNotificationsCreateSavedArgs, 2, testCardId));
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedHideAlarmId, eqJSON({when: 1313000}));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0,
+ trigger: {hideTimeSec: 1013}});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrls,
+ cardCreateInfo: {
+ notification: testNotification,
+ timeHide: 1313000,
+ version: 0
+ },
+ dismissalParameters: testDismissal
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'UpdateCardSameVersion', function() {
+ // Updates a card with another card with same version.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ chrome_notifications_update(
+ chromeNotificationsCreateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsCreateSavedArgs.match(eqJSON(testNotification)),
+ chromeNotificationsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeNotificationsCreateSavedArgs, 2, true));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0},
+ 0);
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrls,
+ cardCreateInfo: {
+ notification: testNotification,
+ version: 0,
+ previousVersion: 0
+ },
+ dismissalParameters: testDismissal
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'UpdateCardSameVersionHideTime', function() {
+ // Updates a card with another card with same version and specifying hide
+ // time.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ chrome_notifications_update(
+ chromeNotificationsCreateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsCreateSavedArgs.match(eqJSON(testNotification)),
+ chromeNotificationsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeNotificationsCreateSavedArgs, 2, testCardId));
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedHideAlarmId, eqJSON({when: 1313000}));
+
+ // Call tested method.
+ test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0,
+ trigger: {hideTimeSec: 1013}},
+ 0);
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'UpdateCardDifferentVersion', function() {
+ // Updates a card with another card with different version.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ this.mockApis.expects(once()).
+ chrome_notifications_create(
+ testCardId, eqJSON(testNotification), ANYTHING);
+
+ // Call tested method.
+ test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0},
+ 1);
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateCardTriggerShowNow', function() {
+ // Creates a new card with trigger that requires showing the card immediately.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ this.mockApis.expects(once()).
+ chrome_notifications_create(
+ testCardId, eqJSON(testNotification), ANYTHING);
+
+ // Call tested method.
+ test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0,
+ trigger: {showTimeSec: 0}});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateCardTriggerShowLater', function() {
+ // Creates a new card with trigger that requires showing the card later.
+ // We are supposed to schedule an alarm to show the notification later.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedShowAlarmId, eqJSON({when: 539000}));
+
+ // Call tested method.
+ test.cardSet.update({
+ notificationId: testCardId,
+ notification: testNotification,
+ actionUrls: testActionUrls,
+ dismissal: testDismissal,
+ version: 0,
+ trigger: {showTimeSec: 239}});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'ClearCard', function() {
+ // Clears a card.
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_notifications_clear(testCardId, ANYTHING);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedShowAlarmId);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedHideAlarmId);
+
+ // Call tested method.
+ test.cardSet.clear(testCardId);
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmUnrecognized', function() {
+ // Tests onAlarm does nothing on an unrelated alarm.
+ var test = setUpCardManagerTest(this);
+
+ // Call tested method.
+ test.alarmCallback({name: 'unrelated'});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmShowNoData', function() {
+ // Tests onAlarm for the 'show' alarm when there is no data for the card.
+ var test = setUpCardManagerTest(this);
+ var storageGetSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ storage_get(
+ storageGetSavedArgs.match(eq('notificationsData')),
+ storageGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(storageGetSavedArgs, 1, {}));
+
+ // Call tested method.
+ test.alarmCallback({name: expectedShowAlarmId});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmShowHasDataCreate', function() {
+ // Tests onAlarm for the 'show' alarm when there is data for the card. The
+ // notification will be created because there is no previous version.
+ var test = setUpCardManagerTest(this);
+ var storageGetSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ storage_get(
+ storageGetSavedArgs.match(eq('notificationsData')),
+ storageGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ storageGetSavedArgs,
+ 1,
+ {
+ notificationsData: {
+ 'TEST CARD ID': {
+ actionUrls: testActionUrls,
+ cardCreateInfo: {
+ notification: testNotification,
+ timeHide: 1313000,
+ version: 0}}}}));
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ chrome_notifications_create(
+ chromeNotificationsCreateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsCreateSavedArgs.match(eqJSON(testNotification)),
+ chromeNotificationsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeNotificationsCreateSavedArgs, 2, testCardId));
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedHideAlarmId, eqJSON({when: 1313000}));
+
+ // Call tested method.
+ test.alarmCallback({name: expectedShowAlarmId});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmShowHasDataUpdate', function() {
+ // Tests onAlarm for the 'show' alarm when there is data for the card. The
+ // notification will be updated because previous version is same as current.
+ var test = setUpCardManagerTest(this);
+ var storageGetSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ storage_get(
+ storageGetSavedArgs.match(eq('notificationsData')),
+ storageGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ storageGetSavedArgs,
+ 1,
+ {
+ notificationsData: {
+ 'TEST CARD ID': {
+ actionUrls: testActionUrls,
+ cardCreateInfo: {
+ notification: testNotification,
+ timeHide: 1313000,
+ version: 0,
+ previousVersion:0}}}}));
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ chrome_notifications_update(
+ testCardId, eqJSON(testNotification), ANYTHING);
+
+ // Call tested method.
+ test.alarmCallback({name: expectedShowAlarmId});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmHide', function() {
+ // Tests onAlarm for the 'hide' alarm.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_notifications_clear(testCardId, ANYTHING);
+
+ // Call tested method.
+ test.alarmCallback({name: expectedHideAlarmId});
+});
« no previous file with comments | « chrome/browser/resources/google_now/cards.js ('k') | chrome/browser/resources/google_now/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698