Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
231
gaia/apps/sharedtest/test/unit/contact2vcard_test.js
Executable file
231
gaia/apps/sharedtest/test/unit/contact2vcard_test.js
Executable file
|
|
@ -0,0 +1,231 @@
|
|||
/* global ContactToVcard, ContactToVcardBlob, MockContactAllFields,
|
||||
MocksHelper, mozContact */
|
||||
|
||||
'use strict';
|
||||
|
||||
require('/shared/test/unit/mocks/mock_moz_contact.js');
|
||||
require('/shared/test/unit/mocks/mock_contact_all_fields.js');
|
||||
require('/shared/js/contact2vcard.js');
|
||||
require('/shared/js/setImmediate.js');
|
||||
|
||||
var mocksHelperForContact2vcard = new MocksHelper([
|
||||
'mozContact'
|
||||
]).init();
|
||||
|
||||
suite('mozContact to vCard', function() {
|
||||
function contains(vcard) {
|
||||
return function(str) {
|
||||
return vcard.toLowerCase().indexOf(str.toLowerCase()) !== -1;
|
||||
};
|
||||
}
|
||||
|
||||
var b64 = 'R0lGODlhEAAQAMQfAKxoR8VkLxFw1feVPITSWv+eQv7Qo0Cc6OyIN/v7+3PLTSCZ' +
|
||||
'EFy17Wa6XuT1x2bGQ3nNUU6vRXPAa9mLXMTkwJZEHJt7LL5aJ/z8/O2KONx3L/ubP/r6+rtV' +
|
||||
'I////////yH5BAEAAB8ALAAAAAAQABAAAAWD4CeOZDlimOitnvlhXefFiyCs3NkZMe9QDMGi' +
|
||||
'k3t1BgZDIcZgHCCxHAyxKRQmnYOkoYgaNYMNr3JoEB6dDBGmyWxihwNBgVZz2Js3YB+JWNpr' +
|
||||
'HW15YgA2FxkaRB8JgoQxHQEbdiKNg4R5iYuVgpcZmkUjHDEapYqbJRyjkKouoqqhIyEAOw==';
|
||||
|
||||
mocksHelperForContact2vcard.attachTestHelpers();
|
||||
|
||||
suite('mozContact to vCard', function() {
|
||||
test('Convert a single contact to a vcard', function(done) {
|
||||
var mc = new MockContactAllFields();
|
||||
mc.anniversary = new Date(0);
|
||||
var contacts = [mc];
|
||||
var str = '';
|
||||
var count = 0;
|
||||
|
||||
ContactToVcard([mc], function append(vcards, nCards) {
|
||||
str += vcards;
|
||||
count += nCards;
|
||||
}, function success() {
|
||||
done(function() {
|
||||
var _contains = contains(str);
|
||||
|
||||
assert.equal(count, contacts.length);
|
||||
assert.ok(_contains('version:3.0'));
|
||||
assert.ok(_contains('fn:pepito grillo'));
|
||||
assert.ok(_contains('n:grillo;pepito;green;mr.;;'));
|
||||
assert.ok(_contains('nickname:pg'));
|
||||
assert.ok(_contains('category:favorite'));
|
||||
assert.ok(_contains('org:test org'));
|
||||
assert.ok(_contains('title:sr. software architect'));
|
||||
assert.ok(_contains('note:note 1'));
|
||||
assert.ok(_contains('bday:1970-01-01T00:00:00Z'));
|
||||
assert.ok(_contains('anniversary:1970-01-01T00:00:00Z'));
|
||||
assert.ok(_contains('photo;encoding=b;type=image/gif:' + b64));
|
||||
assert.ok(_contains('email;type=home:test@test.com'));
|
||||
assert.ok(_contains('email;type=work,pref:test@work.com'));
|
||||
assert.ok(_contains('tel;type=cell,pref:+346578888888'));
|
||||
assert.ok(_contains('tel;type=home:+3120777777'));
|
||||
assert.ok(_contains('adr;type=home,pref:;;gotthardstrasse 22;' +
|
||||
'chemnitz;chemnitz;09034;germany'));
|
||||
assert.ok(!_contains('url;type=fb_profile_photo:https://abcd1.jpg'));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('Convert a single contact to a vcard without photo', function(done) {
|
||||
var mc = new MockContactAllFields();
|
||||
mc.anniversary = new Date(0);
|
||||
var contacts = [mc];
|
||||
var str = '';
|
||||
var count = 0;
|
||||
|
||||
ContactToVcard([mc], function append(vcards, nCards) {
|
||||
str += vcards;
|
||||
count += nCards;
|
||||
}, function success() {
|
||||
done(function() {
|
||||
var _contains = contains(str);
|
||||
|
||||
assert.equal(count, contacts.length);
|
||||
assert.ok(_contains('version:3.0'));
|
||||
assert.ok(_contains('fn:pepito grillo'));
|
||||
assert.ok(_contains('n:grillo;pepito;green;mr.;;'));
|
||||
assert.ok(_contains('nickname:pg'));
|
||||
assert.ok(_contains('category:favorite'));
|
||||
assert.ok(_contains('org:test org'));
|
||||
assert.ok(_contains('title:sr. software architect'));
|
||||
assert.ok(_contains('note:note 1'));
|
||||
assert.ok(_contains('bday:1970-01-01T00:00:00Z'));
|
||||
assert.ok(_contains('anniversary:1970-01-01T00:00:00Z'));
|
||||
assert.ok(!_contains('photo;encoding=b;type=image/gif:' + b64));
|
||||
assert.ok(_contains('email;type=home:test@test.com'));
|
||||
assert.ok(_contains('email;type=work,pref:test@work.com'));
|
||||
assert.ok(_contains('tel;type=cell,pref:+346578888888'));
|
||||
assert.ok(_contains('tel;type=home:+3120777777'));
|
||||
assert.ok(_contains('adr;type=home,pref:;;gotthardstrasse 22;' +
|
||||
'chemnitz;chemnitz;09034;germany'));
|
||||
assert.ok(!_contains('url;type=fb_profile_photo:https://abcd1.jpg'));
|
||||
});
|
||||
},
|
||||
null,
|
||||
true
|
||||
);
|
||||
});
|
||||
|
||||
test('Convert multiple contacts to a vcard', function(done) {
|
||||
var mc = new MockContactAllFields();
|
||||
mc.anniversary = new Date(0);
|
||||
var contacts = [mc, mc];
|
||||
var str = '';
|
||||
var count = 0;
|
||||
|
||||
ContactToVcard(contacts, function(vcards, nCards) {
|
||||
str += vcards;
|
||||
count += nCards;
|
||||
}, function success() {
|
||||
done(function() {
|
||||
var _contains = contains(str);
|
||||
|
||||
assert.equal(count, contacts.length);
|
||||
assert.ok(_contains('fn:pepito grillo'));
|
||||
assert.ok(_contains('n:grillo;pepito;green;mr.;;'));
|
||||
assert.ok(_contains('nickname:pg'));
|
||||
assert.ok(_contains('category:favorite'));
|
||||
assert.ok(_contains('org:test org'));
|
||||
assert.ok(_contains('title:sr. software architect'));
|
||||
assert.ok(_contains('note:note 1'));
|
||||
assert.ok(_contains('bday:1970-01-01T00:00:00Z'));
|
||||
assert.ok(_contains('anniversary:1970-01-01T00:00:00Z'));
|
||||
assert.ok(_contains('photo;encoding=b;type=image/gif:' + b64));
|
||||
assert.ok(_contains('email;type=home:test@test.com'));
|
||||
assert.ok(_contains('tel;type=cell,pref:+346578888888'));
|
||||
assert.ok(_contains('tel;type=home:+3120777777'));
|
||||
assert.ok(_contains('adr;type=home,pref:;;gotthardstrasse 22;' +
|
||||
'chemnitz;chemnitz;09034;germany'));
|
||||
assert.ok(!_contains('url;type=fb_profile_photo:https://abcd1.jpg'));
|
||||
});
|
||||
}, b64.length / 2); // This ensures at least two batches
|
||||
});
|
||||
|
||||
test('Convert an empty contact to a vcard', function(done) {
|
||||
var contacts = [new mozContact()];
|
||||
var str = '';
|
||||
var count = 0;
|
||||
|
||||
ContactToVcard(contacts, function append(vcards, nCards) {
|
||||
str += vcards;
|
||||
count += nCards;
|
||||
}, function success() {
|
||||
done(function() {
|
||||
assert.equal(count, contacts.length);
|
||||
assert.strictEqual(str, '');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('Convert contact to vcard blob', function(done) {
|
||||
var mc = new MockContactAllFields();
|
||||
var contacts = [mc];
|
||||
var str = '';
|
||||
var count = 0;
|
||||
|
||||
ContactToVcardBlob(contacts, function(blob) {
|
||||
assert.isNotNull(blob);
|
||||
|
||||
// Fetch the same content as a normal vcard
|
||||
ContactToVcard(contacts, function append(vcards, nCards) {
|
||||
str += vcards;
|
||||
count += nCards;
|
||||
}, function success() {
|
||||
// Read the content and verify that is what we generate
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.addEventListener('loadend', function() {
|
||||
var blobContent = reader.result;
|
||||
|
||||
done(function() {
|
||||
// Size and content of the blob should match that of the string
|
||||
assert.equal(str.length, blob.size);
|
||||
assert.equal(str, blobContent);
|
||||
});
|
||||
});
|
||||
reader.readAsText(blob);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
suite('MIME types >', function() {
|
||||
var contact;
|
||||
|
||||
suiteSetup(function() {
|
||||
contact = new MockContactAllFields(true);
|
||||
contact.photo = null;
|
||||
});
|
||||
|
||||
test('> Contact transformed to vcard. No options', function(done) {
|
||||
ContactToVcardBlob([contact], function blobReady(vcardBlob) {
|
||||
assert.isTrue(vcardBlob.size > 0);
|
||||
|
||||
assert.equal(vcardBlob.type, 'text/vcard; charset=utf-8');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('> Contact transformed to vcard. Only MIME type', function(done) {
|
||||
var targetType = 'text/x-vcard';
|
||||
ContactToVcardBlob([contact], function blobReady(vcardBlob) {
|
||||
assert.isTrue(vcardBlob.size > 0);
|
||||
|
||||
assert.equal(vcardBlob.type, targetType + '; charset=utf-8');
|
||||
done();
|
||||
}, { type: targetType });
|
||||
});
|
||||
|
||||
test('> Contact transformed to vcard. MIME type & charset',
|
||||
function(done) {
|
||||
var targetType = 'text/x-vcard; charset=iso-8859-1';
|
||||
|
||||
ContactToVcardBlob([contact], function blobReady(vcardBlob) {
|
||||
assert.isTrue(vcardBlob.size > 0);
|
||||
|
||||
assert.equal(vcardBlob.type, targetType);
|
||||
done();
|
||||
}, { type: targetType });
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue