|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=877302 |
|
5 --> |
|
6 <head> |
|
7 <title>Test for Bug 877302 substring matching for WebContacts</title> |
|
8 <script type="text/javascript" src="/MochiKit/MochiKit.js"></script> |
|
9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
11 </head> |
|
12 <body> |
|
13 |
|
14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=877302">Mozilla Bug 877302</a> |
|
15 <p id="display"></p> |
|
16 <div id="content" style="display: none"> |
|
17 |
|
18 </div> |
|
19 <pre id="test"> |
|
20 <script type="text/javascript;version=1.8" src="http://mochi.test:8888/tests/dom/contacts/tests/shared.js"></script> |
|
21 <script class="testbody" type="text/javascript"> |
|
22 "use strict"; |
|
23 |
|
24 var prop = { |
|
25 tel: [{value: "7932012345" }, {value: "7704143727591"}] |
|
26 }; |
|
27 |
|
28 var prop2 = { |
|
29 tel: [{value: "7932012345" }, {value: "+58 212 5551212"}] |
|
30 }; |
|
31 |
|
32 var req; |
|
33 var steps = [ |
|
34 function () { |
|
35 ok(true, "Deleting database"); |
|
36 req = mozContacts.clear() |
|
37 req.onsuccess = function () { |
|
38 ok(true, "Deleted the database"); |
|
39 next(); |
|
40 } |
|
41 req.onerror = onFailure; |
|
42 }, |
|
43 function () { |
|
44 ok(true, "Adding contact"); |
|
45 createResult1 = new mozContact(prop); |
|
46 req = navigator.mozContacts.save(createResult1); |
|
47 req.onsuccess = function () { |
|
48 ok(createResult1.id, "The contact now has an ID."); |
|
49 sample_id1 = createResult1.id; |
|
50 next(); |
|
51 }; |
|
52 req.onerror = onFailure; |
|
53 }, |
|
54 function () { |
|
55 ok(true, "Retrieving all contacts"); |
|
56 req = mozContacts.find({}); |
|
57 req.onsuccess = function () { |
|
58 is(req.result.length, 1, "One contact."); |
|
59 findResult1 = req.result[0]; |
|
60 next(); |
|
61 }; |
|
62 req.onerror = onFailure; |
|
63 }, |
|
64 function () { |
|
65 ok(true, "Retrieving by substring 1"); |
|
66 var length = prop.tel[0].value.length; |
|
67 var num = "04143727591" |
|
68 var options = {filterBy: ["tel"], |
|
69 filterOp: "match", |
|
70 filterValue: num}; |
|
71 req = mozContacts.find(options); |
|
72 req.onsuccess = function () { |
|
73 is(req.result.length, 1, "Found exactly 1 contact."); |
|
74 findResult1 = req.result[0]; |
|
75 ok(findResult1.id == sample_id1, "Same ID"); |
|
76 is(findResult1.tel[1].value, "7704143727591", "Same Value"); |
|
77 next(); |
|
78 }; |
|
79 req.onerror = onFailure; |
|
80 }, |
|
81 function () { |
|
82 ok(true, "Adding contact"); |
|
83 createResult1 = new mozContact(prop2); |
|
84 req = navigator.mozContacts.save(createResult1); |
|
85 req.onsuccess = function () { |
|
86 ok(createResult1.id, "The contact now has an ID."); |
|
87 sample_id1 = createResult1.id; |
|
88 next(); |
|
89 }; |
|
90 req.onerror = onFailure; |
|
91 }, |
|
92 function () { |
|
93 ok(true, "Retrieving by substring 2"); |
|
94 var num = "5551212"; |
|
95 var options = {filterBy: ["tel"], |
|
96 filterOp: "match", |
|
97 filterValue: num}; |
|
98 req = mozContacts.find(options); |
|
99 req.onsuccess = function () { |
|
100 is(req.result.length, 1, "Found exactly 1 contact."); |
|
101 findResult1 = req.result[0]; |
|
102 ok(findResult1.id == sample_id1, "Same ID"); |
|
103 is(findResult1.tel[1].value, "+58 212 5551212", "Same Value"); |
|
104 next(); |
|
105 }; |
|
106 req.onerror = onFailure; |
|
107 }, |
|
108 function () { |
|
109 ok(true, "Deleting database"); |
|
110 req = mozContacts.clear() |
|
111 req.onsuccess = function () { |
|
112 ok(true, "Deleted the database"); |
|
113 next(); |
|
114 } |
|
115 req.onerror = onFailure; |
|
116 }, |
|
117 function () { |
|
118 ok(true, "all done!\n"); |
|
119 SimpleTest.finish(); |
|
120 } |
|
121 ]; |
|
122 |
|
123 SpecialPowers.pushPrefEnv({ |
|
124 set: [ |
|
125 ["dom.phonenumber.substringmatching.VE", 7], |
|
126 ["ril.lastKnownSimMcc", "734"] |
|
127 ] |
|
128 }, start_tests); |
|
129 </script> |
|
130 </pre> |
|
131 </body> |
|
132 </html> |