dom/mobilemessage/tests/marionette/test_mmdb_full_storage.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:d7d7f7e5aa80
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 MARIONETTE_TIMEOUT = 60000;
5 MARIONETTE_HEAD_JS = 'mmdb_head.js';
6
7 const DBNAME = "test_mmdb_full_storage:" + newUUID();
8
9 let gIsDiskFull = true;
10
11 function newSavableMessage() {
12 return {
13 type: "sms",
14 sender: "+0987654321",
15 receiver: "+1234567890",
16 body: "quick fox jump over the lazy dog",
17 deliveryStatusRequested: false,
18 messageClass: "normal",
19 timestamp: Date.now(),
20 iccId: "1029384756"
21 };
22 }
23
24 function isFileNoDeviceSpaceError(aErrorResult) {
25 is(aErrorResult, Cr.NS_ERROR_FILE_NO_DEVICE_SPACE, "Database error code");
26 }
27
28 function isCallbackStorageFullError(aErrorCode) {
29 is(aErrorCode, Ci.nsIMobileMessageCallback.STORAGE_FULL_ERROR,
30 "nsIMobileMessageCallback error code");
31 }
32
33 function testSaveSendingMessage(aMmdb) {
34 log("testSaveSendingMessage()");
35
36 gIsDiskFull = true;
37 return saveSendingMessage(aMmdb, newSavableMessage())
38 // Resolved/rejected results are both [<Cr.NS_ERROR_FOO>, <DOM message>],
39 // and we need only the error code in both cases.
40 .then((aValue) => aValue[0],
41 (aValue) => aValue[0])
42 .then(isFileNoDeviceSpaceError);
43 }
44
45 function testSaveReceivedMessage(aMmdb) {
46 log("testSaveReceivedMessage()");
47
48 gIsDiskFull = true;
49 return saveReceivedMessage(aMmdb, newSavableMessage())
50 // Resolved/rejected results are both [<Cr.NS_ERROR_FOO>, <DOM message>],
51 // and we need only the error code in both cases.
52 .then((aValue) => aValue[0],
53 (aValue) => aValue[0])
54 .then(isFileNoDeviceSpaceError);
55 }
56
57 function testGetMessageRecordById(aMmdb) {
58 log("testGetMessageRecordById()");
59
60 gIsDiskFull = false;
61 return saveReceivedMessage(aMmdb, newSavableMessage())
62 // Resolved result is [<Cr.NS_ERROR_FOO>, <DOM message>],
63 .then(function(aValue) {
64 let domMessage = aValue[1];
65
66 gIsDiskFull = true;
67 return getMessageRecordById(aMmdb, domMessage.id);
68 });
69 }
70
71 function testMarkMessageRead(aMmdb) {
72 log("testMarkMessageRead()");
73
74 gIsDiskFull = false;
75 return saveReceivedMessage(aMmdb, newSavableMessage())
76 // Resolved/rejected results are both [<Cr.NS_ERROR_FOO>, <DOM message>].
77 .then(function(aValue) {
78 let domMessage = aValue[1];
79
80 gIsDiskFull = true;
81 return markMessageRead(aMmdb, domMessage.id, true)
82 .then(null, (aValue) => aValue)
83 .then(isCallbackStorageFullError);
84 });
85 }
86
87 function testCreateMessageCursor(aMmdb) {
88 log("testCreateMessageCursor()");
89
90 gIsDiskFull = true;
91 return createMessageCursor(aMmdb, {}, false);
92 }
93
94 function testCreateThreadCursor(aMmdb) {
95 log("testCreateThreadCursor()");
96
97 gIsDiskFull = true;
98 return createThreadCursor(aMmdb);
99 }
100
101 startTestBase(function testCaseMain() {
102
103 let mmdb = newMobileMessageDB();
104 return initMobileMessageDB(mmdb, DBNAME, 0)
105 .then(function() {
106 mmdb.isDiskFull = function() {
107 return gIsDiskFull;
108 };
109 })
110
111 .then(() => testSaveSendingMessage(mmdb))
112 .then(() => testSaveReceivedMessage(mmdb))
113 .then(() => testGetMessageRecordById(mmdb))
114 .then(() => testMarkMessageRead(mmdb))
115 .then(() => testCreateMessageCursor(mmdb))
116 .then(() => testCreateThreadCursor(mmdb))
117
118 .then(() => closeMobileMessageDB(mmdb));
119 });

mercurial