Ensure deleting conversation deletes story replies

This commit is contained in:
Josh Perez 2022-09-29 20:57:11 -04:00 committed by GitHub
parent 00a720faa9
commit 67c706a7ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 219 additions and 163 deletions

View file

@ -70,6 +70,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.activity?.body, message2.body, 'activity');
@ -122,7 +123,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
isGroup: true,
includeStoryReplies: false,
ourUuid,
});
@ -215,6 +216,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.preview?.body, message1.body);
@ -322,6 +324,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.activity?.body, message1.body);
@ -370,6 +373,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.activity?.body, message1.body);
@ -419,6 +423,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.activity?.body, message1.body);
@ -461,6 +466,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.preview?.body, message1.body);
@ -505,6 +511,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.preview?.body, message1.body);
@ -564,6 +571,7 @@ describe('sql/conversationSummary', () => {
const messages = await getConversationMessageStats({
conversationId,
ourUuid,
includeStoryReplies: false,
});
assert.strictEqual(messages.activity?.body, message1.body, 'activity');

View file

@ -41,7 +41,7 @@ describe('sql/markRead', () => {
const conversationId = getUuid();
const ourUuid = getUuid();
const message1: MessageAttributesType = {
const oldest: MessageAttributesType = {
id: getUuid(),
body: 'message 1',
type: 'incoming',
@ -51,7 +51,7 @@ describe('sql/markRead', () => {
timestamp: start + 1,
readStatus: ReadStatus.Read,
};
const message2: MessageAttributesType = {
const oldestUnread: MessageAttributesType = {
id: getUuid(),
body: 'message 2',
type: 'incoming',
@ -61,7 +61,7 @@ describe('sql/markRead', () => {
timestamp: start + 2,
readStatus: ReadStatus.Unread,
};
const message3: MessageAttributesType = {
const unreadInAnotherConvo: MessageAttributesType = {
id: getUuid(),
body: 'message 3',
type: 'incoming',
@ -71,7 +71,7 @@ describe('sql/markRead', () => {
timestamp: start + 3,
readStatus: ReadStatus.Unread,
};
const message4: MessageAttributesType = {
const unread: MessageAttributesType = {
id: getUuid(),
body: 'message 4',
type: 'incoming',
@ -81,7 +81,7 @@ describe('sql/markRead', () => {
timestamp: start + 4,
readStatus: ReadStatus.Unread,
};
const message5: MessageAttributesType = {
const unreadStory: MessageAttributesType = {
id: getUuid(),
body: 'message 5',
type: 'story',
@ -92,7 +92,7 @@ describe('sql/markRead', () => {
readStatus: ReadStatus.Unread,
storyId: getUuid(),
};
const message6: MessageAttributesType = {
const unreadStoryReply: MessageAttributesType = {
id: getUuid(),
body: 'message 6',
type: 'incoming',
@ -103,7 +103,7 @@ describe('sql/markRead', () => {
readStatus: ReadStatus.Unread,
storyId: getUuid(),
};
const message7: MessageAttributesType = {
const newestUnread: MessageAttributesType = {
id: getUuid(),
body: 'message 7',
type: 'incoming',
@ -115,7 +115,15 @@ describe('sql/markRead', () => {
};
await saveMessages(
[message1, message2, message3, message4, message5, message6, message7],
[
oldest,
oldestUnread,
unreadInAnotherConvo,
unread,
unreadStory,
unreadStoryReply,
newestUnread,
],
{
forceSave: true,
ourUuid,
@ -126,56 +134,68 @@ describe('sql/markRead', () => {
assert.strictEqual(
await getTotalUnreadForConversation(conversationId, {
storyId: undefined,
isGroup: false,
includeStoryReplies: false,
}),
4,
'unread count'
3,
'no stories/unread count - before'
);
const markedRead = await getUnreadByConversationAndMarkRead({
conversationId,
newestUnreadAt: message4.received_at,
newestUnreadAt: unreadStoryReply.received_at,
readAt,
includeStoryReplies: false,
});
assert.lengthOf(markedRead, 2, 'two messages marked read');
assert.lengthOf(markedRead, 2, 'no stories/two messages marked read');
assert.strictEqual(
await getTotalUnreadForConversation(conversationId, {
storyId: undefined,
isGroup: false,
includeStoryReplies: false,
}),
2,
'unread count'
1,
'no stories/unread count - after'
);
// Sorted in descending order
assert.strictEqual(
markedRead[0].id,
message4.id,
'first should be message4'
unread.id,
'no stories/first should be "unread" message'
);
assert.strictEqual(
markedRead[1].id,
message2.id,
'second should be message2'
oldestUnread.id,
'no stories/second should be oldestUnread'
);
const markedRead2 = await getUnreadByConversationAndMarkRead({
conversationId,
newestUnreadAt: message7.received_at,
newestUnreadAt: newestUnread.received_at,
readAt,
includeStoryReplies: true,
});
assert.lengthOf(markedRead2, 2, 'two messages marked read');
assert.strictEqual(markedRead2[0].id, message7.id, 'should be message7');
assert.lengthOf(markedRead2, 2, 'with stories/two messages marked read');
assert.strictEqual(
markedRead2[0].id,
newestUnread.id,
'with stories/should be newestUnread'
);
assert.strictEqual(
markedRead2[1].id,
unreadStoryReply.id,
'with stories/should be unreadStoryReply'
);
assert.strictEqual(
await getTotalUnreadForConversation(conversationId, {
storyId: undefined,
isGroup: false,
includeStoryReplies: true,
}),
0,
'unread count'
'with stories/unread count'
);
});
@ -281,6 +301,7 @@ describe('sql/markRead', () => {
newestUnreadAt: message7.received_at,
readAt,
storyId,
includeStoryReplies: false,
});
assert.lengthOf(markedRead, 3, 'three messages marked read');
@ -377,7 +398,7 @@ describe('sql/markRead', () => {
assert.strictEqual(
await getTotalUnreadForConversation(conversationId, {
storyId: undefined,
isGroup: false,
includeStoryReplies: true,
}),
2,
'unread count'
@ -388,6 +409,7 @@ describe('sql/markRead', () => {
conversationId,
newestUnreadAt: message4.received_at,
readAt,
includeStoryReplies: false,
now,
});
@ -400,7 +422,7 @@ describe('sql/markRead', () => {
assert.strictEqual(
await getTotalUnreadForConversation(conversationId, {
storyId: undefined,
isGroup: false,
includeStoryReplies: true,
}),
1,
'unread count'
@ -798,7 +820,7 @@ describe('sql/markRead', () => {
const markedRead = await getUnreadByConversationAndMarkRead({
conversationId,
isGroup: true,
includeStoryReplies: false,
newestUnreadAt: message4.received_at,
readAt,
});

View file

@ -93,7 +93,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 5);
const messages = await getOlderMessagesByConversation(conversationId, {
isGroup: false,
includeStoryReplies: true,
limit: 5,
storyId: undefined,
});
@ -150,7 +150,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
storyId,
});
@ -204,7 +204,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
storyId: undefined,
});
@ -255,7 +255,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
receivedAt: target,
sentAt: target,
@ -308,7 +308,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
receivedAt: target,
sentAt: target,
@ -365,7 +365,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getOlderMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
messageId: message2.id,
receivedAt: target,
@ -443,7 +443,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 5);
const messages = await getNewerMessagesByConversation(conversationId, {
isGroup: false,
includeStoryReplies: true,
limit: 5,
storyId: undefined,
});
@ -499,7 +499,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
storyId,
});
@ -551,7 +551,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
receivedAt: target,
sentAt: target,
@ -606,7 +606,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
storyId: undefined,
receivedAt: target,
@ -659,7 +659,7 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 3);
const messages = await getNewerMessagesByConversation(conversationId, {
isGroup: true,
includeStoryReplies: false,
limit: 5,
receivedAt: target,
sentAt: target,
@ -778,24 +778,23 @@ describe('sql/timelineFetches', () => {
assert.lengthOf(await _getAllMessages(), 8);
const metricsInTimeline = await getMessageMetricsForConversation(
conversationId
);
assert.strictEqual(
metricsInTimeline?.oldest?.id,
oldestInStory.id,
'oldest'
conversationId,
{
includeStoryReplies: false,
}
);
assert.strictEqual(metricsInTimeline?.oldest?.id, oldest.id, 'oldest');
assert.strictEqual(metricsInTimeline?.newest?.id, newest.id, 'newest');
assert.strictEqual(
metricsInTimeline?.oldestUnseen?.id,
oldestUnseen.id,
'oldestUnseen'
);
assert.strictEqual(metricsInTimeline?.totalUnseen, 3, 'totalUnseen');
assert.strictEqual(metricsInTimeline?.totalUnseen, 2, 'totalUnseen');
const metricsInStory = await getMessageMetricsForConversation(
conversationId,
storyId
{ storyId, includeStoryReplies: true }
);
assert.strictEqual(
metricsInStory?.oldest?.id,