/* global $, Whisper */ describe('ConversationSearchView', () => { 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' ); }); }); }); });