/* global $, Whisper */ describe('ConversationSearchView', () => { it('should match partial numbers', () => { const $el = $('
'); const view = new Whisper.ConversationSearchView({ el: $el, input: $(''), }).render(); const maybeNumbers = [ '+1 415', '+1415', '+1415', '415', '(415)', ' (415', '(415) 123 4567', '+1 (415) 123 4567', ' +1 (415) 123 4567', '1 (415) 123 4567', '1 415-123-4567', '415-123-4567', ]; maybeNumbers.forEach(n => { assert.ok(view.maybeNumber(n), n); }); }); describe('Searching for left groups', () => { let convo; before(() => { convo = new Whisper.ConversationCollection().add({ id: '1-search-view', name: 'i left this group', members: [], type: 'group', left: true, }); return window.Signal.Data.saveConversation(convo.attributes, { Conversation: Whisper.Conversation, }); }); describe('with no messages', () => { let input; let view; before(done => { input = $(''); view = new Whisper.ConversationSearchView({ input }).render(); view.$input.val('left'); view.filterContacts(); view.typeahead_view.collection.on('reset', () => { done(); }); }); it('should not surface left groups with no messages', () => { assert.isUndefined( view.typeahead_view.collection.get(convo.id), 'got left group' ); }); }); describe('with messages', () => { let input; let view; before(async () => { input = $(''); view = new Whisper.ConversationSearchView({ input }).render(); convo.set({ id: '2-search-view', left: false }); await window.Signal.Data.saveConversation(convo.attributes, { Conversation: Whisper.Conversation, }); view.$input.val('left'); view.filterContacts(); return new Promise(resolve => { view.typeahead_view.collection.on('reset', resolve); }); }); it('should surface left groups with messages', () => { assert.isDefined( view.typeahead_view.collection.get(convo.id), 'got left group' ); }); }); }); });