зеркало из https://github.com/mozilla/gecko-dev.git
183 строки
9.5 KiB
JavaScript
183 строки
9.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
MARIONETTE_TIMEOUT = 90000;
|
|
MARIONETTE_HEAD_JS = 'head.js';
|
|
|
|
/**
|
|
* Create messages to be tested.
|
|
*
|
|
* @param aMessages
|
|
* An array of
|
|
* { 'incoming': [false|true],
|
|
* 'address': [Phone Number]
|
|
* 'text': [Text Body] };
|
|
*
|
|
* @return A deferred promise.
|
|
*/
|
|
function createMessages(aMessages) {
|
|
let promise = Promise.resolve();
|
|
aMessages.forEach((aMessage) => {
|
|
promise = promise.then((aMessage.incoming) ?
|
|
() => sendTextSmsToEmulatorAndWait(aMessage.address, aMessage.text) :
|
|
() => sendSmsWithSuccess(aMessage.address, aMessage.text));
|
|
});
|
|
|
|
return promise;
|
|
}
|
|
|
|
function checkThreads(aMessages, aNotMerged) {
|
|
return getAllThreads().then((aThreads) => {
|
|
let threadCount = aThreads.length;
|
|
|
|
if (aNotMerged) {
|
|
// Threads are retrieved in reversed order of 'lastTimestamp'.
|
|
aThreads.reverse();
|
|
is(threadCount, aMessages.length, "Number of Threads.");
|
|
for (let i = 0; i < threadCount; i++) {
|
|
let thread = aThreads[i];
|
|
let message = aMessages[i];
|
|
is(thread.unreadCount, message.incoming ? 1 : 0, "Unread Count.");
|
|
is(thread.participants.length, 1, "Number of Participants.");
|
|
is(thread.participants[0], message.address, "Participants.");
|
|
is(thread.body, message.text, "Thread Body.");
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
let lastBody = aMessages[aMessages.length - 1].text;
|
|
let unreadCount = 0;
|
|
let mergedThread = aThreads[0];
|
|
aMessages.forEach((aMessage) => {
|
|
if (aMessage.incoming) {
|
|
unreadCount++;
|
|
}
|
|
});
|
|
is(threadCount, 1, "Number of Threads.");
|
|
is(mergedThread.unreadCount, unreadCount, "Unread Count.");
|
|
is(mergedThread.participants.length, 1, "Number of Participants.");
|
|
is(mergedThread.participants[0], aMessages[0].address, "Participants.");
|
|
// Thread is updated according to the device 'timestamp' of the message record
|
|
// instead of the one from SMSC, so 'mergedThread.body' is expected to be the
|
|
// same to the body for the last saved SMS.
|
|
// See https://hg.mozilla.org/mozilla-central/annotate/436686833af0/dom/mobilemessage/gonk/MobileMessageDB.jsm#l2247
|
|
is(mergedThread.body, lastBody, "Thread Body.");
|
|
});
|
|
}
|
|
|
|
function testGetThreads(aMessages, aNotMerged) {
|
|
aNotMerged = !!aNotMerged;
|
|
log("aMessages: " + JSON.stringify(aMessages));
|
|
log("aNotMerged: " + aNotMerged);
|
|
return createMessages(aMessages)
|
|
.then(() => checkThreads(aMessages, aNotMerged))
|
|
.then(() => deleteAllMessages());
|
|
}
|
|
|
|
startTestCommon(function testCaseMain() {
|
|
// [Thread 1]
|
|
// One message only, body = "thread 1";
|
|
// All sent message, unreadCount = 0;
|
|
// One participant only, participants = ["5555211001"].
|
|
return testGetThreads([{ incoming: false, address: "5555211001", text: "thread 1" }])
|
|
// [Thread 2]
|
|
// Two messages, body = "thread 2-2";
|
|
// All sent message, unreadCount = 0;
|
|
// One participant with two aliased addresses, participants = ["5555211002"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "5555211002", text: "thread 2-1" },
|
|
{ incoming: false, address: "+15555211002", text: "thread 2-2" }]))
|
|
// [Thread 3]
|
|
// Two messages, body = "thread 3-2";
|
|
// All sent message, unreadCount = 0;
|
|
// One participant with two aliased addresses, participants = ["+15555211003"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "+15555211003", text: "thread 3-1" },
|
|
{ incoming: false, address: "5555211003", text: "thread 3-2" }]))
|
|
// [Thread 4]
|
|
// One message only, body = "thread 4";
|
|
// All received message, unreadCount = 1;
|
|
// One participant only, participants = ["5555211004"].
|
|
.then(() => testGetThreads([{ incoming: true, address: "5555211004", text: "thread 4" }]))
|
|
// [Thread 5]
|
|
// All received messages, unreadCount = 2;
|
|
// One participant with two aliased addresses, participants = ["5555211005"].
|
|
.then(() => testGetThreads([{ incoming: true, address: "5555211005", text: "thread 5-1" },
|
|
{ incoming: true, address: "+15555211005", text: "thread 5-2" },]))
|
|
// [Thread 6]
|
|
// All received messages, unreadCount = 2;
|
|
// One participant with two aliased addresses, participants = ["+15555211006"].
|
|
.then(() => testGetThreads([{ incoming: true, address: "+15555211006", text: "thread 6-1" },
|
|
{ incoming: true, address: "5555211006", text: "thread 6-2" }]))
|
|
// [Thread 7]
|
|
// 2 sent and then 2 received messages, unreadCount = 2;
|
|
// One participant with two aliased addresses, participants = ["5555211007"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "5555211007", text: "thread 7-1" },
|
|
{ incoming: false, address: "+15555211007", text: "thread 7-2" },
|
|
{ incoming: true, address: "5555211007", text: "thread 7-3" },
|
|
{ incoming: true, address: "+15555211007", text: "thread 7-4" }]))
|
|
// [Thread 8]
|
|
// 2 received and then 2 sent messages, unreadCount = 2;
|
|
// One participant with two aliased addresses, participants = ["5555211008"].
|
|
.then(() => testGetThreads([{ incoming: true, address: "5555211008", text: "thread 8-1" },
|
|
{ incoming: true, address: "+15555211008", text: "thread 8-2" },
|
|
{ incoming: false, address: "5555211008", text: "thread 8-3" },
|
|
{ incoming: false, address: "+15555211008", text: "thread 8-4" }]))
|
|
// [Thread 9]
|
|
// Three sent message, unreadCount = 0;
|
|
// One participant with three aliased addresses, participants = ["+15555211009"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "+15555211009", text: "thread 9-1" },
|
|
{ incoming: false, address: "01115555211009", text: "thread 9-2" },
|
|
{ incoming: false, address: "5555211009", text: "thread 9-3" }]))
|
|
// [Thread 10]
|
|
// Three sent message, unreadCount = 0;
|
|
// One participant with three aliased addresses, participants = ["+15555211010"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "+15555211010", text: "thread 10-1" },
|
|
{ incoming: false, address: "5555211010", text: "thread 10-2" },
|
|
{ incoming: false, address: "01115555211010", text: "thread 10-3" }]))
|
|
// [Thread 11]
|
|
// Three sent message, unreadCount = 0;
|
|
// One participant with three aliased addresses, participants = ["01115555211011"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "01115555211011", text: "thread 11-1" },
|
|
{ incoming: false, address: "5555211011", text: "thread 11-2" },
|
|
{ incoming: false, address: "+15555211011", text: "thread 11-3" }]))
|
|
// [Thread 12]
|
|
// Three sent message, unreadCount = 0;
|
|
// One participant with three aliased addresses, participants = ["01115555211012"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "01115555211012", text: "thread 12-1" },
|
|
{ incoming: false, address: "+15555211012", text: "thread 12-2" },
|
|
{ incoming: false, address: "5555211012", text: "thread 12-3" }]))
|
|
// [Thread 13]
|
|
// Three sent message, unreadCount = 0;
|
|
// One participant with three aliased addresses, participants = ["5555211013"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "5555211013", text: "thread 13-1" },
|
|
{ incoming: false, address: "+15555211013", text: "thread 13-2" },
|
|
{ incoming: false, address: "01115555211013", text: "thread 13-3" }]))
|
|
// [Thread 14]
|
|
// Three sent message, unreadCount = 0;
|
|
// One participant with three aliased addresses, participants = ["5555211014"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "5555211014", text: "thread 14-1" },
|
|
{ incoming: false, address: "01115555211014", text: "thread 14-2" },
|
|
{ incoming: false, address: "+15555211014", text: "thread 14-3" }]))
|
|
// [Thread 15]
|
|
// One sent message, unreadCount = 0;
|
|
// One participant but might be merged to 555211015, participants = ["5555211015"].
|
|
// [Thread 16]
|
|
// One sent message, unreadCount = 0;
|
|
// One participant but might be merged to 5555211015, participants = ["555211015"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "5555211015", text: "thread 15-1" },
|
|
{ incoming: false, address: "555211015", text: "thread 16-1" }],
|
|
true))
|
|
// [Thread 17]
|
|
// Brazil number format: +55-aa-nnnnnnnn. (2-digit area code and 8-digit number)
|
|
// Two sent messages, unreadCount = 0;
|
|
// One participant with two aliased addresses, participants = ["+551155211017"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "+551155211017", text: "thread 17-1" },
|
|
{ incoming: false, address: "1155211017", text: "thread 17-2" }]))
|
|
// [Thread 18]
|
|
// Brazil number format: +55-aa-nnnnnnnn. (2-digit area code and 8-digit number)
|
|
// All sent messages, unreadCount = 0;
|
|
// One participant with two aliased addresses, participants = ["1155211018"].
|
|
.then(() => testGetThreads([{ incoming: false, address: "1155211018", text: "thread 18-1" },
|
|
{ incoming: false, address: "+551155211018", text: "thread 18-2" }]));
|
|
});
|