зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1084384: support alternate phone number values for Google import. r=abr
This commit is contained in:
Родитель
7df061c788
Коммит
7c2f78133d
|
@ -448,10 +448,13 @@ this.GoogleImporter.prototype = {
|
|||
if (phoneNodes.length) {
|
||||
contact.tel = [];
|
||||
for (let [,phoneNode] of Iterator(phoneNodes)) {
|
||||
let phoneNumber = phoneNode.hasAttribute("uri") ?
|
||||
phoneNode.getAttribute("uri").replace("tel:", "") :
|
||||
phoneNode.firstChild.nodeValue;
|
||||
contact.tel.push({
|
||||
pref: (phoneNode.getAttribute("primary") == "true"),
|
||||
type: [getFieldType(phoneNode)],
|
||||
value: phoneNode.getAttribute("uri").replace("tel:", "")
|
||||
value: phoneNumber
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,19 +17,25 @@ function promiseImport() {
|
|||
});
|
||||
}
|
||||
|
||||
const kContactsCount = 7;
|
||||
|
||||
add_task(function* test_GoogleImport() {
|
||||
let stats;
|
||||
// An error may throw and the test will fail when that happens.
|
||||
stats = yield promiseImport();
|
||||
|
||||
let contactsCount = mockDb.size;
|
||||
|
||||
// Assert the world.
|
||||
Assert.equal(stats.total, 6, "Five contacts should get processed");
|
||||
Assert.equal(stats.success, 6, "Five contacts should be imported");
|
||||
Assert.equal(stats.total, contactsCount, "Five contacts should get processed");
|
||||
Assert.equal(stats.success, contactsCount, "Five contacts should be imported");
|
||||
|
||||
yield promiseImport();
|
||||
Assert.equal(Object.keys(mockDb._store).length, 6, "Database should contain only five contact after reimport");
|
||||
Assert.equal(Object.keys(mockDb._store).length, contactsCount, "Database should be the same size after reimport");
|
||||
|
||||
let c = mockDb._store[mockDb._next_guid - 6];
|
||||
let currentContact = contactsCount;
|
||||
|
||||
let c = mockDb._store[mockDb._next_guid - currentContact];
|
||||
Assert.equal(c.name[0], "John Smith", "Full name should match");
|
||||
Assert.equal(c.givenName[0], "John", "Given name should match");
|
||||
Assert.equal(c.familyName[0], "Smith", "Family name should match");
|
||||
|
@ -39,7 +45,7 @@ add_task(function* test_GoogleImport() {
|
|||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/0", "UID should match and be scoped to provider");
|
||||
|
||||
c = mockDb._store[mockDb._next_guid - 5];
|
||||
c = mockDb._store[mockDb._next_guid - (--currentContact)];
|
||||
Assert.equal(c.name[0], "Jane Smith", "Full name should match");
|
||||
Assert.equal(c.givenName[0], "Jane", "Given name should match");
|
||||
Assert.equal(c.familyName[0], "Smith", "Family name should match");
|
||||
|
@ -49,7 +55,7 @@ add_task(function* test_GoogleImport() {
|
|||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/1", "UID should match and be scoped to provider");
|
||||
|
||||
c = mockDb._store[mockDb._next_guid - 4];
|
||||
c = mockDb._store[mockDb._next_guid - (--currentContact)];
|
||||
Assert.equal(c.name[0], "Davy Randall Jones", "Full name should match");
|
||||
Assert.equal(c.givenName[0], "Davy Randall", "Given name should match");
|
||||
Assert.equal(c.familyName[0], "Jones", "Family name should match");
|
||||
|
@ -59,7 +65,7 @@ add_task(function* test_GoogleImport() {
|
|||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/2", "UID should match and be scoped to provider");
|
||||
|
||||
c = mockDb._store[mockDb._next_guid - 3];
|
||||
c = mockDb._store[mockDb._next_guid - (--currentContact)];
|
||||
Assert.equal(c.name[0], "noname@example.com", "Full name should match");
|
||||
Assert.equal(c.email[0].type, "other", "Email type should match");
|
||||
Assert.equal(c.email[0].value, "noname@example.com", "Email should match");
|
||||
|
@ -67,7 +73,7 @@ add_task(function* test_GoogleImport() {
|
|||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/3", "UID should match and be scoped to provider");
|
||||
|
||||
c = mockDb._store[mockDb._next_guid - 2];
|
||||
c = mockDb._store[mockDb._next_guid - (--currentContact)];
|
||||
Assert.equal(c.name[0], "lycnix", "Full name should match");
|
||||
Assert.equal(c.email[0].type, "other", "Email type should match");
|
||||
Assert.equal(c.email[0].value, "lycnix", "Email should match");
|
||||
|
@ -75,11 +81,19 @@ add_task(function* test_GoogleImport() {
|
|||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/7", "UID should match and be scoped to provider");
|
||||
|
||||
c = mockDb._store[mockDb._next_guid - 1];
|
||||
c = mockDb._store[mockDb._next_guid - (--currentContact)];
|
||||
Assert.equal(c.name[0], "+31-6-12345678", "Full name should match");
|
||||
Assert.equal(c.tel[0].type, "mobile", "Email type should match");
|
||||
Assert.equal(c.tel[0].value, "+31-6-12345678", "Email should match");
|
||||
Assert.equal(c.tel[0].type, "mobile", "Phone type should match");
|
||||
Assert.equal(c.tel[0].value, "+31-6-12345678", "Phone should match");
|
||||
Assert.equal(c.tel[0].pref, false, "Pref should match");
|
||||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/8", "UID should match and be scoped to provider");
|
||||
|
||||
c = mockDb._store[mockDb._next_guid - (--currentContact)];
|
||||
Assert.equal(c.name[0], "215234523452345", "Full name should match");
|
||||
Assert.equal(c.tel[0].type, "mobile", "Phone type should match");
|
||||
Assert.equal(c.tel[0].value, "215234523452345", "Phone should match");
|
||||
Assert.equal(c.tel[0].pref, false, "Pref should match");
|
||||
Assert.equal(c.category[0], "google", "Category should match");
|
||||
Assert.equal(c.id, "http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/6", "UID should match and be scoped to provider");
|
||||
});
|
||||
|
|
|
@ -102,4 +102,16 @@
|
|||
<link href="https://www.google.com/m8/feeds/contacts/tester%40mochi.com/full/8" rel="edit" type="application/atom+xml"/>
|
||||
<gd:phoneNumber rel="http://schemas.google.com/g/2005#mobile" uri="tel:+31-6-12345678">0612345678</gd:phoneNumber>
|
||||
</entry>
|
||||
<entry gd:etag=""SX8-ejVSLit7I2A9XRdQFUkDRgY."">
|
||||
<id>http://www.google.com/m8/feeds/contacts/tester%40mochi.com/base/6</id>
|
||||
<updated>2014-10-17T12:32:08.152Z</updated>
|
||||
<app:edited xmlns:app="http://www.w3.org/2007/app">2014-10-17T12:32:08.152Z</app:edited>
|
||||
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
|
||||
<title/>
|
||||
<link href="https://www.google.com/m8/feeds/photos/media/tester%40mochi.com/6" rel="http://schemas.google.com/contacts/2008/rel#photo" type="image/*"/>
|
||||
<link href="https://www.google.com/m8/feeds/contacts/tester%40mochi.com/full/6" rel="self" type="application/atom+xml"/>
|
||||
<link href="https://www.google.com/m8/feeds/contacts/tester%40mochi.com/full/6" rel="edit" type="application/atom+xml"/>
|
||||
<gd:phoneNumber rel="http://schemas.google.com/g/2005#mobile">215234523452345</gd:phoneNumber>
|
||||
<gContact:groupMembershipInfo deleted="false" href="http://www.google.com/m8/feeds/groups/tester%40mochi.com/base/6"/>
|
||||
</entry>
|
||||
</feed>
|
||||
|
|
|
@ -218,6 +218,10 @@ const mockDb = {
|
|||
_store: { },
|
||||
_next_guid: 1,
|
||||
|
||||
get size() {
|
||||
return Object.getOwnPropertyNames(this._store).length;
|
||||
},
|
||||
|
||||
add: function(details, callback) {
|
||||
if (!("id" in details)) {
|
||||
callback(new Error("No 'id' field present"));
|
||||
|
|
Загрузка…
Ссылка в новой задаче