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

import * as sinon from 'sinon';
import { session } from 'electron';
import { v4 as uuid } from 'uuid';

import { updateDefaultSession } from '../../../app/updateDefaultSession.main.ts';

describe('updateDefaultSession', () => {
  let sandbox: sinon.SinonSandbox;

  beforeEach(() => {
    sandbox = sinon.createSandbox();
  });

  afterEach(() => {
    sandbox.restore();
  });

  it('sets the spellcheck URL', () => {
    const sesh = session.fromPartition(uuid());
    const stub = sandbox.stub(sesh, 'setSpellCheckerDictionaryDownloadURL');

    const logger = {
      fatal: sandbox.stub(),
      error: sandbox.stub(),
      warn: sandbox.stub(),
      info: sandbox.stub(),
      debug: sandbox.stub(),
      trace: sandbox.stub(),
      child: sandbox.stub(),
    };
    updateDefaultSession(sesh, logger);

    sinon.assert.calledOnce(stub);
    sinon.assert.calledWith(
      stub,
      `https://updates.signal.org/desktop/hunspell_dictionaries/${process.versions.electron}/`
    );
    sinon.assert.notCalled(logger.fatal);
    sinon.assert.notCalled(logger.error);
    sinon.assert.notCalled(logger.warn);
    sinon.assert.notCalled(logger.info);
    sinon.assert.notCalled(logger.debug);
    sinon.assert.notCalled(logger.trace);
    sinon.assert.notCalled(logger.child);
  });
});
