storageService.test.ts 5.3 KB
Newer Older
E
Erich Gamma 已提交
1 2 3 4 5 6 7 8
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

'use strict';

import * as assert from 'assert';
9
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
J
Johannes Rieken 已提交
10
import { StorageScope } from 'vs/platform/storage/common/storage';
11
import { IWorkspaceContextService, LegacyWorkspace } from 'vs/platform/workspace/common/workspace';
12
import { StorageService, InMemoryLocalStorage } from 'vs/platform/storage/common/storageService';
13
import { TestContextService } from 'vs/workbench/test/workbenchTestServices';
14
import { TestWorkspace } from 'vs/platform/workspace/test/common/testWorkspace';
E
Erich Gamma 已提交
15

B
Benjamin Pasero 已提交
16
suite('Workbench StorageSevice', () => {
E
Erich Gamma 已提交
17

18 19 20 21
	let contextService, instantiationService;

	setup(() => {
		instantiationService = new TestInstantiationService();
22
		contextService = instantiationService.stub(IWorkspaceContextService, new TestContextService());
23 24
	});

B
Benjamin Pasero 已提交
25
	test('Swap Data with undefined default value', () => {
26
		let s = new StorageService(new InMemoryLocalStorage(), null, contextService.getWorkspace());
E
Erich Gamma 已提交
27

B
Benjamin Pasero 已提交
28 29 30 31 32 33
		s.swap('Monaco.IDE.Core.Storage.Test.swap', 'foobar', 'barfoo');
		assert.strictEqual('foobar', s.get('Monaco.IDE.Core.Storage.Test.swap'));
		s.swap('Monaco.IDE.Core.Storage.Test.swap', 'foobar', 'barfoo');
		assert.strictEqual('barfoo', s.get('Monaco.IDE.Core.Storage.Test.swap'));
		s.swap('Monaco.IDE.Core.Storage.Test.swap', 'foobar', 'barfoo');
		assert.strictEqual('foobar', s.get('Monaco.IDE.Core.Storage.Test.swap'));
E
Erich Gamma 已提交
34 35
	});

B
Benjamin Pasero 已提交
36
	test('Remove Data', () => {
37
		let s = new StorageService(new InMemoryLocalStorage(), null, contextService.getWorkspace());
B
Benjamin Pasero 已提交
38
		s.store('Monaco.IDE.Core.Storage.Test.remove', 'foobar');
39
		assert.strictEqual('foobar', s.get('Monaco.IDE.Core.Storage.Test.remove'));
E
Erich Gamma 已提交
40

B
Benjamin Pasero 已提交
41
		s.remove('Monaco.IDE.Core.Storage.Test.remove');
42
		assert.ok(!s.get('Monaco.IDE.Core.Storage.Test.remove'));
E
Erich Gamma 已提交
43 44
	});

B
Benjamin Pasero 已提交
45
	test('Get Data, Integer, Boolean', () => {
46
		let s = new StorageService(new InMemoryLocalStorage(), null, contextService.getWorkspace());
E
Erich Gamma 已提交
47

B
Benjamin Pasero 已提交
48 49 50 51 52 53
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.get', StorageScope.GLOBAL, 'foobar'), 'foobar');
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.get', StorageScope.GLOBAL, ''), '');
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.getInteger', StorageScope.GLOBAL, 5), 5);
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.getInteger', StorageScope.GLOBAL, 0), 0);
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.getBoolean', StorageScope.GLOBAL, true), true);
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.getBoolean', StorageScope.GLOBAL, false), false);
E
Erich Gamma 已提交
54

B
Benjamin Pasero 已提交
55 56
		s.store('Monaco.IDE.Core.Storage.Test.get', 'foobar');
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.get'), 'foobar');
E
Erich Gamma 已提交
57

B
Benjamin Pasero 已提交
58 59
		s.store('Monaco.IDE.Core.Storage.Test.get', '');
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.get'), '');
E
Erich Gamma 已提交
60

B
Benjamin Pasero 已提交
61 62
		s.store('Monaco.IDE.Core.Storage.Test.getInteger', 5);
		assert.strictEqual(s.getInteger('Monaco.IDE.Core.Storage.Test.getInteger'), 5);
E
Erich Gamma 已提交
63

B
Benjamin Pasero 已提交
64 65
		s.store('Monaco.IDE.Core.Storage.Test.getInteger', 0);
		assert.strictEqual(s.getInteger('Monaco.IDE.Core.Storage.Test.getInteger'), 0);
E
Erich Gamma 已提交
66

B
Benjamin Pasero 已提交
67 68
		s.store('Monaco.IDE.Core.Storage.Test.getBoolean', true);
		assert.strictEqual(s.getBoolean('Monaco.IDE.Core.Storage.Test.getBoolean'), true);
E
Erich Gamma 已提交
69

B
Benjamin Pasero 已提交
70 71
		s.store('Monaco.IDE.Core.Storage.Test.getBoolean', false);
		assert.strictEqual(s.getBoolean('Monaco.IDE.Core.Storage.Test.getBoolean'), false);
E
Erich Gamma 已提交
72

B
Benjamin Pasero 已提交
73 74 75
		assert.strictEqual(s.get('Monaco.IDE.Core.Storage.Test.getDefault', StorageScope.GLOBAL, 'getDefault'), 'getDefault');
		assert.strictEqual(s.getInteger('Monaco.IDE.Core.Storage.Test.getIntegerDefault', StorageScope.GLOBAL, 5), 5);
		assert.strictEqual(s.getBoolean('Monaco.IDE.Core.Storage.Test.getBooleanDefault', StorageScope.GLOBAL, true), true);
E
Erich Gamma 已提交
76 77
	});

B
Benjamin Pasero 已提交
78
	test('StorageSevice cleans up when workspace changes', () => {
E
Erich Gamma 已提交
79
		let storageImpl = new InMemoryLocalStorage();
80 81 82
		let ws = contextService.getWorkspace();
		ws.uid = new Date().getTime();
		let s = new StorageService(storageImpl, null, ws);
E
Erich Gamma 已提交
83

B
Benjamin Pasero 已提交
84 85 86 87
		s.store('key1', 'foobar');
		s.store('key2', 'something');
		s.store('wkey1', 'foo', StorageScope.WORKSPACE);
		s.store('wkey2', 'foo2', StorageScope.WORKSPACE);
E
Erich Gamma 已提交
88

89
		s = new StorageService(storageImpl, null, contextService.getWorkspace());
E
Erich Gamma 已提交
90

B
Benjamin Pasero 已提交
91 92
		assert.strictEqual(s.get('key1', StorageScope.GLOBAL), 'foobar');
		assert.strictEqual(s.get('key1', StorageScope.WORKSPACE, null), null);
E
Erich Gamma 已提交
93

B
Benjamin Pasero 已提交
94 95 96
		assert.strictEqual(s.get('key2', StorageScope.GLOBAL), 'something');
		assert.strictEqual(s.get('wkey1', StorageScope.WORKSPACE), 'foo');
		assert.strictEqual(s.get('wkey2', StorageScope.WORKSPACE), 'foo2');
E
Erich Gamma 已提交
97

98
		ws = new LegacyWorkspace(TestWorkspace.resource, Date.now());
99
		ws.uid = new Date().getTime() + 100;
100
		s = new StorageService(storageImpl, null, ws);
E
Erich Gamma 已提交
101

B
Benjamin Pasero 已提交
102 103
		assert.strictEqual(s.get('key1', StorageScope.GLOBAL), 'foobar');
		assert.strictEqual(s.get('key1', StorageScope.WORKSPACE, null), null);
E
Erich Gamma 已提交
104

B
Benjamin Pasero 已提交
105 106 107
		assert.strictEqual(s.get('key2', StorageScope.GLOBAL), 'something');
		assert(!s.get('wkey1', StorageScope.WORKSPACE));
		assert(!s.get('wkey2', StorageScope.WORKSPACE));
E
Erich Gamma 已提交
108 109
	});
});