No Backbone in data layer; server/client interfaces are now similar

This commit is contained in:
Scott Nonnenberg 2021-12-10 14:51:54 -08:00 committed by GitHub
parent 064bbfe97a
commit 34fd945f83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 573 additions and 1021 deletions

View file

@ -28,12 +28,7 @@ describe('sql/allMedia', () => {
describe('getMessagesWithVisualMediaAttachments', () => {
it('returns messages matching with visual attachments', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -69,12 +64,7 @@ describe('sql/allMedia', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await getMessagesWithVisualMediaAttachments(
conversationId,
@ -85,12 +75,7 @@ describe('sql/allMedia', () => {
});
it('excludes stories and story replies', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -129,12 +114,7 @@ describe('sql/allMedia', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await getMessagesWithVisualMediaAttachments(
conversationId,
@ -147,12 +127,7 @@ describe('sql/allMedia', () => {
describe('getMessagesWithFileAttachments', () => {
it('returns messages matching with visual attachments', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -188,12 +163,7 @@ describe('sql/allMedia', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await getMessagesWithFileAttachments(
conversationId,
@ -204,12 +174,7 @@ describe('sql/allMedia', () => {
});
it('excludes stories and story replies', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -248,12 +213,7 @@ describe('sql/allMedia', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await getMessagesWithFileAttachments(
conversationId,

View file

@ -27,12 +27,7 @@ describe('sql/fullTextSearch', () => {
});
it('returns messages matching query', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -66,12 +61,7 @@ describe('sql/fullTextSearch', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await searchMessages('unique');
assert.lengthOf(searchResults, 1);
@ -87,12 +77,7 @@ describe('sql/fullTextSearch', () => {
});
it('excludes messages with isViewOnce = true', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -128,12 +113,7 @@ describe('sql/fullTextSearch', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await searchMessages('unique');
assert.lengthOf(searchResults, 1);
@ -148,12 +128,7 @@ describe('sql/fullTextSearch', () => {
});
it('excludes messages with storyId !== null', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -189,12 +164,7 @@ describe('sql/fullTextSearch', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const searchResults = await searchMessages('unique');
assert.lengthOf(searchResults, 1);

View file

@ -34,12 +34,7 @@ describe('sql/markRead', () => {
});
it('properly finds and reads unread messages in current conversation', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const start = Date.now();
const readAt = start + 20;
@ -125,12 +120,7 @@ describe('sql/markRead', () => {
}
);
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
7
);
assert.lengthOf(await _getAllMessages(), 7);
assert.strictEqual(
await getTotalUnreadForConversation(conversationId),
3,
@ -179,12 +169,7 @@ describe('sql/markRead', () => {
});
it('properly finds and reads unread messages in story', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const start = Date.now();
const readAt = start + 20;
@ -276,12 +261,7 @@ describe('sql/markRead', () => {
}
);
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
7
);
assert.lengthOf(await _getAllMessages(), 7);
const markedRead = await getUnreadByConversationAndMarkRead({
conversationId,
@ -311,12 +291,7 @@ describe('sql/markRead', () => {
});
it('properly starts disappearing message timer, even if message is already read', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const start = Date.now();
const readAt = start + 20;
@ -388,12 +363,7 @@ describe('sql/markRead', () => {
2,
'unread count'
);
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const markedRead = await getUnreadByConversationAndMarkRead({
conversationId,
@ -413,21 +383,21 @@ describe('sql/markRead', () => {
'unread count'
);
const allMessages = await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
});
const allMessages = await _getAllMessages();
const sorted = allMessages.sort(
(left, right) => left.timestamp - right.timestamp
);
// Ascending order, since it's sorted by MessageCollection
assert.strictEqual(allMessages.at(1).id, message2.id);
assert.strictEqual(sorted[1].id, message2.id, 'checking message 2');
assert.isAtMost(
allMessages.at(1).get('expirationStartTimestamp') ?? Infinity,
sorted[1].expirationStartTimestamp ?? Infinity,
Date.now(),
'checking message 2 expirationStartTimestamp'
);
assert.strictEqual(allMessages.at(3).id, message4.id, 'checking message 4');
assert.strictEqual(sorted[3].id, message4.id, 'checking message 4');
assert.isAtMost(
allMessages.at(3).get('expirationStartTimestamp') ?? Infinity,
sorted[3].expirationStartTimestamp ?? Infinity,
Date.now(),
'checking message 4 expirationStartTimestamp'
);
@ -490,12 +460,7 @@ describe('sql/markRead', () => {
await saveMessages([message1, message2, message3, message4, message5], {
forceSave: true,
});
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const reaction1: ReactionType = {
conversationId,
@ -642,12 +607,7 @@ describe('sql/markRead', () => {
await saveMessages([message1, message2, message3, message4, message5], {
forceSave: true,
});
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const reaction1: ReactionType = {
conversationId,

View file

@ -124,7 +124,7 @@ describe('sql/sendLog', () => {
assert.strictEqual(actual.timestamp, proto.timestamp);
await removeMessage(id, { Message: window.Whisper.Message });
await removeMessage(id);
assert.lengthOf(await getAllSentProtos(), 0);
});

View file

@ -23,12 +23,7 @@ describe('sql/stories', () => {
describe('getOlderStories', () => {
it('returns N most recent stories overall, or in converation, or by author', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -89,12 +84,7 @@ describe('sql/stories', () => {
forceSave: true,
});
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const stories = await getOlderStories({
limit: 5,
@ -155,12 +145,7 @@ describe('sql/stories', () => {
});
it('returns N stories older than provided receivedAt/sentAt', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const start = Date.now();
const conversationId = getUuid();
@ -214,12 +199,7 @@ describe('sql/stories', () => {
forceSave: true,
});
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const stories = await getOlderStories({
receivedAt: story4.received_at,

View file

@ -30,12 +30,7 @@ describe('sql/timelineFetches', () => {
describe('getOlderMessagesByConversation', () => {
it('returns N most recent messages', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -92,30 +87,20 @@ describe('sql/timelineFetches', () => {
forceSave: true,
});
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const messages = await getOlderMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
});
assert.lengthOf(messages, 2);
// They are not in DESC order because MessageCollection is sorting them
assert.strictEqual(messages.at(0).attributes.id, message1.id);
assert.strictEqual(messages.at(1).attributes.id, message2.id);
// Fetched with DESC query, but with reverse() call afterwards
assert.strictEqual(messages[0].id, message1.id);
assert.strictEqual(messages[1].id, message2.id);
});
it('returns N most recent messages for a given story', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -152,29 +137,18 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
storyId,
});
assert.lengthOf(messages, 1);
assert.strictEqual(messages.at(0).attributes.id, message2.id);
assert.strictEqual(messages[0].id, message2.id);
});
it('returns N messages older than provided received_at', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const target = Date.now();
const conversationId = getUuid();
@ -208,30 +182,19 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
receivedAt: target,
sentAt: target,
});
assert.lengthOf(messages, 1);
assert.strictEqual(messages.at(0).attributes.id, message1.id);
assert.strictEqual(messages[0].id, message1.id);
});
it('returns N older messages with received_at, lesser sent_at', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const target = Date.now();
const conversationId = getUuid();
@ -265,33 +228,23 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
receivedAt: target,
sentAt: target,
});
assert.lengthOf(messages, 2);
// They are not in DESC order because MessageCollection is sorting them
assert.strictEqual(messages.at(0).attributes.id, message1.id);
assert.strictEqual(messages.at(1).attributes.id, message2.id);
// Fetched with DESC query, but with reverse() call afterwards
assert.strictEqual(messages[0].id, message1.id, 'checking message 1');
assert.strictEqual(messages[1].id, message2.id, 'checking message 2');
});
it('returns N older messages, same received_at/sent_at but excludes messageId', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const target = Date.now();
const conversationId = getUuid();
@ -325,15 +278,9 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
receivedAt: target,
sentAt: target,
@ -341,18 +288,13 @@ describe('sql/timelineFetches', () => {
});
assert.lengthOf(messages, 1);
assert.strictEqual(messages.at(0).attributes.id, message1.id);
assert.strictEqual(messages[0].id, message1.id);
});
});
describe('getNewerMessagesByConversation', () => {
it('returns N oldest messages with no parameters', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -409,30 +351,19 @@ describe('sql/timelineFetches', () => {
forceSave: true,
});
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
5
);
assert.lengthOf(await _getAllMessages(), 5);
const messages = await getNewerMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
});
assert.lengthOf(messages, 2);
assert.strictEqual(messages.at(0).attributes.id, message4.id);
assert.strictEqual(messages.at(1).attributes.id, message5.id);
assert.strictEqual(messages[0].id, message4.id, 'checking message 4');
assert.strictEqual(messages[1].id, message5.id, 'checking message 5');
});
it('returns N oldest messages for a given story with no parameters', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const now = Date.now();
const conversationId = getUuid();
@ -469,30 +400,19 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
storyId,
});
assert.lengthOf(messages, 1);
assert.strictEqual(messages.at(0).attributes.id, message2.id);
assert.strictEqual(messages[0].id, message2.id);
});
it('returns N messages newer than provided received_at', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const target = Date.now();
const conversationId = getUuid();
@ -526,30 +446,19 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
receivedAt: target,
sentAt: target,
});
assert.lengthOf(messages, 1);
assert.strictEqual(messages.at(0).attributes.id, message3.id);
assert.strictEqual(messages[0].id, message3.id);
});
it('returns N newer messages with same received_at, greater sent_at', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const target = Date.now();
const conversationId = getUuid();
@ -583,15 +492,9 @@ describe('sql/timelineFetches', () => {
await saveMessages([message1, message2, message3], { forceSave: true });
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
3
);
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
MessageCollection: window.Whisper.MessageCollection,
limit: 5,
receivedAt: target,
sentAt: target,
@ -599,19 +502,14 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(messages, 2);
// They are not in DESC order because MessageCollection is sorting them
assert.strictEqual(messages.at(0).attributes.id, message2.id);
assert.strictEqual(messages.at(1).attributes.id, message3.id);
assert.strictEqual(messages[0].id, message2.id);
assert.strictEqual(messages[1].id, message3.id);
});
});
describe('getMessageMetricsForConversation', () => {
it('returns metrics properly for story and non-story timelines', async () => {
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
0
);
assert.lengthOf(await _getAllMessages(), 0);
const target = Date.now();
const conversationId = getUuid();
@ -710,12 +608,7 @@ describe('sql/timelineFetches', () => {
{ forceSave: true }
);
assert.lengthOf(
await _getAllMessages({
MessageCollection: window.Whisper.MessageCollection,
}),
8
);
assert.lengthOf(await _getAllMessages(), 8);
const metricsInTimeline = await getMessageMetricsForConversation(
conversationId