manager.spec.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { JupyterServer } from '@jupyterlab/testutils';
  4. import { ServerConnection, WorkspaceManager } from '../../src';
  5. import { init } from '../utils';
  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('workspace', () => {
  16. describe('WorkspaceManager', () => {
  17. let manager: WorkspaceManager;
  18. beforeAll(() => {
  19. manager = new WorkspaceManager({
  20. serverSettings: ServerConnection.makeSettings({ appUrl: 'lab' })
  21. });
  22. });
  23. describe('#constructor()', () => {
  24. it('should accept no options', () => {
  25. const manager = new WorkspaceManager();
  26. expect(manager).toBeInstanceOf(WorkspaceManager);
  27. });
  28. it('should accept options', () => {
  29. const manager = new WorkspaceManager({
  30. serverSettings: ServerConnection.makeSettings()
  31. });
  32. expect(manager).toBeInstanceOf(WorkspaceManager);
  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 WorkspaceManager({ serverSettings });
  40. expect(manager.serverSettings.baseUrl).toBe(baseUrl);
  41. });
  42. });
  43. describe('#fetch()', () => {
  44. it('should fetch a saved workspace', async () => {
  45. const id = 'foo';
  46. await manager.save(id, { data: {}, metadata: { id } });
  47. expect((await manager.fetch(id)).metadata.id).toBe(id);
  48. await manager.remove(id);
  49. });
  50. });
  51. describe('#list()', () => {
  52. it('should fetch a workspace list supporting arbitrary IDs', async () => {
  53. const ids = ['foo', 'bar', 'baz', 'f/o/o', 'b/a/r', 'b/a/z'];
  54. const promises = ids.map(id =>
  55. manager.save(id, { data: {}, metadata: { id } })
  56. );
  57. await Promise.all(promises);
  58. expect((await manager.list()).ids.sort()).toEqual(ids.sort());
  59. });
  60. });
  61. describe('#remove()', () => {
  62. it('should remove a workspace', async () => {
  63. const id = 'foo';
  64. await manager.save(id, { data: {}, metadata: { id } });
  65. expect((await manager.fetch(id)).metadata.id).toBe(id);
  66. await manager.remove(id);
  67. });
  68. });
  69. describe('#save()', () => {
  70. it('should save a workspace', async () => {
  71. const id = 'foo';
  72. await manager.save(id, { data: {}, metadata: { id } });
  73. expect((await manager.fetch(id)).metadata.id).toBe(id);
  74. await manager.remove(id);
  75. });
  76. });
  77. });
  78. });