Introduce intl-friendly sort order for contact lists (#1900)

This commit is contained in:
Scott Nonnenberg 2017-12-14 16:30:11 -08:00 committed by GitHub
parent 5cf320e429
commit f0aaa7a1c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 78 additions and 16 deletions

View file

@ -0,0 +1,43 @@
'use strict';
describe('ConversationController', function() {
it('sorts conversations based on timestamp then by intl-friendly title', function() {
var collection = window.getInboxCollection();
collection.reset([]);
collection.add(new Whisper.Conversation({
name: 'No timestamp',
}));
collection.add(new Whisper.Conversation({
name: 'B',
timestamp: 20,
}));
collection.add(new Whisper.Conversation({
name: 'C',
timestamp: 20,
}));
collection.add(new Whisper.Conversation({
name: 'Á',
timestamp: 20,
}));
collection.add(new Whisper.Conversation({
name: 'First!',
timestamp: 30,
}));
console.log('WTF!');
console.log(collection.at('0').attributes);
console.log(collection.at('1').attributes);
console.log(collection.at('2').attributes);
console.log(collection.at('3').attributes);
console.log(collection.at('4').attributes);
assert.strictEqual(collection.at('0').get('name'), 'First!');
assert.strictEqual(collection.at('1').get('name'), 'Á');
assert.strictEqual(collection.at('2').get('name'), 'B');
assert.strictEqual(collection.at('3').get('name'), 'C');
assert.strictEqual(collection.at('4').get('name'), 'No timestamp');
collection.reset([]);
});
});

View file

@ -645,6 +645,7 @@
<script type="text/javascript" src="models/messages_test.js"></script>
<script type="text/javascript" src="libphonenumber_util_test.js"></script>
<script type="text/javascript" src="conversation_controller_test.js"></script>
<script type="text/javascript" src="storage_test.js"></script>
<script type="text/javascript" src="keychange_listener_test.js"></script>
<script type="text/javascript" src="emoji_util_test.js"></script>

View file

@ -98,6 +98,23 @@
});
after(clearDatabase);
it('sorts its contacts in an intl-friendly way', function() {
var convo = new Whisper.Conversation({id: '+18085555555'});
convo.contactCollection.add(new Whisper.Conversation({
name: 'C'
}));
convo.contactCollection.add(new Whisper.Conversation({
name: 'B'
}));
convo.contactCollection.add(new Whisper.Conversation({
name: 'Á'
}));
assert.strictEqual(convo.contactCollection.at('0').get('name'), 'Á');
assert.strictEqual(convo.contactCollection.at('1').get('name'), 'B');
assert.strictEqual(convo.contactCollection.at('2').get('name'), 'C');
});
it('contains its own messages', function (done) {
var convo = new Whisper.ConversationCollection().add({id: '+18085555555'});
convo.fetchMessages().then(function() {