// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

import { assert } from 'chai';

import { type WritableDB } from '../../sql/Interface.std.ts';
import {
  createDB,
  updateToVersion,
  insertData,
  getTableData,
} from './helpers.node.ts';

const DEFAULTS = {
  id: 'id',
  type: 0,
  timestamp: 1,
  attempts: 2,
  receivedAtCounter: 3,
  urgent: 1,
  story: 1,
  serverGuid: 'guid',
  serverTimestamp: 1,
  isEncrypted: 0,
  content: Buffer.from('68656c6c6f', 'hex'),
  messageAgeSec: 1,
  destinationServiceId: 'dest',
};

describe('SQL/updateToSchemaVersion1290', () => {
  let db: WritableDB;

  afterEach(() => {
    db.close();
  });

  beforeEach(() => {
    db = createDB();
    updateToVersion(db, 1280);
  });

  it('transitions null sourceDevice', () => {
    insertData(db, 'unprocessed', [
      {
        ...DEFAULTS,

        sourceDevice: null,
      },
    ]);
    updateToVersion(db, 1290);

    assert.deepStrictEqual(getTableData(db, 'unprocessed'), [
      {
        ...DEFAULTS,

        content: '68656c6c6f',
      },
    ]);
  });

  it('transitions number sourceDevice', () => {
    insertData(db, 'unprocessed', [
      {
        ...DEFAULTS,

        sourceDevice: '123',
      },
    ]);
    updateToVersion(db, 1290);

    assert.deepStrictEqual(getTableData(db, 'unprocessed'), [
      {
        ...DEFAULTS,

        content: '68656c6c6f',
        sourceDevice: 123,
      },
    ]);
  });
});
