134 lines
		
	
	
	
		
			2.9 KiB
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			134 lines
		
	
	
	
		
			2.9 KiB
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2025 Signal Messenger, LLC
							 | 
						||
| 
								 | 
							
								// SPDX-License-Identifier: AGPL-3.0-only
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { assert } from 'chai';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { type WritableDB } from '../../sql/Interface';
							 | 
						||
| 
								 | 
							
								import { createDB, updateToVersion, insertData, getTableData } from './helpers';
							 | 
						||
| 
								 | 
							
								import { createOrUpdate, getById } from '../../sql/util';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('SQL/updateToSchemaVersion1410', () => {
							 | 
						||
| 
								 | 
							
								  let db: WritableDB;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  afterEach(() => {
							 | 
						||
| 
								 | 
							
								    db.close();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  beforeEach(() => {
							 | 
						||
| 
								 | 
							
								    db = createDB();
							 | 
						||
| 
								 | 
							
								    updateToVersion(db, 1400);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('deletes conversation wallpaper data if exists', () => {
							 | 
						||
| 
								 | 
							
								    const convos = [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'convo-1',
							 | 
						||
| 
								 | 
							
								        expireTimerVersion: 1,
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          wallpaperPreset: 42,
							 | 
						||
| 
								 | 
							
								          wallpaperPhotoPointerBase64: 'base64',
							 | 
						||
| 
								 | 
							
								          dimWallpaperInDarkMode: false,
							 | 
						||
| 
								 | 
							
								          autoBubbleColor: true,
							 | 
						||
| 
								 | 
							
								          profileName: 'Alice',
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'convo-2',
							 | 
						||
| 
								 | 
							
								        expireTimerVersion: 3,
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          wallpaperPreset: 42,
							 | 
						||
| 
								 | 
							
								          wallpaperPhotoPointerBase64: 'base64',
							 | 
						||
| 
								 | 
							
								          profileName: 'Bob',
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'convo-3',
							 | 
						||
| 
								 | 
							
								        expireTimerVersion: 4,
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          profileName: 'Charlie',
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								    insertData(db, 'conversations', convos);
							 | 
						||
| 
								 | 
							
								    updateToVersion(db, 1410);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(getTableData(db, 'conversations'), [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'convo-1',
							 | 
						||
| 
								 | 
							
								        expireTimerVersion: 1,
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          profileName: 'Alice',
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'convo-2',
							 | 
						||
| 
								 | 
							
								        expireTimerVersion: 3,
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          profileName: 'Bob',
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'convo-3',
							 | 
						||
| 
								 | 
							
								        expireTimerVersion: 4,
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          profileName: 'Charlie',
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    ]);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('deletes default wallpaper data if exists', () => {
							 | 
						||
| 
								 | 
							
								    const items = [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'defaultWallpaperPhotoPointer',
							 | 
						||
| 
								 | 
							
								        value: JSON.stringify(new Uint8Array([1, 2, 3])),
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'defaultWallpaperPreset',
							 | 
						||
| 
								 | 
							
								        value: 12,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'defaultDimWallpaperInDarkMode',
							 | 
						||
| 
								 | 
							
								        value: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'defaultAutoBubbleColor',
							 | 
						||
| 
								 | 
							
								        value: false,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'otherItem',
							 | 
						||
| 
								 | 
							
								        value: 'otherItem-shouldBePreserved',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (const item of items) {
							 | 
						||
| 
								 | 
							
								      createOrUpdate(db, 'items', { id: item.id, value: item });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    updateToVersion(db, 1410);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(
							 | 
						||
| 
								 | 
							
								      getById(db, 'items', 'defaultWallpaperPhotoPointer'),
							 | 
						||
| 
								 | 
							
								      undefined
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(getById(db, 'items', 'otherItem'), {
							 | 
						||
| 
								 | 
							
								      id: 'otherItem',
							 | 
						||
| 
								 | 
							
								      value: {
							 | 
						||
| 
								 | 
							
								        id: 'otherItem',
							 | 
						||
| 
								 | 
							
								        value: 'otherItem-shouldBePreserved',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(getTableData(db, 'items'), [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        id: 'otherItem',
							 | 
						||
| 
								 | 
							
								        json: {
							 | 
						||
| 
								 | 
							
								          id: 'otherItem',
							 | 
						||
| 
								 | 
							
								          value: {
							 | 
						||
| 
								 | 
							
								            id: 'otherItem',
							 | 
						||
| 
								 | 
							
								            value: 'otherItem-shouldBePreserved',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    ]);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |