// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.

import { init } from './utils';

init();

import { DebuggerConfig } from '../src/config';

describe('DebuggerConfig', () => {
  const kernel = 'python';
  let config: DebuggerConfig;

  beforeEach(() => {
    config = new DebuggerConfig();
  });

  describe('#getCodeId', () => {
    it('should compute a valid code id when the parameters are set', () => {
      const [prefix, suffix] = ['foo', 'bar'];
      config.setHashParams({ method: 'Murmur2', seed: 'bar', kernel });
      config.setTmpFileParams({ prefix, suffix, kernel });
      const codeId = config.getCodeId('i = 0', kernel);
      expect(codeId.startsWith(prefix)).toBe(true);
      expect(codeId.endsWith(suffix)).toBe(true);
    });

    it('should throw if the kernel does not have hash parameters', () => {
      config.setTmpFileParams({ prefix: 'foo', suffix: 'bar', kernel });
      expect(() => {
        config.getCodeId('i = 0', kernel);
      }).toThrow('has no hashing params');
    });

    it('should throw if the kernel does not have tmp file parameters', () => {
      config.setHashParams({ method: 'Murmur2', seed: 'bar', kernel });
      expect(() => {
        config.getCodeId('i = 0', kernel);
      }).toThrow('has no tmp file params');
    });
  });
});
