mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
135 lines
4.7 KiB
JavaScript
135 lines
4.7 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_setmessagedeliverybyid_sms:" + newUUID();
|
|
|
|
const RECEIVER = "+1234567890";
|
|
const TEXT = "The quick brown fox jumps over the lazy dog.";
|
|
|
|
const MESSAGE_STORE_NAME = "sms";
|
|
|
|
const DELIVERY_SENDING = "sending";
|
|
const DELIVERY_SENT = "sent";
|
|
const DELIVERY_RECEIVED = "received";
|
|
const DELIVERY_NOT_DOWNLOADED = "not-downloaded";
|
|
const DELIVERY_ERROR = "error";
|
|
|
|
const DELIVERY_STATUS_NOT_APPLICABLE = "not-applicable";
|
|
const DELIVERY_STATUS_SUCCESS = "success";
|
|
const DELIVERY_STATUS_PENDING = "pending";
|
|
const DELIVERY_STATUS_ERROR = "error";
|
|
|
|
function verify(aMmdb, aMessageId, aDelivery, aDeliveryStatus, aRv, aDomMessage) {
|
|
log(" Verify(" + aMessageId + ", " + aDelivery + ", " + aDeliveryStatus + ")");
|
|
|
|
ok(Components.isSuccessCode(aRv), "Components.isSuccessCode(" + aRv + ")");
|
|
ok(aDomMessage, "DOM message validity");
|
|
is(aDomMessage.delivery, aDelivery, "message.delivery");
|
|
is(aDomMessage.deliveryStatus, aDeliveryStatus, "message.deliveryStatus");
|
|
|
|
let deferred = Promise.defer();
|
|
|
|
// Verify deliveryIndex, sentTimestamp and deliveryTimestamp
|
|
aMmdb.newTxn("readonly", function(aError, aTransaction, aMessageStore) {
|
|
let messageRecord;
|
|
aTransaction.oncomplete = function() {
|
|
ok(true, "transaction complete");
|
|
|
|
is(messageRecord.deliveryIndex[0], aDelivery,
|
|
"messageRecord.deliveryIndex[0]");
|
|
is(messageRecord.deliveryIndex[1], messageRecord.timestamp,
|
|
"messageRecord.deliveryIndex[1]");
|
|
if (aDelivery == DELIVERY_SENT) {
|
|
ok(messageRecord.sentTimestamp >= messageRecord.timestamp,
|
|
"messageRecord.sentTimestamp");
|
|
}
|
|
if (aDeliveryStatus == DELIVERY_STATUS_SUCCESS) {
|
|
ok(messageRecord.deliveryTimestamp >= messageRecord.timestamp,
|
|
"messageRecord.deliveryTimestamp");
|
|
}
|
|
|
|
deferred.resolve(aMmdb);
|
|
};
|
|
|
|
aMessageStore.get(aMessageId).onsuccess = function(event) {
|
|
messageRecord = event.target.result;
|
|
ok(true, "Got messageRecord " + messageRecord.id);
|
|
};
|
|
}, [MESSAGE_STORE_NAME]);
|
|
|
|
return deferred.promise;
|
|
}
|
|
|
|
function test(aTitle, aMmdb, aDeliveryStatusRequested, aParamArray) {
|
|
log(aTitle);
|
|
|
|
let message = {
|
|
type: "sms",
|
|
sender: null,
|
|
timestamp: Date.now(),
|
|
deliveryStatusRequested: aDeliveryStatusRequested,
|
|
receiver: RECEIVER,
|
|
iccId: null,
|
|
body: TEXT,
|
|
};
|
|
return saveSendingMessage(aMmdb, message)
|
|
.then(function(aValues) {
|
|
let [resultCode, domMessage] = aValues;
|
|
let promise =
|
|
verify(aMmdb, domMessage.id, DELIVERY_SENDING,
|
|
(aDeliveryStatusRequested ? DELIVERY_STATUS_PENDING
|
|
: DELIVERY_STATUS_NOT_APPLICABLE),
|
|
resultCode, domMessage);
|
|
while (aParamArray.length) {
|
|
let params = aParamArray.shift();
|
|
let v = verify.bind(null, aMmdb, domMessage.id, params[2], params[3]);
|
|
promise = promise
|
|
.then(() => {
|
|
log(" Set to " + params[0] + ":" + params[1]);
|
|
return setMessageDeliveryByMessageId(aMmdb, domMessage.id, null,
|
|
params[0], params[1], null);
|
|
})
|
|
.then((aValues) => v(aValues[0], aValues[1]));
|
|
}
|
|
|
|
return promise;
|
|
});
|
|
}
|
|
|
|
startTestBase(function testCaseMain() {
|
|
return initMobileMessageDB(newMobileMessageDB(), DBNAME, 0)
|
|
.then((aMmdb) => test("Simulate send failed without delivery report requisition",
|
|
aMmdb, false, [
|
|
[DELIVERY_ERROR, DELIVERY_STATUS_ERROR,
|
|
DELIVERY_ERROR, DELIVERY_STATUS_ERROR],
|
|
]))
|
|
.then((aMmdb) => test("Simulate send failed with delivery report requisition",
|
|
aMmdb, true, [
|
|
[DELIVERY_ERROR, DELIVERY_STATUS_ERROR,
|
|
DELIVERY_ERROR, DELIVERY_STATUS_ERROR],
|
|
]))
|
|
.then((aMmdb) => test("Simulate sent without delivery report requisition",
|
|
aMmdb, false, [
|
|
[DELIVERY_SENT, null,
|
|
DELIVERY_SENT, DELIVERY_STATUS_NOT_APPLICABLE],
|
|
]))
|
|
.then((aMmdb) => test("Simulate sent with delivery report success",
|
|
aMmdb, true, [
|
|
[DELIVERY_SENT, null,
|
|
DELIVERY_SENT, DELIVERY_STATUS_PENDING],
|
|
[null, DELIVERY_STATUS_SUCCESS,
|
|
DELIVERY_SENT, DELIVERY_STATUS_SUCCESS],
|
|
]))
|
|
.then((aMmdb) => test("Simulate sent with delivery report error",
|
|
aMmdb, true, [
|
|
[DELIVERY_SENT, null,
|
|
DELIVERY_SENT, DELIVERY_STATUS_PENDING],
|
|
[null, DELIVERY_ERROR,
|
|
DELIVERY_SENT, DELIVERY_ERROR],
|
|
]))
|
|
.then(closeMobileMessageDB);
|
|
});
|