tenfourfox/dom/mobilemessage/tests/marionette/test_mmdb_foreachmatchedmmsdeliveryinfo.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

96 lines
2.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'mmdb_head.js';
const DBNAME = "test_mmdb_foreachmatchedmmsdeliveryinfo:" + newUUID();
const PHONE_0 = "+15555215500";
const PHONE_1 = "+15555215501";
const PHONE_2 = "+15555215502";
const PHONE_2_NET = "5555215502";
const PHONE_3 = "+15555215503";
const PHONE_3_NET = "5555215503";
const EMAIL_1 = "foo@bar.com";
var deliveryInfo = [
{ receiver: PHONE_1 },
{ receiver: PHONE_2 },
{ receiver: PHONE_1 },
{ receiver: PHONE_2_NET },
{ receiver: PHONE_3_NET },
{ receiver: EMAIL_1 },
{ receiver: PHONE_3 },
];
function clearTraversed(aDeliveryInfo) {
for (let element of aDeliveryInfo) {
delete element.traversed;
}
}
function doTest(aMmdb, aNeedle, aVerifyFunc, aCount) {
log(" '" + aNeedle + "': " + aCount);
clearTraversed(deliveryInfo);
let count = 0;
aMmdb.forEachMatchedMmsDeliveryInfo(deliveryInfo, aNeedle, function(aElement) {
ok(true, "checking " + aElement.receiver);
ok(!aElement.hasOwnProperty("traversed"), "element.traversed");
aVerifyFunc(aElement);
aElement.traversed = true;
++count;
});
is(count, aCount, "matched count");
}
function testNotFound(aMmdb) {
log("Testing unavailable");
doTest(aMmdb, PHONE_0, function(aElement) {
ok(false, "Should never have a match");
}, 0);
}
function testDirectMatch(aMmdb) {
log("Testing direct matching");
for (let needle of [PHONE_1, EMAIL_1]) {
let count = deliveryInfo.reduce(function(aCount, aElement) {
return aElement.receiver == needle ? aCount + 1 : aCount;
}, 0);
doTest(aMmdb, needle, function(aElement) {
is(aElement.receiver, needle, "element.receiver");
}, count);
}
}
function testPhoneMatch(aMmdb) {
log("Testing phone matching");
let verifyFunc = function(aValid, aElement) {
ok(aValid.indexOf(aElement.receiver) >= 0, "element.receiver");
};
let matchingGroups = [
[PHONE_2, PHONE_2_NET],
[PHONE_3, PHONE_3_NET],
];
for (let group of matchingGroups) {
for (let item of group) {
doTest(aMmdb, item, verifyFunc.bind(null, group), group.length);
}
}
}
startTestBase(function testCaseMain() {
let mmdb = newMobileMessageDB();
return initMobileMessageDB(mmdb, DBNAME, 0)
.then(() => testNotFound(mmdb))
.then(() => testDirectMatch(mmdb))
.then(() => testPhoneMatch(mmdb))
.then(() => closeMobileMessageDB(mmdb));
});