mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-25 10:58:19 +01:00
Deduplicate usernames
This commit is contained in:
138
ts/test-node/sql/migration_1600_test.node.ts
Normal file
138
ts/test-node/sql/migration_1600_test.node.ts
Normal file
@@ -0,0 +1,138 @@
|
||||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import { assert } from 'chai';
|
||||
|
||||
import { type WritableDB } from '../../sql/Interface.std.js';
|
||||
import {
|
||||
createDB,
|
||||
getTableData,
|
||||
insertData,
|
||||
updateToVersion,
|
||||
} from './helpers.node.js';
|
||||
|
||||
type ConversationRow = {
|
||||
id: string;
|
||||
json: {
|
||||
username?: string;
|
||||
needsStorageServiceSync?: boolean;
|
||||
};
|
||||
};
|
||||
describe('SQL/updateToSchemaVersion1600', () => {
|
||||
let db: WritableDB;
|
||||
|
||||
beforeEach(() => {
|
||||
db = createDB();
|
||||
updateToVersion(db, 1590);
|
||||
});
|
||||
afterEach(() => {
|
||||
db.close();
|
||||
});
|
||||
|
||||
it('deduplicates usernames based on most recent active_at', () => {
|
||||
insertData(db, 'conversations', [
|
||||
{
|
||||
id: 'convo1',
|
||||
type: 'private',
|
||||
active_at: 1,
|
||||
json: {
|
||||
username: 'username1',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'convo2',
|
||||
type: 'private',
|
||||
active_at: 2,
|
||||
json: {
|
||||
username: 'username1',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'convo3',
|
||||
type: 'private',
|
||||
active_at: null,
|
||||
json: {
|
||||
username: 'username1',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'convo4',
|
||||
type: 'private',
|
||||
active_at: 4,
|
||||
json: {
|
||||
username: 'username2',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'convo5',
|
||||
type: 'private',
|
||||
active_at: 5,
|
||||
json: {
|
||||
username: 'username2',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'convo6',
|
||||
type: 'private',
|
||||
active_at: 6,
|
||||
json: {
|
||||
username: 'username3',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'convo7',
|
||||
type: 'private',
|
||||
active_at: 7,
|
||||
json: {},
|
||||
},
|
||||
]);
|
||||
|
||||
updateToVersion(db, 1600);
|
||||
|
||||
assert.deepStrictEqual(
|
||||
(getTableData(db, 'conversations') as Array<ConversationRow>)
|
||||
.sort((a, b) => a.id.localeCompare(b.id))
|
||||
.map(({ id, json }) => ({
|
||||
id,
|
||||
username: json.username,
|
||||
needsStorageServiceSync: json.needsStorageServiceSync,
|
||||
})),
|
||||
[
|
||||
{
|
||||
id: 'convo1',
|
||||
username: undefined,
|
||||
needsStorageServiceSync: true,
|
||||
},
|
||||
{
|
||||
id: 'convo2',
|
||||
username: 'username1',
|
||||
needsStorageServiceSync: undefined,
|
||||
},
|
||||
{
|
||||
id: 'convo3',
|
||||
username: undefined,
|
||||
needsStorageServiceSync: true,
|
||||
},
|
||||
{
|
||||
id: 'convo4',
|
||||
username: undefined,
|
||||
needsStorageServiceSync: true,
|
||||
},
|
||||
{
|
||||
id: 'convo5',
|
||||
username: 'username2',
|
||||
needsStorageServiceSync: undefined,
|
||||
},
|
||||
{
|
||||
id: 'convo6',
|
||||
username: 'username3',
|
||||
needsStorageServiceSync: undefined,
|
||||
},
|
||||
{
|
||||
id: 'convo7',
|
||||
username: undefined,
|
||||
needsStorageServiceSync: undefined,
|
||||
},
|
||||
]
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user