@@ -8,7 +8,12 @@ import * as TypeMoq from 'typemoq';
8
8
import { Memento } from 'vscode' ;
9
9
import { ICommandManager } from '../../client/common/application/types' ;
10
10
import { Commands } from '../../client/common/constants' ;
11
- import { PersistentStateFactory } from '../../client/common/persistentState' ;
11
+ import {
12
+ GLOBAL_PERSISTENT_KEYS_DEPRECATED ,
13
+ KeysStorage ,
14
+ PersistentStateFactory ,
15
+ WORKSPACE_PERSISTENT_KEYS_DEPRECATED ,
16
+ } from '../../client/common/persistentState' ;
12
17
import { IDisposable } from '../../client/common/types' ;
13
18
import { sleep } from '../core' ;
14
19
import { MockMemento } from '../mocks/mementos' ;
@@ -91,9 +96,9 @@ suite('Persistent State', () => {
91
96
test ( 'Ensure internal global storage extension uses to track other storages does not contain duplicate entries' , async ( ) => {
92
97
persistentStateFactory . createGlobalPersistentState ( 'key1' ) ;
93
98
await sleep ( 1 ) ;
94
- persistentStateFactory . createGlobalPersistentState ( 'key2' , 'defaultValue1' ) ;
99
+ persistentStateFactory . createGlobalPersistentState ( 'key2' , [ 'defaultValue1' ] ) ; // Default value type is an array
95
100
await sleep ( 1 ) ;
96
- persistentStateFactory . createGlobalPersistentState ( 'key2' , 'defaultValue1' ) ;
101
+ persistentStateFactory . createGlobalPersistentState ( 'key2' , [ 'defaultValue1' ] ) ;
97
102
await sleep ( 1 ) ;
98
103
persistentStateFactory . createGlobalPersistentState ( 'key1' ) ;
99
104
await sleep ( 1 ) ;
@@ -102,13 +107,13 @@ suite('Persistent State', () => {
102
107
value . sort ( ( k1 , k2 ) => k1 . key . localeCompare ( k2 . key ) ) ,
103
108
[
104
109
{ key : 'key1' , defaultValue : undefined } ,
105
- { key : 'key2' , defaultValue : 'defaultValue1' } ,
110
+ { key : 'key2' , defaultValue : [ 'defaultValue1' ] } ,
106
111
] . sort ( ( k1 , k2 ) => k1 . key . localeCompare ( k2 . key ) ) ,
107
112
) ;
108
113
} ) ;
109
114
110
115
test ( 'Ensure internal workspace storage extension uses to track other storages does not contain duplicate entries' , async ( ) => {
111
- persistentStateFactory . createWorkspacePersistentState ( 'key2' , 'defaultValue1' ) ;
116
+ persistentStateFactory . createWorkspacePersistentState ( 'key2' , 'defaultValue1' ) ; // Default value type is a string
112
117
await sleep ( 1 ) ;
113
118
persistentStateFactory . createWorkspacePersistentState ( 'key1' ) ;
114
119
await sleep ( 1 ) ;
@@ -125,4 +130,38 @@ suite('Persistent State', () => {
125
130
] . sort ( ( k1 , k2 ) => k1 . key . localeCompare ( k2 . key ) ) ,
126
131
) ;
127
132
} ) ;
133
+
134
+ test ( 'Ensure deprecated global storage extension used to track other storages with is reset' , async ( ) => {
135
+ const global = persistentStateFactory . createGlobalPersistentState < KeysStorage [ ] > (
136
+ GLOBAL_PERSISTENT_KEYS_DEPRECATED ,
137
+ ) ;
138
+ await global . updateValue ( [
139
+ { key : 'oldKey' , defaultValue : [ ] } ,
140
+ { key : 'oldKey2' , defaultValue : [ { } ] } ,
141
+ { key : 'oldKey3' , defaultValue : [ '1' , '2' , '3' ] } ,
142
+ ] ) ;
143
+ expect ( global . value . length ) . to . equal ( 3 ) ;
144
+
145
+ await persistentStateFactory . activate ( ) ;
146
+ await sleep ( 1 ) ;
147
+
148
+ expect ( global . value . length ) . to . equal ( 0 ) ;
149
+ } ) ;
150
+
151
+ test ( 'Ensure deprecated global storage extension used to track other storages with is reset' , async ( ) => {
152
+ const workspace = persistentStateFactory . createWorkspacePersistentState < KeysStorage [ ] > (
153
+ WORKSPACE_PERSISTENT_KEYS_DEPRECATED ,
154
+ ) ;
155
+ await workspace . updateValue ( [
156
+ { key : 'oldKey' , defaultValue : [ ] } ,
157
+ { key : 'oldKey2' , defaultValue : [ { } ] } ,
158
+ { key : 'oldKey3' , defaultValue : [ '1' , '2' , '3' ] } ,
159
+ ] ) ;
160
+ expect ( workspace . value . length ) . to . equal ( 3 ) ;
161
+
162
+ await persistentStateFactory . activate ( ) ;
163
+ await sleep ( 1 ) ;
164
+
165
+ expect ( workspace . value . length ) . to . equal ( 0 ) ;
166
+ } ) ;
128
167
} ) ;
0 commit comments