mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Bug 889673 - Adapt Contacts Unit Tests for Android. CLOSED TREE. r=reuben
--HG-- extra : amend_source : 15338826405ad30caba9573b2cf934a19cca77fe
This commit is contained in:
parent
16d77c1f85
commit
4eacef464e
@ -15,5 +15,9 @@ EXTRA_COMPONENTS += [
|
||||
|
||||
EXTRA_JS_MODULES += [
|
||||
'ContactDB.jsm',
|
||||
'ContactService.jsm',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
|
||||
EXTRA_JS_MODULES += [
|
||||
'ContactService.jsm'
|
||||
]
|
||||
|
@ -30,33 +30,35 @@ SpecialPowers.addPermission("contacts-write", true, document);
|
||||
SpecialPowers.addPermission("contacts-read", true, document);
|
||||
SpecialPowers.addPermission("contacts-create", true, document);
|
||||
|
||||
var isAndroid = (navigator.userAgent.indexOf("Android") !== -1);
|
||||
|
||||
// For Sorting
|
||||
var c1 = {
|
||||
name: "a",
|
||||
name: ["a a"],
|
||||
familyName: ["a"],
|
||||
givenName: ["a"],
|
||||
};
|
||||
|
||||
var c2 = {
|
||||
name: "b",
|
||||
name: ["b b"],
|
||||
familyName: ["b"],
|
||||
givenName: ["b"],
|
||||
};
|
||||
|
||||
var c3 = {
|
||||
name: "c",
|
||||
name: ["c c", "a a", "b b"],
|
||||
familyName: ["c","a","b"],
|
||||
givenName: ["c","a","b"],
|
||||
};
|
||||
|
||||
var c4 = {
|
||||
name: "d",
|
||||
name: ["c c", "a a", "c c"],
|
||||
familyName: ["c","a","c"],
|
||||
givenName: ["c","a","c"],
|
||||
};
|
||||
|
||||
var c5 = {
|
||||
name: "empty"
|
||||
nickname: "empty"
|
||||
};
|
||||
|
||||
var adr1 = {
|
||||
@ -78,18 +80,17 @@ var adr2 = {
|
||||
};
|
||||
|
||||
var properties1 = {
|
||||
name: "Testname1",
|
||||
name: ["Test1 TestFamilyName", "Test2 Wagner"],
|
||||
familyName: ["TestFamilyName","Wagner"],
|
||||
givenName: ["Test1","Test2"],
|
||||
nickname: "nicktest",
|
||||
tel: [{type: ["work"], value: "123456", carrier: "testCarrier"} , {type: ["home", "fax"], value: "+55 (31) 9876-3456"}, {type: ["home"], value: "+49 451 491934"}],
|
||||
adr: adr1,
|
||||
email: [{type: ["work"], value: "x@y.com"}],
|
||||
key: "4343JEGJGERNBEGOI34G3WGVERBERB"
|
||||
};
|
||||
|
||||
var properties2 = {
|
||||
name: ["dummyName", "dummyName2"],
|
||||
name: ["dummyHonorificPrefix dummyGivenName dummyFamilyName dummyHonorificSuffix", "dummyHonorificPrefix2"],
|
||||
familyName: "dummyFamilyName",
|
||||
givenName: "dummyGivenName",
|
||||
honorificPrefix: ["dummyHonorificPrefix","dummyHonorificPrefix2"],
|
||||
@ -102,10 +103,10 @@ var properties2 = {
|
||||
impp: [{type: ["aim"], value:"im1", pref: 1}, {value: "im2"}],
|
||||
org: ["org1", "org2"],
|
||||
jobTitle: ["boss", "superboss"],
|
||||
bday: new Date("1980, 12, 01"),
|
||||
note: "test note",
|
||||
category: ["cat1", "cat2"],
|
||||
url: [{type: ["work", "work2"], value: "www.1.com", pref: 1}, {value:"www2.com"}],
|
||||
bday: new Date("1980, 12, 01"),
|
||||
anniversary: new Date("2000, 12, 01"),
|
||||
sex: "male",
|
||||
genderIdentity: "test",
|
||||
@ -170,7 +171,7 @@ function checkAddress(adr1, adr2) {
|
||||
checkStrArray(adr1.region, adr2.region, "Same region");
|
||||
checkStrArray(adr1.postalCode, adr2.postalCode, "Same postalCode");
|
||||
checkStrArray(adr1.countryName, adr2.countryName, "Same countryName");
|
||||
is(adr1.pref, adr2.pref, "Same pref");
|
||||
checkPref(adr1.pref, adr2.pref);
|
||||
}
|
||||
|
||||
function checkTel(tel1, tel2) {
|
||||
@ -181,7 +182,7 @@ function checkTel(tel1, tel2) {
|
||||
checkStrArray(tel1.type, tel2.type, "Same type");
|
||||
checkStrArray(tel1.value, tel2.value, "Same value");
|
||||
checkStrArray(tel1.carrier, tel2.carrier, "Same carrier");
|
||||
is(tel1.pref, tel2.pref, "Same pref");
|
||||
checkPref(tel1.pref, tel2.pref);
|
||||
}
|
||||
|
||||
function checkField(field1, field2) {
|
||||
@ -191,7 +192,42 @@ function checkField(field1, field2) {
|
||||
}
|
||||
checkStrArray(field1.type, field2.type, "Same type");
|
||||
checkStrArray(field1.value, field2.value, "Same value");
|
||||
is(field1.pref, field2.pref, "Same pref");
|
||||
checkPref(field1.pref, field2.pref);
|
||||
}
|
||||
|
||||
function checkPref(pref1, pref2) {
|
||||
// If on Android treat one preference as 0 and the other as undefined as matching
|
||||
if (isAndroid) {
|
||||
if ((pref1 == 0 && pref2 == undefined) || (pref1 == undefined && pref2 == 0)) {
|
||||
pref1 = 0;
|
||||
pref2 = 0;
|
||||
}
|
||||
}
|
||||
is(pref1, pref2, "Same pref");
|
||||
}
|
||||
|
||||
function checkCategory(category1, category2) {
|
||||
// Android adds contacts to the a default category. This should be removed from the
|
||||
// results before comparing them
|
||||
if (isAndroid) {
|
||||
category1 = removeAndroidDefaultCategory(category1);
|
||||
category2 = removeAndroidDefaultCategory(category2);
|
||||
}
|
||||
checkStrArray(category1, category2, "Same Category")
|
||||
}
|
||||
|
||||
function removeAndroidDefaultCategory(category) {
|
||||
if (category == undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = 0; i < category.length; i++) {
|
||||
if (category[i] == "My Contacts") {
|
||||
category.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
return category;
|
||||
}
|
||||
|
||||
function checkContacts(contact1, contact2) {
|
||||
@ -202,7 +238,7 @@ function checkContacts(contact1, contact2) {
|
||||
checkStrArray(contact1.familyName, contact2.familyName, "Same familyName");
|
||||
checkStrArray(contact1.honorificSuffix, contact2.honorificSuffix, "Same honorificSuffix");
|
||||
checkStrArray(contact1.nickname, contact2.nickname, "Same nickname");
|
||||
checkStrArray(contact1.category, contact2.category, "Same category");
|
||||
checkCategory(contact1.category, contact2.category);
|
||||
checkStrArray(contact1.org, contact2.org, "Same org");
|
||||
checkStrArray(contact1.jobTitle, contact2.jobTitle, "Same jobTitle");
|
||||
is(contact1.bday ? contact1.bday.valueOf() : null, contact2.bday ? contact2.bday.valueOf() : null, "Same birthday");
|
||||
@ -240,7 +276,14 @@ function checkRevision(revision, msg, then) {
|
||||
is(e.target.result, initialRev+revision, msg);
|
||||
then();
|
||||
};
|
||||
revReq.onerror = onFailure;
|
||||
// The revision function isn't supported on Android so treat on failure as success
|
||||
if (isAndroid) {
|
||||
revReq.onerror = function(e) {
|
||||
then();
|
||||
};
|
||||
} else {
|
||||
revReq.onerror = onFailure;
|
||||
}
|
||||
}
|
||||
|
||||
function checkCount(count, msg, then) {
|
||||
@ -262,7 +305,16 @@ var steps = [
|
||||
initialRev = e.target.result;
|
||||
next();
|
||||
};
|
||||
req.onerror = onFailure;
|
||||
|
||||
// Android does not support the revision function. Treat errors as success.
|
||||
if (isAndroid) {
|
||||
req.onerror = function(e) {
|
||||
initialRev = 0;
|
||||
next();
|
||||
};
|
||||
} else {
|
||||
req.onerror = onFailure;
|
||||
}
|
||||
},
|
||||
function () {
|
||||
ok(true, "Deleting database");
|
||||
@ -744,6 +796,12 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function() {
|
||||
// Android does not support published/updated fields. Skip this.
|
||||
if (isAndroid) {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
|
||||
ok(true, "Saving old contact, should abort!");
|
||||
req = mozContacts.save(createResult1);
|
||||
req.onsuccess = onUnwantedSuccess;
|
||||
@ -1006,7 +1064,7 @@ var steps = [
|
||||
req = mozContacts.save(createResult1);
|
||||
req.onsuccess = function () {
|
||||
ok(createResult1.id, "The contact now has an ID.");
|
||||
ok(createResult1.name == properties1.name, "Same Name");
|
||||
checkStrArray(createResult1.name, properties1.name, "Same Name");
|
||||
checkCount(20, "20 contacts in DB", next);
|
||||
};
|
||||
req.onerror = onFailure;
|
||||
@ -1085,7 +1143,7 @@ var steps = [
|
||||
req = mozContacts.save(createResult1);
|
||||
req.onsuccess = function () {
|
||||
ok(createResult1.id, "The contact now has an ID.");
|
||||
ok(createResult1.name == properties1.name, "Same Name");
|
||||
checkStrArray(createResult1.name, properties1.name, "Same Name");
|
||||
next();
|
||||
}
|
||||
req.onerror = onFailure;
|
||||
@ -1330,7 +1388,7 @@ var steps = [
|
||||
function () {
|
||||
ok(true, "Adding empty contact");
|
||||
createResult1 = new mozContact();
|
||||
createResult1.init({givenName: "5"});
|
||||
createResult1.init({name: "5", givenName: "5"});
|
||||
req = navigator.mozContacts.save(createResult1);
|
||||
req.onsuccess = function () {
|
||||
ok(createResult1.id, "The contact now has an ID.");
|
||||
@ -1431,9 +1489,9 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function () {
|
||||
ok(true, "Testing numbersOnly search");
|
||||
ok(true, "Testing numbersOnly search 1");
|
||||
createResult1 = new mozContact();
|
||||
createResult1.init({ givenName: ["aaaaaaaaa"], tel: [{ value: "1234567890"}]});
|
||||
createResult1.init({ name: ["aaaaaaaaa"], givenName: ["aaaaaaaaa"], tel: [{ value: "1234567890"}]});
|
||||
req = navigator.mozContacts.save(createResult1);
|
||||
req.onsuccess = function () {
|
||||
ok(createResult1.id, "The contact now has an ID.");
|
||||
@ -1442,7 +1500,7 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function () {
|
||||
ok(true, "Test numbersOnly search");
|
||||
ok(true, "Test numbersOnly search 2");
|
||||
var options = {filterBy: ["givenName", "tel"],
|
||||
filterOp: "contains",
|
||||
filterValue: "a"};
|
||||
@ -1455,7 +1513,7 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function () {
|
||||
ok(true, "Test numbersOnly search");
|
||||
ok(true, "Test numbersOnly search 3");
|
||||
var options = {filterBy: ["givenName", "tel"],
|
||||
filterOp: "contains",
|
||||
filterValue: "b"};
|
||||
@ -1467,7 +1525,7 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function () {
|
||||
ok(true, "Test numbersOnly search");
|
||||
ok(true, "Test numbersOnly search 4");
|
||||
var options = {filterBy: ["givenName", "tel"],
|
||||
filterOp: "contains",
|
||||
filterValue: "1a"};
|
||||
@ -1479,7 +1537,7 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function () {
|
||||
ok(true, "Test numbersOnly search");
|
||||
ok(true, "Test numbersOnly search 5");
|
||||
var options = {filterBy: ["givenName", "tel"],
|
||||
filterOp: "contains",
|
||||
filterValue: "1(23)"};
|
||||
@ -1491,7 +1549,7 @@ var steps = [
|
||||
req.onerror = onFailure;
|
||||
},
|
||||
function () {
|
||||
ok(true, "Test numbersOnly search");
|
||||
ok(true, "Test numbersOnly search 6");
|
||||
var options = {filterBy: ["givenName", "tel"],
|
||||
filterOp: "contains",
|
||||
filterValue: "1(23)a"};
|
||||
|
@ -85,11 +85,13 @@ var randomBlob = getRandomBlob(1024);
|
||||
var randomBlob2 = getRandomBlob(1024);
|
||||
|
||||
var properties1 = {
|
||||
name: "xTestname1",
|
||||
givenName: "xTestname1",
|
||||
photo: [randomBlob]
|
||||
};
|
||||
|
||||
var properties2 = {
|
||||
name: "yTestname2",
|
||||
givenName: "yTestname2",
|
||||
photo: [randomBlob, randomBlob2]
|
||||
};
|
||||
|
@ -40,7 +40,7 @@ let adr1 = {
|
||||
};
|
||||
|
||||
let properties1 = {
|
||||
name: "Testname1",
|
||||
name: ["Testname1 TestFamilyName"],
|
||||
familyName: ["TestFamilyName","Wagner"],
|
||||
givenName: ["Test1","Test2"],
|
||||
nickname: "nicktest",
|
||||
@ -165,6 +165,7 @@ function addContacts() {
|
||||
for (let i = 0; i < 39; ++i) {
|
||||
createResult1 = new mozContact();
|
||||
properties1.familyName[0] = "Testname" + (i < 10 ? "0" + i : i);
|
||||
properties1.name = properties1.givenName[0] + " " + properties1.familyName[0];
|
||||
createResult1.init(properties1);
|
||||
req = mozContacts.save(createResult1);
|
||||
req.onsuccess = function() {
|
||||
@ -174,6 +175,7 @@ function addContacts() {
|
||||
};
|
||||
createResult1 = new mozContact();
|
||||
properties1.familyName[0] = "Testname39";
|
||||
properties1.name = properties1.givenName[0] + " Testname39";
|
||||
createResult1.init(properties1);
|
||||
req = mozContacts.save(createResult1);
|
||||
req.onsuccess = function() {
|
||||
|
Loading…
Reference in New Issue
Block a user