Conversation: store lastMessage/lastMessageStatus in memory only
This commit is contained in:
parent
f39a96bc76
commit
61f7b8360b
8 changed files with 126 additions and 85 deletions
|
@ -60,25 +60,26 @@ function hexToArrayBuffer(str) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* Delete the database before running any tests */
|
||||
before(function(done) {
|
||||
var idbReq = indexedDB.deleteDatabase('test');
|
||||
idbReq.onsuccess = function() {
|
||||
done();
|
||||
};
|
||||
});
|
||||
function deleteDatabase() {
|
||||
return new Promise((resolve, reject) => {
|
||||
var idbReq = indexedDB.deleteDatabase('test');
|
||||
idbReq.onsuccess = resolve;
|
||||
idbReq.error = reject;
|
||||
});
|
||||
}
|
||||
|
||||
/* Delete the database before running any tests */
|
||||
before(async () => {
|
||||
await deleteDatabase();
|
||||
|
||||
async function clearDatabase() {
|
||||
await Signal.Migrations.Migrations0DatabaseWithAttachmentData.run({
|
||||
Backbone,
|
||||
databaseName: Whisper.Database.id,
|
||||
logger: window.log,
|
||||
});
|
||||
});
|
||||
|
||||
const convos = new Whisper.ConversationCollection();
|
||||
await wrapDeferred(convos.fetch());
|
||||
await wrapDeferred(convos.destroyAll());
|
||||
const messages = new Whisper.MessageCollection();
|
||||
await wrapDeferred(messages.fetch());
|
||||
await wrapDeferred(messages.destroyAll());
|
||||
async function clearDatabase() {
|
||||
const db = await Whisper.Database.open();
|
||||
await Whisper.Database.clear();
|
||||
}
|
||||
|
|
|
@ -1,32 +1,26 @@
|
|||
'use strict';
|
||||
|
||||
describe('Fixtures', function() {
|
||||
before(function(done) {
|
||||
before(function() {
|
||||
// NetworkStatusView checks this method every five seconds while showing
|
||||
window.getSocketStatus = function() {
|
||||
return WebSocket.OPEN;
|
||||
};
|
||||
|
||||
Whisper.Fixtures()
|
||||
.saveAll()
|
||||
.then(function() {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('renders', function(done) {
|
||||
ConversationController.reset();
|
||||
ConversationController.load()
|
||||
.then(function() {
|
||||
var view = new Whisper.InboxView({ window: window });
|
||||
view.onEmpty();
|
||||
view.$el.prependTo($('#render-light-theme'));
|
||||
it('renders', async () => {
|
||||
await Whisper.Fixtures().saveAll();
|
||||
|
||||
var view = new Whisper.InboxView({ window: window });
|
||||
view.$el.removeClass('light-theme').addClass('dark-theme');
|
||||
view.onEmpty();
|
||||
view.$el.prependTo($('#render-dark-theme'));
|
||||
})
|
||||
.then(done, done);
|
||||
ConversationController.reset();
|
||||
await ConversationController.load();
|
||||
|
||||
var view = new Whisper.InboxView({ window: window });
|
||||
view.onEmpty();
|
||||
view.$el.prependTo($('#render-light-theme'));
|
||||
|
||||
var view = new Whisper.InboxView({ window: window });
|
||||
view.$el.removeClass('light-theme').addClass('dark-theme');
|
||||
view.onEmpty();
|
||||
view.$el.prependTo($('#render-dark-theme'));
|
||||
});
|
||||
});
|
||||
|
|
|
@ -36,15 +36,15 @@
|
|||
.then(done);
|
||||
});
|
||||
|
||||
it('fetches persistent convos', function(done) {
|
||||
it('fetches persistent convos', async () => {
|
||||
var convos = new Whisper.ConversationCollection();
|
||||
assert.strictEqual(convos.length, 0);
|
||||
convos.fetch().then(function() {
|
||||
var m = convos.at(0).attributes;
|
||||
_.each(conversation_attributes, function(val, key) {
|
||||
assert.deepEqual(m[key], val);
|
||||
});
|
||||
done();
|
||||
|
||||
await wrapDeferred(convos.fetch());
|
||||
|
||||
var m = convos.at(0).attributes;
|
||||
_.each(conversation_attributes, function(val, key) {
|
||||
assert.deepEqual(m[key], val);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -226,14 +226,18 @@
|
|||
});
|
||||
|
||||
describe('Conversation search', function() {
|
||||
var convo = new Whisper.ConversationCollection().add({
|
||||
id: '+14155555555',
|
||||
type: 'private',
|
||||
name: 'John Doe',
|
||||
});
|
||||
before(function(done) {
|
||||
let convo;
|
||||
|
||||
beforeEach(function(done) {
|
||||
convo = new Whisper.ConversationCollection().add({
|
||||
id: '+14155555555',
|
||||
type: 'private',
|
||||
name: 'John Doe',
|
||||
});
|
||||
convo.save().then(done);
|
||||
});
|
||||
afterEach(clearDatabase);
|
||||
|
||||
function testSearch(queries, done) {
|
||||
return Promise.all(
|
||||
queries.map(function(query) {
|
||||
|
|
|
@ -9,6 +9,7 @@ describe('AttachmentView', () => {
|
|||
|
||||
before(async () => {
|
||||
await clearDatabase();
|
||||
|
||||
convo = new Whisper.Conversation({ id: 'foo' });
|
||||
message = convo.messageCollection.add({
|
||||
conversationId: convo.id,
|
||||
|
|
|
@ -24,20 +24,26 @@ describe('ConversationSearchView', function() {
|
|||
});
|
||||
});
|
||||
describe('Searching for left groups', function() {
|
||||
var convo = new Whisper.ConversationCollection().add({
|
||||
id: 'a-left-group',
|
||||
name: 'i left this group',
|
||||
members: [],
|
||||
type: 'group',
|
||||
left: true,
|
||||
});
|
||||
let convo;
|
||||
|
||||
before(() => {
|
||||
convo = new Whisper.ConversationCollection().add({
|
||||
id: 'a-left-group',
|
||||
name: 'i left this group',
|
||||
members: [],
|
||||
type: 'group',
|
||||
left: true,
|
||||
});
|
||||
|
||||
return wrapDeferred(convo.save());
|
||||
});
|
||||
describe('with no messages', function() {
|
||||
var input = $('<input>');
|
||||
var view = new Whisper.ConversationSearchView({ input: input }).render();
|
||||
var input;
|
||||
var view;
|
||||
|
||||
before(function(done) {
|
||||
input = $('<input>');
|
||||
view = new Whisper.ConversationSearchView({ input: input }).render();
|
||||
view.$input.val('left');
|
||||
view.filterContacts();
|
||||
view.typeahead_view.collection.on('reset', function() {
|
||||
|
@ -52,9 +58,11 @@ describe('ConversationSearchView', function() {
|
|||
});
|
||||
});
|
||||
describe('with messages', function() {
|
||||
var input = $('<input>');
|
||||
var view = new Whisper.ConversationSearchView({ input: input }).render();
|
||||
var input;
|
||||
var view;
|
||||
before(function(done) {
|
||||
input = $('<input>');
|
||||
view = new Whisper.ConversationSearchView({ input: input }).render();
|
||||
convo.save({ lastMessage: 'asdf' }).then(function() {
|
||||
view.$input.val('left');
|
||||
view.filterContacts();
|
||||
|
@ -72,17 +80,22 @@ describe('ConversationSearchView', function() {
|
|||
});
|
||||
});
|
||||
describe('Showing all contacts', function() {
|
||||
var input = $('<input>');
|
||||
var view = new Whisper.ConversationSearchView({ input: input }).render();
|
||||
view.showAllContacts = true;
|
||||
var convo = new Whisper.ConversationCollection().add({
|
||||
id: 'a-left-group',
|
||||
name: 'i left this group',
|
||||
members: [],
|
||||
type: 'group',
|
||||
left: true,
|
||||
});
|
||||
let input;
|
||||
let view;
|
||||
let convo;
|
||||
|
||||
before(() => {
|
||||
input = $('<input>');
|
||||
view = new Whisper.ConversationSearchView({ input: input }).render();
|
||||
view.showAllContacts = true;
|
||||
convo = new Whisper.ConversationCollection().add({
|
||||
id: 'a-left-group',
|
||||
name: 'i left this group',
|
||||
members: [],
|
||||
type: 'group',
|
||||
left: true,
|
||||
});
|
||||
|
||||
return wrapDeferred(convo.save());
|
||||
});
|
||||
describe('with no messages', function() {
|
||||
|
|
|
@ -1,11 +1,19 @@
|
|||
describe('InboxView', function() {
|
||||
var inboxView = new Whisper.InboxView({
|
||||
model: {},
|
||||
window: window,
|
||||
initialLoadComplete: function() {},
|
||||
}).render();
|
||||
let inboxView;
|
||||
let conversation;
|
||||
|
||||
var conversation = new Whisper.Conversation({ id: '1234', type: 'private' });
|
||||
before(() => {
|
||||
inboxView = new Whisper.InboxView({
|
||||
model: {},
|
||||
window: window,
|
||||
initialLoadComplete: function() {},
|
||||
}).render();
|
||||
|
||||
conversation = new Whisper.Conversation({
|
||||
id: '1234',
|
||||
type: 'private',
|
||||
});
|
||||
});
|
||||
|
||||
describe('the conversation stack', function() {
|
||||
it('should be rendered', function() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue