|  |  |  | /* global storage, libsignal, ConversationController, textsecure, Whisper */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('InboxView', () => { | 
					
						
							|  |  |  |   let inboxView; | 
					
						
							|  |  |  |   let conversation; | 
					
						
							|  |  |  |   let identityKey; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before(async () => { | 
					
						
							|  |  |  |     ConversationController.reset(); | 
					
						
							|  |  |  |     identityKey = { | 
					
						
							|  |  |  |       pubKey: libsignal.crypto.getRandomBytes(33), | 
					
						
							|  |  |  |       privKey: libsignal.crypto.getRandomBytes(32), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     storage.put('identityKey', identityKey); | 
					
						
							|  |  |  |     await ConversationController.load(); | 
					
						
							|  |  |  |     await textsecure.storage.user.setNumberAndDeviceId( | 
					
						
							|  |  |  |       '18005554444', | 
					
						
							|  |  |  |       1, | 
					
						
							|  |  |  |       'Home Office' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     await ConversationController.getOrCreateAndWait( | 
					
						
							|  |  |  |       textsecure.storage.user.getNumber(), | 
					
						
							|  |  |  |       'private' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     inboxView = new Whisper.InboxView({ | 
					
						
							|  |  |  |       model: {}, | 
					
						
							|  |  |  |       window, | 
					
						
							|  |  |  |       initialLoadComplete() {}, | 
					
						
							|  |  |  |     }).render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conversation = new Whisper.Conversation({ | 
					
						
							|  |  |  |       id: '1234', | 
					
						
							|  |  |  |       type: 'private', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe('the conversation stack', () => { | 
					
						
							|  |  |  |     it('should be rendered', () => { | 
					
						
							|  |  |  |       assert.ok(inboxView.$('.conversation-stack').length === 1); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     describe('opening a conversation', () => { | 
					
						
							|  |  |  |       let triggeredOpenedCount = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       before(() => { | 
					
						
							|  |  |  |         conversation.on('opened', () => { | 
					
						
							|  |  |  |           triggeredOpenedCount += 1; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         inboxView.conversation_stack.open(conversation); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should trigger an opened event', () => { | 
					
						
							|  |  |  |         assert.ok(triggeredOpenedCount === 1); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       describe('and then opening it again immediately', () => { | 
					
						
							|  |  |  |         before(() => { | 
					
						
							|  |  |  |           inboxView.conversation_stack.open(conversation); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         it('should trigger the opened event again', () => { | 
					
						
							|  |  |  |           assert.ok(triggeredOpenedCount === 2); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |