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

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

Issue 121983002: Restoring recently deleted unit tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rgustafson's notes Created 6 years, 11 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') | 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/cards_unittest.gtestjs
diff --git a/chrome/browser/resources/google_now/cards_unittest.gtestjs b/chrome/browser/resources/google_now/cards_unittest.gtestjs
index 2c80e4d8cb2b4c32e4d0e8202deb665899ce5bb0..a3e0ec1508d72a87513fdb866bfa48891d47120a 100644
--- a/chrome/browser/resources/google_now/cards_unittest.gtestjs
+++ b/chrome/browser/resources/google_now/cards_unittest.gtestjs
@@ -20,24 +20,39 @@ GoogleNowCardsUnitTest.prototype = {
]
};
+// Test implementation of a function provided by utility.js.
+function verify(condition, message) {
+ assertTrue(condition, message);
+}
+
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 testDismissals = [
- {testDismissalField: 'TEST DISMISSAL VALUE 1'},
- {testDismissalField: 'TEST DISMISSAL VALUE 2'}
-];
-var testGroupRank = 271;
+var testNotificationIdA = 'TEST CARD ID-A';
+var testNotificationIdB = 'TEST CARD ID-B';
+var testNotificationA = {
+ testNotificationField: 'TEST NOTIFICATION VALUE A',
+ priority: 1
+};
+var testNotificationB = {
+ testNotificationField: 'TEST NOTIFICATION VALUE B',
+ priority: 2
+};
+var groupNameA = 'A';
+var groupNameB = 'B';
+var expectedAlarmId = 'card-TEST CARD ID';
+var testActionUrlsA = {testField: 'TEST VALUE A'};
+var testActionUrlsB = {testField: 'TEST VALUE B'};
+var testDismissalA = {testDismissalField: 'TEST DISMISSAL VALUE A'};
+var testDismissalB = {testDismissalField: 'TEST DISMISSAL VALUE B'};
var LOCATION_CARDS_LINK_THRESHOLD = 10;
var localStorage = {locationCardsShown: 0};
+var notificationUpdateSuccessful = true;
+var notificationUpdateFailed = false;
function setUpCardManagerTest(fixture) {
fixture.makeAndRegisterMockApis([
'chrome.alarms.clear',
'chrome.alarms.create',
- 'chrome.notifications.clear',
+ 'instrumented.notifications.clear',
'chrome.storage.local.set',
'countLocationCard',
'instrumented.alarms.onAlarm.addListener',
@@ -76,6 +91,393 @@ TEST_F('GoogleNowCardsUnitTest', 'BuildCardManager', function() {
assertEquals('function', typeof test.alarmCallback);
});
+TEST_F('GoogleNowCardsUnitTest', 'UpdateSimpleHideFuture', function() {
+ // Update a simple card with the hide event in future.
+
+ var testUncombinedNotification = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ hideTime: 300001
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ var chromeNotificationsUpdateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_notifications_update(
+ chromeNotificationsUpdateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsUpdateSavedArgs.match(eqJSON(testNotificationA)),
+ chromeNotificationsUpdateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ chromeNotificationsUpdateSavedArgs, 2, notificationUpdateSuccessful));
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedAlarmId, eqJSON({when: 300001}));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update(
+ testCardId, [testUncombinedNotification], {});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrlsA,
+ timestamp: 300000,
+ combinedCard: [testUncombinedNotification]
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateSimpleHideFuture', function() {
+ // Create a simple card with the hide event in future.
+
+ var testUncombinedNotification = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ hideTime: 300001
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.makeMockLocalFunctions(['onCardShown']);
+
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+
+ // notifications.update will return false, which will trigger
+ // notifications.create.
+ var chromeNotificationsUpdateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_notifications_update(
+ chromeNotificationsUpdateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsUpdateSavedArgs.match(eqJSON(testNotificationA)),
+ chromeNotificationsUpdateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ chromeNotificationsUpdateSavedArgs, 2, notificationUpdateFailed));
+ var chromeNotificationsCreateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_notifications_create(
+ chromeNotificationsCreateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsCreateSavedArgs.match(eqJSON(testNotificationA)),
+ chromeNotificationsCreateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(chromeNotificationsCreateSavedArgs, 2, testCardId));
+
+ this.mockLocalFunctions.expects(once()).
+ onCardShown(eqJSON(testUncombinedNotification.receivedNotification));
+
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedAlarmId, eqJSON({when: 300001}));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update(
+ testCardId,
+ [testUncombinedNotification],
+ {},
+ this.mockLocalFunctions.functions().onCardShown);
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrlsA,
+ timestamp: 300000,
+ combinedCard: [testUncombinedNotification]
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'CreateSimpleShowFuture', function() {
+ // Create a simple card with the show event in future. Should create an alarm
+ // to fire at the show time.
+
+ var testUncombinedNotification = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ showTime: 300001,
+ hideTime: 300002
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ this.mockApis.expects(once()).
+ instrumented_notifications_clear(testCardId, ANYTHING);
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedAlarmId, eqJSON({when: 300001}));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update(
+ testCardId, [testUncombinedNotification], {});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ timestamp: 300000,
+ combinedCard: [testUncombinedNotification]
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'UpdateSimpleHidePast', function() {
+ // Update a simple card with the hide event in the past (actually, present).
+ // Should clear the notification.
+
+ var testUncombinedNotification = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ hideTime: 300000
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ this.mockApis.expects(once()).
+ instrumented_notifications_clear(testCardId, ANYTHING);
+
+ var groups = {
+ A: {
+ cards: [{chromeNotificationId: 'ID1'}, {chromeNotificationId: testCardId}]
+ },
+ B: {
+ cards: [{chromeNotificationId: testCardId}, {chromeNotificationId: 'ID2'}]
+ }
+ };
+
+ // Call tested method.
+ var notificationData = test.cardSet.update(
+ testCardId, [testUncombinedNotification], groups);
+
+ // Check the return value.
+ assertEquals(undefined, notificationData);
+
+ // Check that groups were cleaned up.
+ var expectedCleanedGroups = {
+ A: {
+ cards: [{chromeNotificationId: 'ID1'}]
+ },
+ B: {
+ cards: [{chromeNotificationId: 'ID2'}]
+ }
+ };
+
+ assertEquals(JSON.stringify(expectedCleanedGroups), JSON.stringify(groups));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'UpdateComplex', function() {
+ // Update a combined card that contains 2 uncombined cards. The card from
+ // group B has higher priority and wins.
+
+ var testUncombinedNotificationA = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ hideTime: 300001
+ };
+
+ var testUncombinedNotificationB = {
+ receivedNotification: {
+ notificationId: testNotificationIdB,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationB,
+ actionUrls: testActionUrlsB,
+ dismissal: testDismissalB,
+ groupName: groupNameB
+ },
+ hideTime: 300002
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ var chromeNotificationsUpdateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_notifications_update(
+ chromeNotificationsUpdateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsUpdateSavedArgs.match(eqJSON(testNotificationB)),
+ chromeNotificationsUpdateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ chromeNotificationsUpdateSavedArgs, 2, notificationUpdateSuccessful));
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedAlarmId, eqJSON({when: 300001}));
+
+ // Call tested method.
+ var notificationData = test.cardSet.update(
+ testCardId,
+ [testUncombinedNotificationA, testUncombinedNotificationB],
+ {});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ actionUrls: testActionUrlsB,
+ timestamp: 300000,
+ combinedCard: [testUncombinedNotificationA, testUncombinedNotificationB]
+ }),
+ JSON.stringify(notificationData));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'DismissSimple', function() {
+ // Dismiss a combined card that contains 1 uncombined currently visible card.
+ // The notification should be deleted, and the card data should be cleared.
+
+ var testUncombinedNotificationA = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ showTime: 299995,
+ hideTime: 300005
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ this.mockApis.expects(once()).
+ instrumented_notifications_clear(testCardId, ANYTHING);
+
+ var groups = {
+ A: {
+ cards: [{chromeNotificationId: 'ID1'}, {chromeNotificationId: testCardId}]
+ },
+ B: {
+ cards: [{chromeNotificationId: testCardId}, {chromeNotificationId: 'ID2'}]
+ }
+ };
+
+ // Call tested method.
+ var dismissalResult = test.cardSet.onDismissal(
+ testCardId,
+ {
+ actionUrls: testActionUrlsA,
+ timestamp: 299999,
+ combinedCard: [testUncombinedNotificationA]
+ },
+ groups);
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ dismissals: [
+ {notificationId: testNotificationIdA, parameters: testDismissalA}
+ ],
+ notificationData: undefined
+ }),
+ JSON.stringify(dismissalResult));
+
+ // Check that groups were cleaned up.
+ var expectedCleanedGroups = {
+ A: {
+ cards: [{chromeNotificationId: 'ID1'}]
+ },
+ B: {
+ cards: [{chromeNotificationId: 'ID2'}]
+ }
+ };
+
+ assertEquals(JSON.stringify(expectedCleanedGroups), JSON.stringify(groups));
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'DismissComplex', function() {
+ // Dismiss a combined card that contains 2 uncombined cards. One of them (B),
+ // is currently shown, and it should be dismissed. The other one (A) has
+ // showTime in future, and it should not be dismissed.
+
+ var testUncombinedNotificationA = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ showTime: 300010,
+ hideTime: 300011
+ };
+
+ var testUncombinedNotificationB = {
+ receivedNotification: {
+ notificationId: testNotificationIdB,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationB,
+ actionUrls: testActionUrlsB,
+ dismissal: testDismissalB,
+ groupName: groupNameB
+ },
+ showTime: 299995,
+ hideTime: 300005
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ this.mockApis.expects(once()).
+ instrumented_notifications_clear(testCardId, ANYTHING);
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedAlarmId, eqJSON({when: 300010}));
+
+ // Call tested method.
+ var dismissalResult = test.cardSet.onDismissal(
+ testCardId,
+ {
+ actionUrls: testActionUrlsB,
+ timestamp: 299999,
+ combinedCard: [testUncombinedNotificationA, testUncombinedNotificationB]
+ },
+ {});
+
+ // Check the return value.
+ assertEquals(
+ JSON.stringify({
+ dismissals: [
+ {notificationId: testNotificationIdB, parameters: testDismissalB}
+ ],
+ notificationData: {
+ timestamp: 300000,
+ combinedCard: [testUncombinedNotificationA]
+ }}),
+ JSON.stringify(dismissalResult));
+});
+
TEST_F('GoogleNowCardsUnitTest', 'onAlarmUnrecognized', function() {
// Tests onAlarm does nothing on an unrelated alarm.
var test = setUpCardManagerTest(this);
@@ -83,3 +485,145 @@ TEST_F('GoogleNowCardsUnitTest', 'onAlarmUnrecognized', function() {
// Call tested method.
test.alarmCallback({name: 'unrelated'});
});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmClear', function() {
+ // Tests onAlarm fired at a moment past all card's events. The card should be
+ // cleaned.
+ var testUncombinedNotification = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ hideTime: 299999
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ var tasksAddSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ tasks_add(
+ tasksAddSavedArgs.match(eq(UPDATE_CARD_TASK_NAME)),
+ tasksAddSavedArgs.match(ANYTHING)).
+ will(invokeCallback(tasksAddSavedArgs,1));
+ var storageGetSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_storage_local_get(
+ storageGetSavedArgs.match(
+ eqJSON(['notificationsData', 'notificationGroups'])),
+ storageGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ storageGetSavedArgs,
+ 1,
+ {
+ notificationsData: {
+ 'TEST CARD ID': {
+ actionUrls: testActionUrlsA,
+ timestamp: 299998,
+ combinedCard: [testUncombinedNotification]
+ },
+ 'TEST CARD ID 1': {testField: 'TEST VALUE 1'}
+ },
+ notificationGroups: {
+ A: {
+ cards: [
+ {chromeNotificationId: 'ID1'},
+ {chromeNotificationId: testCardId}
+ ]
+ },
+ B: {
+ cards: [
+ {chromeNotificationId: testCardId},
+ {chromeNotificationId: 'ID2'}
+ ]
+ }}}));
+ this.mockApis.expects(once()).
+ instrumented_notifications_clear(testCardId, ANYTHING);
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ this.mockApis.expects(once()).
+ chrome_storage_local_set(eqJSON({
+ notificationsData: {
+ 'TEST CARD ID 1': {testField: 'TEST VALUE 1'}
+ },
+ notificationGroups: {
+ A: {
+ cards: [{chromeNotificationId: 'ID1'}]
+ },
+ B: {
+ cards: [{chromeNotificationId: 'ID2'}]
+ }}}));
+
+ // Call tested method.
+ test.alarmCallback({name: expectedAlarmId});
+});
+
+TEST_F('GoogleNowCardsUnitTest', 'onAlarmUpdate', function() {
+ // Tests onAlarm fired at a moment when there are future card's events. The
+ // card needs to be updated.
+ var testUncombinedNotification = {
+ receivedNotification: {
+ notificationId: testNotificationIdA,
+ chromeNotificationId: testCardId,
+ chromeNotificationOptions: testNotificationA,
+ actionUrls: testActionUrlsA,
+ dismissal: testDismissalA,
+ groupName: groupNameA
+ },
+ hideTime: 300001
+ };
+
+ // Setup and expectations.
+ var test = setUpCardManagerTest(this);
+ var tasksAddSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ tasks_add(
+ tasksAddSavedArgs.match(eq(UPDATE_CARD_TASK_NAME)),
+ tasksAddSavedArgs.match(ANYTHING)).
+ will(invokeCallback(tasksAddSavedArgs,1));
+ var storageGetSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_storage_local_get(
+ storageGetSavedArgs.match(
+ eqJSON(['notificationsData', 'notificationGroups'])),
+ storageGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ storageGetSavedArgs,
+ 1,
+ {
+ notificationsData: {
+ 'TEST CARD ID': {
+ actionUrls: testActionUrlsA,
+ timestamp: 299998,
+ combinedCard: [testUncombinedNotification]
+ }}}));
+ this.mockApis.expects(once()).
+ chrome_alarms_clear(expectedAlarmId);
+ var chromeNotificationsUpdateSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(once()).
+ instrumented_notifications_update(
+ chromeNotificationsUpdateSavedArgs.match(eq(testCardId)),
+ chromeNotificationsUpdateSavedArgs.match(eqJSON(testNotificationA)),
+ chromeNotificationsUpdateSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ chromeNotificationsUpdateSavedArgs, 2, notificationUpdateSuccessful));
+ this.mockApis.expects(once()).
+ chrome_alarms_create(expectedAlarmId, eqJSON({when: 300001}));
+ this.mockApis.expects(once()).
+ chrome_storage_local_set(eqJSON({
+ notificationsData: {
+ 'TEST CARD ID': {
+ actionUrls: testActionUrlsA,
+ timestamp: 300000,
+ combinedCard: [testUncombinedNotification]
+ }
+ },
+ notificationGroups: {
+ }}));
+
+ // Call tested method.
+ test.alarmCallback({name: expectedAlarmId});
+});
« no previous file with comments | « chrome/browser/resources/google_now/cards.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698