manager.spec.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright (c) Jupyter Development Team.
  2. import 'jest';
  3. import { ServerConnection, SettingManager } from '../../src';
  4. import { init } from '../utils';
  5. import { JupyterServer } from '@jupyterlab/testutils';
  6. // Initialize the fetch overrides.
  7. init();
  8. const server = new JupyterServer();
  9. beforeAll(async () => {
  10. await server.start();
  11. });
  12. afterAll(async () => {
  13. await server.shutdown();
  14. });
  15. describe('setting', () => {
  16. describe('SettingManager', () => {
  17. let manager: SettingManager;
  18. beforeAll(() => {
  19. manager = new SettingManager({
  20. serverSettings: ServerConnection.makeSettings({ appUrl: 'lab' })
  21. });
  22. });
  23. describe('#constructor()', () => {
  24. it('should accept no options', () => {
  25. const manager = new SettingManager();
  26. expect(manager).toBeInstanceOf(SettingManager);
  27. });
  28. it('should accept options', () => {
  29. const manager = new SettingManager({
  30. serverSettings: ServerConnection.makeSettings()
  31. });
  32. expect(manager).toBeInstanceOf(SettingManager);
  33. });
  34. });
  35. describe('#serverSettings', () => {
  36. it('should be the server settings', () => {
  37. const baseUrl = 'http://localhost/foo';
  38. const serverSettings = ServerConnection.makeSettings({ baseUrl });
  39. const manager = new SettingManager({ serverSettings });
  40. expect(manager.serverSettings.baseUrl).toBe(baseUrl);
  41. });
  42. });
  43. describe('#fetch()', () => {
  44. it('should fetch settings for an extension', async () => {
  45. const id = '@jupyterlab/apputils-extension:themes';
  46. expect((await manager.fetch(id)).id).toBe(id);
  47. });
  48. });
  49. describe('#save()', () => {
  50. it('should save a setting', async () => {
  51. const id = '@jupyterlab/apputils-extension:themes';
  52. const theme = 'Foo Theme';
  53. const raw = `{"theme": "${theme}"}`;
  54. await manager.save(id, raw);
  55. expect(JSON.parse((await manager.fetch(id)).raw).theme).toBe(theme);
  56. });
  57. });
  58. });
  59. });