@@ -69,7 +69,7 @@ suite('ExtensionsMerge', () => {
69
69
aLocalSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
70
70
] ;
71
71
const skippedExtension = [
72
- anSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
72
+ aSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
73
73
] ;
74
74
const expected = [ ...localExtensions ] ;
75
75
@@ -88,7 +88,7 @@ suite('ExtensionsMerge', () => {
88
88
aLocalSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
89
89
] ;
90
90
const skippedExtension = [
91
- anSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
91
+ aSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
92
92
] ;
93
93
const expected = [ localExtensions [ 1 ] , localExtensions [ 2 ] ] ;
94
94
@@ -106,8 +106,8 @@ suite('ExtensionsMerge', () => {
106
106
aLocalSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
107
107
] ;
108
108
const remoteExtensions = [
109
- anSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
110
- anSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
109
+ aSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
110
+ aSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
111
111
] ;
112
112
const expected = [
113
113
anExpectedSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -133,8 +133,8 @@ suite('ExtensionsMerge', () => {
133
133
aLocalSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
134
134
] ;
135
135
const remoteExtensions = [
136
- anSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
137
- anSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
136
+ aSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
137
+ aSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
138
138
] ;
139
139
const expected = [
140
140
anExpectedSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -155,16 +155,16 @@ suite('ExtensionsMerge', () => {
155
155
156
156
test ( 'merge local and remote extensions when remote is moved forwarded' , ( ) => {
157
157
const baseExtensions = [
158
- anSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
159
- anSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
158
+ aSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
159
+ aSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
160
160
] ;
161
161
const localExtensions = [
162
162
aLocalSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
163
163
aLocalSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
164
164
] ;
165
165
const remoteExtensions = [
166
- anSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
167
- anSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
166
+ aSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
167
+ aSyncExtension ( { identifier : { id : 'c' , uuid : 'c' } } ) ,
168
168
] ;
169
169
170
170
const actual = merge ( localExtensions , remoteExtensions , baseExtensions , [ ] , [ ] , [ ] ) ;
@@ -238,7 +238,7 @@ suite('ExtensionsMerge', () => {
238
238
aLocalSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
239
239
] ;
240
240
const skippedExtensions = [
241
- anSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
241
+ aSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
242
242
] ;
243
243
const remoteExtensions = [
244
244
aRemoteSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -265,7 +265,7 @@ suite('ExtensionsMerge', () => {
265
265
aLocalSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
266
266
] ;
267
267
const skippedExtensions = [
268
- anSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
268
+ aSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
269
269
] ;
270
270
const remoteExtensions = [
271
271
aRemoteSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -364,7 +364,7 @@ suite('ExtensionsMerge', () => {
364
364
aRemoteSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
365
365
] ;
366
366
const skippedExtensions = [
367
- anSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
367
+ aSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
368
368
] ;
369
369
const localExtensions = [
370
370
aLocalSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -394,7 +394,7 @@ suite('ExtensionsMerge', () => {
394
394
aRemoteSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
395
395
] ;
396
396
const skippedExtensions = [
397
- anSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
397
+ aSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
398
398
] ;
399
399
const localExtensions = [
400
400
aLocalSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -481,7 +481,7 @@ suite('ExtensionsMerge', () => {
481
481
aRemoteSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
482
482
] ;
483
483
const skippedExtensions = [
484
- anSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
484
+ aSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
485
485
] ;
486
486
const localExtensions = [
487
487
aLocalSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -512,7 +512,7 @@ suite('ExtensionsMerge', () => {
512
512
aRemoteSyncExtension ( { identifier : { id : 'd' , uuid : 'd' } } ) ,
513
513
] ;
514
514
const skippedExtensions = [
515
- anSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
515
+ aSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
516
516
] ;
517
517
const localExtensions = [
518
518
aLocalSyncExtension ( { identifier : { id : 'b' , uuid : 'b' } } ) ,
@@ -1317,13 +1317,82 @@ suite('ExtensionsMerge', () => {
1317
1317
assert . deepStrictEqual ( actual . remote , null ) ;
1318
1318
} ) ;
1319
1319
1320
+ test ( 'sync adding local application scoped extension' , ( ) => {
1321
+ const localExtensions = [
1322
+ aLocalSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : true } ) ,
1323
+ ] ;
1324
+
1325
+ const actual = merge ( localExtensions , null , null , [ ] , [ ] , [ ] ) ;
1326
+
1327
+ assert . deepStrictEqual ( actual . local . added , [ ] ) ;
1328
+ assert . deepStrictEqual ( actual . local . removed , [ ] ) ;
1329
+ assert . deepStrictEqual ( actual . local . updated , [ ] ) ;
1330
+ assert . deepStrictEqual ( actual . remote ?. all , localExtensions ) ;
1331
+ } ) ;
1332
+
1333
+ test ( 'sync merging local extension with isApplicationScoped property and remote does not has isApplicationScoped property' , ( ) => {
1334
+ const localExtensions = [
1335
+ aLocalSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : false } ) ,
1336
+ ] ;
1337
+
1338
+ const baseExtensions = [
1339
+ aSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } } ) ,
1340
+ ] ;
1341
+
1342
+ const actual = merge ( localExtensions , baseExtensions , baseExtensions , [ ] , [ ] , [ ] ) ;
1343
+
1344
+ assert . deepStrictEqual ( actual . local . added , [ ] ) ;
1345
+ assert . deepStrictEqual ( actual . local . removed , [ ] ) ;
1346
+ assert . deepStrictEqual ( actual . local . updated , [ ] ) ;
1347
+ assert . deepStrictEqual ( actual . remote ?. all , localExtensions ) ;
1348
+ } ) ;
1349
+
1350
+ test ( 'sync merging when applicaiton scope is changed locally' , ( ) => {
1351
+ const localExtensions = [
1352
+ aLocalSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : true } ) ,
1353
+ ] ;
1354
+
1355
+ const baseExtensions = [
1356
+ aRemoteSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : false } ) ,
1357
+ ] ;
1358
+
1359
+ const actual = merge ( localExtensions , baseExtensions , baseExtensions , [ ] , [ ] , [ ] ) ;
1360
+
1361
+ assert . deepStrictEqual ( actual . local . added , [ ] ) ;
1362
+ assert . deepStrictEqual ( actual . local . removed , [ ] ) ;
1363
+ assert . deepStrictEqual ( actual . local . updated , [ ] ) ;
1364
+ assert . deepStrictEqual ( actual . remote ?. all , localExtensions ) ;
1365
+ } ) ;
1366
+
1367
+ test ( 'sync merging when applicaiton scope is changed remotely' , ( ) => {
1368
+ const localExtensions = [
1369
+ aLocalSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : false } ) ,
1370
+ ] ;
1371
+
1372
+ const baseExtensions = [
1373
+ aRemoteSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : false } ) ,
1374
+ ] ;
1375
+
1376
+ const remoteExtensions = [
1377
+ aRemoteSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : true } ) ,
1378
+ ] ;
1379
+
1380
+ const actual = merge ( localExtensions , remoteExtensions , baseExtensions , [ ] , [ ] , [ ] ) ;
1381
+
1382
+ assert . deepStrictEqual ( actual . local . added , [ ] ) ;
1383
+ assert . deepStrictEqual ( actual . local . removed , [ ] ) ;
1384
+ assert . deepStrictEqual ( actual . local . updated , [ anExpectedSyncExtension ( { identifier : { id : 'a' , uuid : 'a' } , isApplicationScoped : true } ) ] ) ;
1385
+ assert . deepStrictEqual ( actual . remote , null ) ;
1386
+ } ) ;
1387
+
1320
1388
function anExpectedSyncExtension ( extension : Partial < ISyncExtension > ) : ISyncExtension {
1321
1389
return {
1322
1390
identifier : { id : 'a' , uuid : 'a' } ,
1323
1391
version : '1.0.0' ,
1324
1392
pinned : false ,
1325
1393
preRelease : false ,
1326
1394
installed : true ,
1395
+ isApplicationScoped : false ,
1327
1396
...extension
1328
1397
} ;
1329
1398
}
@@ -1334,6 +1403,7 @@ suite('ExtensionsMerge', () => {
1334
1403
version : '1.0.0' ,
1335
1404
pinned : false ,
1336
1405
preRelease : false ,
1406
+ isApplicationScoped : false ,
1337
1407
...extension
1338
1408
} ;
1339
1409
}
@@ -1345,6 +1415,7 @@ suite('ExtensionsMerge', () => {
1345
1415
pinned : false ,
1346
1416
preRelease : false ,
1347
1417
installed : true ,
1418
+ isApplicationScoped : false ,
1348
1419
...extension
1349
1420
} ;
1350
1421
}
@@ -1356,11 +1427,12 @@ suite('ExtensionsMerge', () => {
1356
1427
pinned : false ,
1357
1428
preRelease : false ,
1358
1429
installed : true ,
1430
+ isApplicationScoped : false ,
1359
1431
...extension
1360
1432
} ;
1361
1433
}
1362
1434
1363
- function anSyncExtension ( extension : Partial < ISyncExtension > ) : ISyncExtension {
1435
+ function aSyncExtension ( extension : Partial < ISyncExtension > ) : ISyncExtension {
1364
1436
return {
1365
1437
identifier : { id : 'a' , uuid : 'a' } ,
1366
1438
version : '1.0.0' ,
0 commit comments