1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
"use strict";
const { AppConstants } = ChromeUtils.importESModule(
"resource://gre/modules/AppConstants.sys.mjs"
);
const fooNotification = getNotificationObject(
"foo",
"a4f1d54a-98b7-4231-9120-5afc26545bad",
null,
true
);
const barNotification = getNotificationObject(
"bar",
"a4f1d54a-98b7-4231-9120-5afc26545bad",
"baz",
true
);
const msg = "Notification:GetAll";
const msgReply = "Notification:GetAll:Return:OK";
do_get_profile();
const OLD_STORE_PATH = PathUtils.join(
PathUtils.profileDir,
"notificationstore.json"
);
let nextRequestID = 0;
// Create the old datastore and populate it with data before we initialize
// the notification database so it has data to migrate. This is a setup step,
// not a test, but it seems like we need to do it in a test function
// rather than in run_test() because the test runner doesn't handle async steps
// in run_test().
add_task(
{
skip_if: () => !AppConstants.MOZ_NEW_NOTIFICATION_STORE,
},
async function test_create_old_datastore() {
const notifications = {
[fooNotification.origin]: {
[fooNotification.id]: fooNotification,
},
[barNotification.origin]: {
[barNotification.id]: barNotification,
},
};
await IOUtils.writeJSON(OLD_STORE_PATH, notifications);
startNotificationDB();
}
);
add_test(
{
skip_if: () => !AppConstants.MOZ_NEW_NOTIFICATION_STORE,
},
function test_get_system_notification() {
const requestID = nextRequestID++;
const msgHandler = function (message) {
Assert.equal(requestID, message.data.requestID);
Assert.equal(0, message.data.notifications.length);
};
addAndSend(msg, msgReply, msgHandler, {
origin: systemNotification.origin,
requestID,
});
}
);
add_test(
{
skip_if: () => !AppConstants.MOZ_NEW_NOTIFICATION_STORE,
},
function test_get_foo_notification() {
const requestID = nextRequestID++;
const msgHandler = function (message) {
Assert.equal(requestID, message.data.requestID);
Assert.equal(1, message.data.notifications.length);
Assert.deepEqual(
fooNotification,
message.data.notifications[0],
"Notification data migrated"
);
};
addAndSend(msg, msgReply, msgHandler, {
origin: fooNotification.origin,
requestID,
});
}
);
add_test(
{
skip_if: () => !AppConstants.MOZ_NEW_NOTIFICATION_STORE,
},
function test_get_bar_notification() {
const requestID = nextRequestID++;
const msgHandler = function (message) {
Assert.equal(requestID, message.data.requestID);
Assert.equal(1, message.data.notifications.length);
Assert.deepEqual(
barNotification,
message.data.notifications[0],
"Notification data migrated"
);
};
addAndSend(msg, msgReply, msgHandler, {
origin: barNotification.origin,
requestID,
});
}
);
add_task(
{
skip_if: () => !AppConstants.MOZ_NEW_NOTIFICATION_STORE,
},
async function test_old_datastore_deleted() {
Assert.ok(
!(await IOUtils.exists(OLD_STORE_PATH)),
"old datastore no longer exists"
);
}
);
|